LLVM API Documentation

SparcGenAsmWriter.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 SparcAsmPrinter::printInstruction(const MachineInstr *MI) {
00014   static const unsigned OpInfo[] = {
00015     0U, // PHI
00016     0U, // INLINEASM
00017     268435465U, // ADDCCri
00018     268435465U, // ADDCCrr
00019     268435472U, // ADDXri
00020     268435472U, // ADDXrr
00021     268435478U, // ADDri
00022     268435478U, // ADDrr
00023     570425371U, // ADJCALLSTACKDOWN
00024     570425390U, // ADJCALLSTACKUP
00025     268435519U, // ANDNri
00026     268435519U, // ANDNrr
00027     268435525U, // ANDri
00028     268435525U, // ANDrr
00029     570425418U, // BA
00030     805306446U, // BCOND
00031     570425424U, // CALL
00032     335544406U, // FABSD
00033     335544413U, // FABSS
00034     268435556U, // FADDD
00035     268435563U, // FADDS
00036     805306482U, // FBCOND
00037     637534325U, // FCMPD
00038     637534332U, // FCMPS
00039     268435587U, // FDIVD
00040     268435594U, // FDIVS
00041     335544465U, // FDTOI
00042     335544472U, // FDTOS
00043     335544479U, // FITOD
00044     335544486U, // FITOS
00045     335544493U, // FMOVD
00046     1207959732U,  // FMOVD_FCC
00047     1241514164U,  // FMOVD_ICC
00048     335544506U, // FMOVS
00049     1207959745U,  // FMOVS_FCC
00050     1241514177U,  // FMOVS_ICC
00051     268435655U, // FMULD
00052     268435662U, // FMULS
00053     335544533U, // FNEGD
00054     335544540U, // FNEGS
00055     268435683U, // FSMULD
00056     335544555U, // FSQRTD
00057     335544563U, // FSQRTS
00058     335544571U, // FSTOD
00059     335544578U, // FSTOI
00060     268435721U, // FSUBD
00061     268435728U, // FSUBS
00062     335544599U, // FpABSD
00063     335544608U, // FpMOVD
00064     335544617U, // FpNEGD
00065     570425650U, // IMPLICIT_DEF_DFP
00066     570425650U, // IMPLICIT_DEF_FP
00067     570425650U, // IMPLICIT_DEF_Int
00068     1342177360U,  // JMPLri
00069     1342177360U,  // JMPLrr
00070     1610613057U,  // LDDFri
00071     1610613057U,  // LDDFrr
00072     1610613063U,  // LDFri
00073     1610613063U,  // LDFrr
00074     1610613068U,  // LDSBri
00075     1610613068U,  // LDSBrr
00076     1610613075U,  // LDSHri
00077     1610613075U,  // LDSHrr
00078     1610613082U,  // LDUBri
00079     1610613082U,  // LDUBrr
00080     1610613089U,  // LDUHri
00081     1610613089U,  // LDUHrr
00082     1610613063U,  // LDri
00083     1610613063U,  // LDrr
00084     1879048214U,  // LEA_ADDri
00085     1207959912U,  // MOVFCCri
00086     1207959912U,  // MOVFCCrr
00087     1241514344U,  // MOVICCri
00088     1241514344U,  // MOVICCrr
00089     364U, // NOP
00090     268435825U, // ORNri
00091     268435825U, // ORNrr
00092     268435830U, // ORri
00093     268435830U, // ORrr
00094     335544698U, // POPCrr
00095     570425728U, // RDY
00096     268435848U, // RESTOREri
00097     268435848U, // RESTORErr
00098     401U, // RETL
00099     268435863U, // SAVEri
00100     268435863U, // SAVErr
00101     268435869U, // SDIVri
00102     268435869U, // SDIVrr
00103     419U, // SELECT_CC_DFP_FCC
00104     448U, // SELECT_CC_DFP_ICC
00105     477U, // SELECT_CC_FP_FCC
00106     505U, // SELECT_CC_FP_ICC
00107     533U, // SELECT_CC_Int_FCC
00108     562U, // SELECT_CC_Int_ICC
00109     335544911U, // SETHIi
00110     268436054U, // SLLri
00111     268436054U, // SLLrr
00112     268436059U, // SMULri
00113     268436059U, // SMULrr
00114     268436065U, // SRAri
00115     268436065U, // SRArr
00116     268436070U, // SRLri
00117     268436070U, // SRLrr
00118     2147484267U,  // STBri
00119     2147484267U,  // STBrr
00120     2147484272U,  // STDFri
00121     2147484277U,  // STDFrr
00122     2147484283U,  // STFri
00123     2147484283U,  // STFrr
00124     2147484287U,  // STHri
00125     2147484287U,  // STHrr
00126     2147484283U,  // STri
00127     2147484283U,  // STrr
00128     268436100U, // SUBCCri
00129     268436100U, // SUBCCrr
00130     268436107U, // SUBXCCrr
00131     268436115U, // SUBXri
00132     268436115U, // SUBXrr
00133     268436121U, // SUBri
00134     268436121U, // SUBrr
00135     268436126U, // UDIVri
00136     268436126U, // UDIVrr
00137     268436132U, // UMULri
00138     268436132U, // UMULrr
00139     654312106U, // WRYri
00140     654312106U, // WRYrr
00141     268436142U, // XNORri
00142     268436142U, // XNORrr
00143     268436148U, // XORri
00144     268436148U, // XORrr
00145     0U
00146   };
00147 
00148   const char *AsmStrs = 
00149     "PHINODE\n\000addcc \000addx \000add \000!ADJCALLSTACKDOWN \000!ADJCALLS"
00150     "TACKUP \000andn \000and \000ba \000b\000call \000fabsd \000fabss \000fa"
00151     "ddd \000fadds \000fb\000fcmpd \000fcmps \000fdivd \000fdivs \000fdtoi \000"
00152     "fdtos \000fitod \000fitos \000fmovd \000fmovd\000fmovs \000fmovs\000fmu"
00153     "ld \000fmuls \000fnegd \000fnegs \000fsmuld \000fsqrtd \000fsqrts \000f"
00154     "stod \000fstoi \000fsubd \000fsubs \000!FpABSD \000!FpMOVD \000!FpNEGD "
00155     "\000!IMPLICIT_DEF \000ldd [\000ld [\000ldsb [\000ldsh [\000ldub [\000ld"
00156     "uh [\000mov\000nop\n\000orn \000or \000popc \000rd %y, \000restore \000"
00157     "retl\n\000save \000sdiv \000; SELECT_CC_DFP_FCC PSEUDO!\n\000; SELECT_C"
00158     "C_DFP_ICC PSEUDO!\n\000; SELECT_CC_FP_FCC PSEUDO!\n\000; SELECT_CC_FP_I"
00159     "CC PSEUDO!\n\000; SELECT_CC_Int_FCC PSEUDO!\n\000; SELECT_CC_Int_ICC PS"
00160     "EUDO!\n\000sethi \000sll \000smul \000sra \000srl \000stb \000std \000s"
00161     "td  \000st \000sth \000subcc \000subxcc \000subx \000sub \000udiv \000u"
00162     "mul \000wr \000xnor \000xor \000";
00163 
00164   if (MI->getOpcode() == TargetInstrInfo::INLINEASM) {
00165     printInlineAsm(MI);
00166     return true;
00167   }
00168 
00169   // Emit the opcode for the instruction.
00170   unsigned Bits = OpInfo[MI->getOpcode()];
00171   if (Bits == 0) return false;
00172   O << AsmStrs+(Bits & 1023);
00173 
00174 
00175   // Fragment 0 encoded into 4 bits for 9 unique commands.
00176   switch ((Bits >> 28) & 15) {
00177   default:   // unreachable.
00178   case 0:
00179     return true;
00180     break;
00181   case 1:
00182     // ADDCCri, ADDCCrr, ADDXri, ADDXrr, ADDri, ADDrr, ANDNri, ANDNrr, ANDri,...
00183     printOperand(MI, 1); 
00184     O << ", "; 
00185     break;
00186   case 2:
00187     // ADJCALLSTACKDOWN, ADJCALLSTACKUP, BA, CALL, FCMPD, FCMPS, IMPLICIT_DEF...
00188     printOperand(MI, 0); 
00189     break;
00190   case 3:
00191     // BCOND, FBCOND
00192     printCCOperand(MI, 1); 
00193     O << " "; 
00194     printOperand(MI, 0); 
00195     O << "\n"; 
00196     return true;
00197     break;
00198   case 4:
00199     // FMOVD_FCC, FMOVD_ICC, FMOVS_FCC, FMOVS_ICC, MOVFCCri, MOVFCCrr, MOVICC...
00200     printCCOperand(MI, 2); 
00201     break;
00202   case 5:
00203     // JMPLri, JMPLrr
00204     printMemOperand(MI, 0); 
00205     O << "\n"; 
00206     return true;
00207     break;
00208   case 6:
00209     // LDDFri, LDDFrr, LDFri, LDFrr, LDSBri, LDSBrr, LDSHri, LDSHrr, LDUBri, ...
00210     printMemOperand(MI, 1); 
00211     O << "], "; 
00212     printOperand(MI, 0); 
00213     O << "\n"; 
00214     return true;
00215     break;
00216   case 7:
00217     // LEA_ADDri
00218     printMemOperand(MI, 1, "arith"); 
00219     O << ", "; 
00220     printOperand(MI, 0); 
00221     O << "\n"; 
00222     return true;
00223     break;
00224   case 8:
00225     // STBri, STBrr, STDFri, STDFrr, STFri, STFrr, STHri, STHrr, STri, STrr
00226     printOperand(MI, 2); 
00227     O << ", ["; 
00228     printMemOperand(MI, 0); 
00229     O << "]\n"; 
00230     return true;
00231     break;
00232   }
00233 
00234 
00235   // Fragment 1 encoded into 3 bits for 6 unique commands.
00236   switch ((Bits >> 25) & 7) {
00237   default:   // unreachable.
00238   case 0:
00239     // ADDCCri, ADDCCrr, ADDXri, ADDXrr, ADDri, ADDrr, ANDNri, ANDNrr, ANDri,...
00240     printOperand(MI, 2); 
00241     O << ", "; 
00242     printOperand(MI, 0); 
00243     O << "\n"; 
00244     return true;
00245     break;
00246   case 1:
00247     // ADJCALLSTACKDOWN, ADJCALLSTACKUP, BA, CALL, IMPLICIT_DEF_DFP, IMPLICIT...
00248     O << "\n"; 
00249     return true;
00250     break;
00251   case 2:
00252     // FABSD, FABSS, FDTOI, FDTOS, FITOD, FITOS, FMOVD, FMOVS, FNEGD, FNEGS, ...
00253     printOperand(MI, 0); 
00254     O << "\n"; 
00255     return true;
00256     break;
00257   case 3:
00258     // FCMPD, FCMPS, WRYri, WRYrr
00259     O << ", "; 
00260     printOperand(MI, 1); 
00261     break;
00262   case 4:
00263     // FMOVD_FCC, FMOVS_FCC, MOVFCCri, MOVFCCrr
00264     O << " %fcc0, "; 
00265     printOperand(MI, 1); 
00266     O << ", "; 
00267     printOperand(MI, 0); 
00268     O << "\n"; 
00269     return true;
00270     break;
00271   case 5:
00272     // FMOVD_ICC, FMOVS_ICC, MOVICCri, MOVICCrr
00273     O << " %icc, "; 
00274     printOperand(MI, 1); 
00275     O << ", "; 
00276     printOperand(MI, 0); 
00277     O << "\n"; 
00278     return true;
00279     break;
00280   }
00281 
00282 
00283   // Fragment 2 encoded into 1 bits for 2 unique commands.
00284   if ((Bits >> 24) & 1) {
00285     // WRYri, WRYrr
00286     O << ", %y\n"; 
00287     return true;
00288   } else {
00289     // FCMPD, FCMPS
00290     O << "\n\tnop\n"; 
00291     return true;
00292   }
00293 
00294 }