llvm-6502/utils
Chris Lattner 870c016934 Implement factoring of instruction pattern strings. In particular, instead of
emitting code like this:

  case PPC::ADD: O  << "add ";  printOperand(MI, 0, MVT::i64); O  << ", ";  prin
tOperand(MI, 1, MVT::i64); O  << ", ";  printOperand(MI, 2, MVT::i64); O  << '\n
'; break;
  case PPC::ADDC: O  << "addc ";  printOperand(MI, 0, MVT::i64); O  << ", ";  pr
intOperand(MI, 1, MVT::i64); O  << ", ";  printOperand(MI, 2, MVT::i64); O  << '
\n'; break;
  case PPC::ADDE: O  << "adde ";  printOperand(MI, 0, MVT::i64); O  << ", ";  pr
intOperand(MI, 1, MVT::i64); O  << ", ";  printOperand(MI, 2, MVT::i64); O  << '
\n'; break;
...

Emit code like this:

  case PPC::ADD:
  case PPC::ADDC:
  case PPC::ADDE:
  ...
    switch (MI->getOpcode()) {
    case PPC::ADD: O << "add "; break;
    case PPC::ADDC: O << "addc "; break;
    case PPC::ADDE: O << "adde "; break;
    ...
    }
    printOperand(MI, 0, MVT::i64);
    O << ", ";
    printOperand(MI, 1, MVT::i64);
    O << ", ";
    printOperand(MI, 2, MVT::i64);
    O << "\n";
    break;

This shrinks the PPC asm writer from 24785->15205 bytes (even though the new
asmwriter has much more whitespace than the old one), and the X86 printers shrink
quite a bit too.  The important implication of this is that GCC no longer hits swap
when building the PPC backend in optimized mode.  Thus this fixes PR448.

-Chris


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19755 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 18:38:13 +00:00
..
Burg Portability fix, thanks to Markus F.X.J. Oberhumer. 2004-12-16 04:56:34 +00:00
emacs Add support for undef and unreachable 2004-10-16 18:24:35 +00:00
fpcmp For PR351: 2004-12-13 17:41:13 +00:00
TableGen Implement factoring of instruction pattern strings. In particular, instead of 2005-01-22 18:38:13 +00:00
vim Test commit 2004-12-09 05:46:48 +00:00
check-each-file Added support for C++ compilation. 2004-02-26 23:02:25 +00:00
codegen-diff Add debug variable. 2003-10-16 23:46:01 +00:00
countloc.sh Documentation upgrade. 2004-09-20 08:09:36 +00:00
cvsupdate Fix patterns to match only one-char words. 2004-10-30 23:11:26 +00:00
GenLibDeps.pl 1. Make sure that "dot" can be found in the path 2005-01-05 17:29:29 +00:00
getsrcs.sh Documentation upgrade. 2004-09-20 08:09:36 +00:00
llvm-native-gcc Added EH support. 2004-03-02 15:54:25 +00:00
llvm-native-gxx C++ version of llvm-native-gcc. 2004-02-26 23:01:21 +00:00
llvmdo Remove unused variable. 2004-10-08 18:01:31 +00:00
llvmgrep Make these scripts work on SunOS too. 2004-10-07 16:03:21 +00:00
Makefile New Makefile Features: 2004-10-25 08:27:37 +00:00
makellvm Really use a search path as described in the log message for the last 2003-09-15 11:18:36 +00:00
NightlyTest.gnuplot Change formats, as suggested by Duraid 2004-11-23 06:51:14 +00:00
NightlyTest.pl Update the documentation about -enable-llcbeta vs. -enable-linscan 2005-01-13 18:02:40 +00:00
NightlyTestTemplate.html Use and print out BuildStatus, we don't always have build errors. 2005-01-12 03:31:38 +00:00
profile.pl Fix the path from ../lib/Debug to ../Debug/lib per changes to Makefiles. 2005-01-14 16:32:39 +00:00
RegressionFinder.pl Squash /usr/dcs path; use a 'require <version>' instead. 2004-03-03 17:38:51 +00:00