Daniel Dunbar
d0470d74df
llvm-mc/AsmMatcher: Move emit for register -> enum matcher into a separate routine.
...
llvm-svn: 78408
2009-08-07 21:01:44 +00:00
Daniel Dunbar
15b8037034
llvm-mc/AsmMatcher: Tweaks in response to feedback.
...
llvm-svn: 78404
2009-08-07 20:33:39 +00:00
Daniel Dunbar
e10787e710
llvm-mc/AsmMatcher: Move to a slightly more sane matching design.
...
- Still not very sane, but a least its not 60k lines on X86. :)
- In terms of correctness, currently some things are hard wired for X86, and we
still don't properly resolve ambiguities (this is ignoring the instructions
we don't even match due to funny .td stuff or other corner cases).
The high level changes:
1. Represent tokens which are significant for matching explicitly as separate
operands. This uniformly handles not only the instruction mnemonic, but
also 'signficiant' syntax like the '*' in "call * ...".
2. Separate the matching of operands to an instruction from the construction of
the MCInst. In theory this can be done during matching, but since the number
of variations is small I think it makes sense to decompose the problems.
3. Improved a few of the mechanisms to at least successfully flatten / tokenize
the assembly strings for PowerPC and ARM.
4. The comment at the top of AsmMatcherEmitter.cpp explains the approach I'm
moving towards for handling ambiguous instructions. The high-bit is to infer
a partial ordering of the operand classes (and force the user to specify one
if we can't) and use that to resolve ambiguities.
llvm-svn: 78378
2009-08-07 08:26:05 +00:00
Owen Anderson
03cb69fbd1
Privatize the StructType table, which unfortunately involves routing contexts through a number of APIs.
...
llvm-svn: 78258
2009-08-05 23:16:16 +00:00
Daniel Dunbar
1efb6b0391
Suppress compiler warning.
...
llvm-svn: 78246
2009-08-05 21:42:40 +00:00
David Greene
fdd2519eb5
Fix some column padding bugs, reorganize things as suggested by Chris
...
and eliminate complexity. Yay!
llvm-svn: 78243
2009-08-05 21:00:52 +00:00
Daniel Dunbar
f30f4a5887
TableGen / AsmMatcher: Tweaks to avoid generating completely bogus match
...
functions.
- Fix variant flattening when the variant embeds an operand reference.
- Ignore instructions which reference an operand multiple times (e.g., "xorb
$dst, $dst"), and operands which have extra flags (e.g., "$dst:subreg32").
llvm-svn: 78099
2009-08-04 20:36:45 +00:00
Anton Korobeynikov
442beabbf7
Add 'Indirect' LocInfo class and use to pass __m128 on win64. Also minore fixes here and there (mostly __m64).
...
llvm-svn: 77964
2009-08-03 08:13:56 +00:00
Daniel Dunbar
b2aebed2dc
Change MCOperand to use Create style instead of Make style for constructing
...
operands.
llvm-svn: 77837
2009-08-02 00:09:22 +00:00
David Greene
81bcae5fda
Simplify operand padding by keying off tabs in the asm stream. If
...
padding is disabled, tabs get replaced by spaces except in the case of
the first operand, where the tab is output to line up the operands after
the mnemonics.
Add some better comments and eliminate redundant code.
Fix some testcases to not assume tabs.
llvm-svn: 77740
2009-07-31 21:57:10 +00:00
Daniel Dunbar
b6d6aa2d22
llvm-mc: Match a few X86 instructions.
...
- This is "experimental" code, I am feeling my way around and working out the
best way to do things (and learning tblgen in the process). Comments welcome,
but keep in mind this stuff will change radically.
- This is enough to match "subb" and friends, but not much else. The next step is to
automatically generate the matchers for individual operands.
llvm-svn: 77657
2009-07-31 02:32:59 +00:00
Daniel Dunbar
da6efdcd22
Remove unintended changes.
...
llvm-svn: 77616
2009-07-30 18:29:44 +00:00
Daniel Dunbar
4d6aa73d6b
Remove itohexstr, which only had one user.
...
llvm-svn: 77613
2009-07-30 18:18:54 +00:00
Daniel Dunbar
132f78395a
Twines: Don't allow implicit conversion from integers, this is too tricky.
...
llvm-svn: 77605
2009-07-30 17:37:43 +00:00
Dan Gohman
27f1a4fe2d
Minor whitespace tidiness.
...
llvm-svn: 77564
2009-07-30 01:33:17 +00:00
Owen Anderson
4056ca9568
Move types back to the 2.5 API.
...
llvm-svn: 77516
2009-07-29 22:17:13 +00:00
Chris Lattner
f3239532cc
1. Introduce a new TargetOperandInfo::getRegClass() helper method
...
and convert code to using it, instead of having lots of things
poke the isLookupPtrRegClass() method directly.
2. Make PointerLikeRegClass contain a 'kind' int, and store it in
the existing regclass field of TargetOperandInfo when the
isLookupPtrRegClass() predicate is set. Make getRegClass pass
this into TargetRegisterInfo::getPointerRegClass(), allowing
targets to have multiple ptr_rc things.
llvm-svn: 77504
2009-07-29 21:10:12 +00:00
Chris Lattner
426bc7c0ae
make ptr_rc derive from a new PointerLikeRegClass tblgen class.
...
llvm-svn: 77503
2009-07-29 20:43:05 +00:00
David Greene
5b4bc260cd
Re-enable comment and operand padding.
...
Compile times pre-change:
========================
Program | GCCAS Bytecode LLC compile LLC-BETA compile JIT codegen | GCC CBE LLC LLC-BETA JIT | GCC/CBE GCC/LLC GCC/LLC-BETA LLC/LLC-BETA
MultiSource/Applications/Burg/burg | 0.4600 109848 0.8920 * 0.8760 | 0.00 0.00 0.00 * 0.91 | - - n/a n/a
MultiSource/Applications/ClamAV/clamscan | 5.1563 1318528 6.8244 * 3.9042 | 0.20 0.20 0.21 * 4.32 | 1.00 0.95 n/a n/a
MultiSource/Applications/JM/ldecod/ldecod | 3.3082 661960 2.5961 * 2.0801 | 0.08 0.07 0.06 * 2.30 | - - n/a n/a
MultiSource/Applications/JM/lencod/lencod | 6.2883 1442696 6.5964 * 5.6723 | 8.51 8.65 8.37 * 14.76 | 0.98 1.02 n/a n/a
MultiSource/Applications/SIBsim4/SIBsim4 | 0.4040 84528 0.4480 * 0.4440 | 4.33 * 4.76 * 5.43 | n/a 0.91 n/a n/a
MultiSource/Applications/SPASS/SPASS | 6.3684 1594748 5.5563 * 4.0522 | 12.59 12.45 12.23 * 17.21 | 1.01 1.03 n/a n/a
MultiSource/Applications/aha/aha | 0.0280 7104 0.0360 * 0.0280 | 2.23 2.86 2.98 * 3.09 | 0.78 0.75 n/a n/a
MultiSource/Applications/d/make_dparser | 1.1040 299996 0.9440 * 0.8080 | 0.04 * 0.03 * 0.92 | n/a - n/a n/a
MultiSource/Applications/hbd/hbd | 0.2280 82120 0.3880 * 0.3440 | 0.00 0.00 0.00 * 0.36 | - - n/a n/a
MultiSource/Applications/hexxagon/hexxagon | 0.2040 49820 0.2160 * 0.1880 | 12.00 8.97 9.93 * 9.68 | 1.34 1.21 n/a n/a
MultiSource/Applications/kimwitu++/kc | 5.3843 1725192 * * * | 0.00 * * * * | n/a n/a n/a n/a
MultiSource/Applications/lambda-0.1.3/lambda | 0.2000 67120 0.3080 * 0.2440 | 6.12 5.55 5.76 * 6.85 | 1.10 1.06 n/a n/a
MultiSource/Applications/lemon/lemon | 0.3240 104052 0.5440 * 0.0040 | 0.08 0.05 0.06 * 113.63 | - - n/a n/a
MultiSource/Applications/lua/lua | 1.5400 557040 2.2561 * 1.7001 | 28.56 * 31.36 * 33.29 | n/a 0.91 n/a n/a
MultiSource/Applications/minisat/minisat | 0.2440 45840 0.2040 * * | 12.85 * 12.41 * * | n/a 1.04 n/a n/a
MultiSource/Applications/obsequi/Obsequi | 0.3480 59808 0.2800 * 0.2840 | 2.68 * 2.80 * 3.23 | n/a 0.96 n/a n/a
MultiSource/Applications/oggenc/oggenc | 1.5480 803888 1.1800 * 0.9600 | 0.17 * 0.17 * 1.26 | n/a 1.00 n/a n/a
MultiSource/Applications/sgefa/sgefa | 0.0880 16476 0.0840 * 0.0760 | 0.78 0.83 0.85 * 0.97 | 0.94 0.92 n/a n/a
MultiSource/Applications/siod/siod | 0.7120 344048 1.8761 * 0.8120 | 3.62 3.88 3.69 * 4.76 | 0.93 0.98 n/a n/a
MultiSource/Applications/spiff/spiff | 0.1600 50964 0.2440 * * | 1.08 1.10 1.14 * * | 0.98 0.95 n/a n/a
MultiSource/Applications/sqlite3/sqlite3 | 3.9362 1133884 5.1683 * 3.7162 | 4.55 * 5.32 * 9.68 | n/a 0.86 n/a n/a
MultiSource/Applications/treecc/treecc | 0.6800 292592 1.2160 * 0.3200 | 0.00 0.00 0.00 * 0.36 | - - n/a n/a
MultiSource/Applications/viterbi/viterbi | 0.0280 5576 0.0240 * 0.0200 | 12.25 18.43 12.26 * 12.35 | 0.66 1.00 n/a n/a
MultiSource/Benchmarks/ASCI_Purple/SMG2000/smg2000 | 3.1561 463676 2.5721 * 1.9081 | 7.60 8.29 9.01 * 9.90 | 0.92 0.84 n/a n/a
MultiSource/Benchmarks/ASC_Sequoia/AMGmk/AMGmk | 0.1040 13992 0.0680 * 0.0720 | 31.04 23.70 21.64 * 22.44 | 1.31 1.43 n/a n/a
MultiSource/Benchmarks/ASC_Sequoia/CrystalMk/CrystalMk | 0.0400 8248 0.0280 * 0.0280 | 12.10 12.64 11.93 * 12.18 | 0.96 1.01 n/a n/a
MultiSource/Benchmarks/ASC_Sequoia/IRSmk/IRSmk | 0.0200 5592 0.0240 * 0.0240 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/BitBench/drop3/drop3 | 0.0200 3588 0.0160 * 0.0120 | 0.51 0.71 0.47 * 0.50 | 0.72 1.09 n/a n/a
MultiSource/Benchmarks/BitBench/five11/five11 | 0.0160 2724 0.0120 * 0.0120 | 2.48 2.51 2.42 * 2.44 | 0.99 1.02 n/a n/a
MultiSource/Benchmarks/BitBench/uudecode/uudecode | 0.0120 2864 0.0080 * 0.0120 | 0.11 0.15 0.14 * 0.15 | 0.73 0.79 n/a n/a
MultiSource/Benchmarks/BitBench/uuencode/uuencode | 0.0120 2728 0.0120 * 0.0120 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/Fhourstones-3.1/fhourstones3.1 | 0.0280 8072 0.0360 * 0.0360 | 2.00 1.86 1.85 * 1.88 | 1.08 1.08 n/a n/a
MultiSource/Benchmarks/Fhourstones/fhourstones | 0.0480 10820 0.0440 * 0.0440 | 1.80 1.87 1.77 * 1.94 | 0.96 1.02 n/a n/a
MultiSource/Benchmarks/FreeBench/analyzer/analyzer | 0.0400 10116 0.0480 * 0.0440 | 0.10 0.12 0.10 * 0.17 | 0.83 1.00 n/a n/a
MultiSource/Benchmarks/FreeBench/distray/distray | 0.0120 6944 0.0280 * 0.0280 | 0.25 0.30 0.24 * 0.29 | 0.83 1.04 n/a n/a
MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow | 0.0880 18880 0.0840 * 0.0680 | 0.34 0.37 0.38 * 0.48 | 0.92 0.89 n/a n/a
MultiSource/Benchmarks/FreeBench/mason/mason | 0.0160 6144 0.0200 * 0.0160 | 0.41 0.24 0.25 * 0.27 | 1.71 1.64 n/a n/a
MultiSource/Benchmarks/FreeBench/neural/neural | 0.0560 8772 0.0480 * 0.0480 | 0.26 0.31 0.24 * 0.29 | 0.84 1.08 n/a n/a
MultiSource/Benchmarks/FreeBench/pcompress2/pcompress2 | 0.0480 11040 0.0440 * 0.0480 | 0.29 0.30 0.26 * 0.32 | 0.97 1.12 n/a n/a
MultiSource/Benchmarks/FreeBench/pifft/pifft | 0.2480 58904 0.2960 * 0.2800 | 0.12 0.14 0.15 * 0.45 | 0.86 0.80 n/a n/a
MultiSource/Benchmarks/MallocBench/cfrac/cfrac | 0.2200 92136 0.3000 * 0.2800 | 1.78 * 1.66 * 1.95 | n/a 1.07 n/a n/a
MultiSource/Benchmarks/MallocBench/espresso/espresso | 1.3760 407284 2.0041 * 1.3720 | 0.57 0.58 0.56 * 2.00 | 0.98 1.02 n/a n/a
MultiSource/Benchmarks/MallocBench/gs/gs | 1.1400 376444 1.4400 * 0.6240 | 0.04 * 0.04 * 0.73 | n/a - n/a n/a
MultiSource/Benchmarks/McCat/01-qbsort/qbsort | 0.0160 3456 0.0160 * 0.0160 | 0.07 0.06 0.06 * 0.09 | - - n/a n/a
MultiSource/Benchmarks/McCat/03-testtrie/testtrie | 0.0160 3780 0.0160 * 0.0240 | 0.01 0.00 0.00 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/McCat/04-bisect/bisect | 0.0120 3984 0.0200 * 0.0160 | 0.16 0.25 0.18 * 0.21 | 0.64 0.89 n/a n/a
MultiSource/Benchmarks/McCat/05-eks/eks | 0.1000 7532 0.0400 * 0.0360 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/McCat/08-main/main | 0.0600 12004 0.0360 * 0.0400 | 0.05 0.03 0.03 * 0.08 | - - n/a n/a
MultiSource/Benchmarks/McCat/09-vor/vor | 0.0720 23092 0.0920 * 0.0960 | 0.15 0.13 0.14 * 0.25 | 1.15 1.07 n/a n/a
MultiSource/Benchmarks/McCat/12-IOtest/iotest | 0.0160 2576 0.0120 * 0.0159 | 0.38 0.27 0.24 * 0.27 | 1.41 1.58 n/a n/a
MultiSource/Benchmarks/McCat/15-trie/trie | 0.0080 3216 0.0160 * 0.0160 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/McCat/17-bintr/bintr | 0.0160 3668 0.0160 * 0.0160 | 0.12 0.11 0.11 * 0.14 | 1.09 1.09 n/a n/a
MultiSource/Benchmarks/McCat/18-imp/imp | 0.0680 21096 0.1000 * 0.0880 | 0.08 0.08 0.10 * 0.21 | - - n/a n/a
MultiSource/Benchmarks/MiBench/automotive-basicmath/automotive-basicmath | 0.0160 4808 0.0280 * 0.0240 | 0.55 0.54 0.55 * 0.58 | 1.02 1.00 n/a n/a
MultiSource/Benchmarks/MiBench/automotive-bitcount/automotive-bitcount | 0.0160 3532 0.0160 * 0.0200 | 0.11 0.16 0.14 * 0.16 | 0.69 0.79 n/a n/a
MultiSource/Benchmarks/MiBench/automotive-susan/automotive-susan | 0.2720 64100 0.2840 * 0.2760 | 0.06 0.08 0.05 * 0.34 | - - n/a n/a
MultiSource/Benchmarks/MiBench/consumer-jpeg/consumer-jpeg | 1.1640 201192 0.7360 * 0.3800 | 0.00 0.00 0.00 * 0.41 | - - n/a n/a
MultiSource/Benchmarks/MiBench/consumer-lame/consumer-lame | 1.3200 331160 1.1360 * 0.9720 | 0.34 * 0.33 * 1.38 | n/a 1.03 n/a n/a
MultiSource/Benchmarks/MiBench/consumer-typeset/consumer-typeset | 7.6004 1392340 5.9563 * 5.1283 | 0.23 * 0.22 * 5.57 | n/a 1.05 n/a n/a
MultiSource/Benchmarks/MiBench/network-dijkstra/network-dijkstra | 0.0120 3456 0.0160 * 0.0120 | 0.05 0.05 0.05 * 0.07 | - - n/a n/a
MultiSource/Benchmarks/MiBench/network-patricia/network-patricia | 0.0200 4268 0.0200 * 0.0200 | 0.16 0.17 0.16 * 0.19 | 0.94 1.00 n/a n/a
MultiSource/Benchmarks/MiBench/office-ispell/office-ispell | 0.4920 128824 0.6520 * 0.2080 | 0.00 0.00 0.00 * 0.22 | - - n/a n/a
MultiSource/Benchmarks/MiBench/office-stringsearch/office-stringsearch | 0.0240 13212 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/MiBench/security-blowfish/security-blowfish | 0.1080 31024 0.0880 * 0.0520 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/MiBench/security-rijndael/security-rijndael | 0.1320 51332 0.0840 * 0.0560 | 0.05 0.04 0.07 * 0.14 | - - n/a n/a
MultiSource/Benchmarks/MiBench/security-sha/security-sha | 0.0200 4764 0.0200 * 0.0200 | 0.01 0.02 0.02 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/MiBench/telecomm-CRC32/telecomm-CRC32 | 0.0080 3180 0.0080 * 0.0000 | 0.32 0.29 0.31 * 0.30 | 1.10 1.03 n/a n/a
MultiSource/Benchmarks/MiBench/telecomm-FFT/telecomm-fft | 0.0120 4852 0.0240 * 0.0200 | 0.07 0.06 0.06 * 0.09 | - - n/a n/a
MultiSource/Benchmarks/MiBench/telecomm-adpcm/telecomm-adpcm | 0.0080 2192 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
MultiSource/Benchmarks/MiBench/telecomm-gsm/telecomm-gsm | 0.3440 73804 0.2120 * 0.1520 | 0.23 0.21 0.22 * 0.39 | 1.10 1.05 n/a n/a
MultiSource/Benchmarks/NPB-serial/is/is | 0.0080 5108 0.0200 * 0.3200 | 11.11 10.74 11.04 * 10.79 | 1.03 1.01 n/a n/a
MultiSource/Benchmarks/Olden/bh/bh | 0.0840 15196 0.0680 * 0.0720 | 2.51 * 2.17 * 2.26 | n/a 1.16 n/a n/a
MultiSource/Benchmarks/Olden/bisort/bisort | 0.0160 3672 0.0200 * 0.0240 | 1.02 1.13 1.06 * 1.12 | 0.90 0.96 n/a n/a
MultiSource/Benchmarks/Olden/em3d/em3d | 0.0360 6424 0.0320 * 0.0280 | 3.61 4.85 3.42 * 3.43 | 0.74 1.06 n/a n/a
MultiSource/Benchmarks/Olden/health/health | 0.0360 7576 0.0240 * 0.0320 | 0.63 * 0.61 * 0.67 | n/a 1.03 n/a n/a
MultiSource/Benchmarks/Olden/mst/mst | 0.0320 4176 0.0200 * 0.0200 | 0.19 0.19 0.19 * 0.23 | 1.00 1.00 n/a n/a
MultiSource/Benchmarks/Olden/perimeter/perimeter | 0.0160 12280 0.0680 * 0.0680 | 0.39 0.38 0.41 * 0.46 | 1.03 0.95 n/a n/a
MultiSource/Benchmarks/Olden/power/power | 0.0320 8572 0.0280 * 0.0280 | 3.37 3.39 3.08 * 3.08 | 0.99 1.09 n/a n/a
MultiSource/Benchmarks/Olden/treeadd/treeadd | 0.0080 1812 0.0080 * 0.0080 | 8.40 0.49 0.45 * 0.45 | 17.14 18.67 n/a n/a
MultiSource/Benchmarks/Olden/tsp/tsp | 0.0200 6984 0.0240 * 0.0240 | 2.88 2.91 2.65 * 2.68 | 0.99 1.09 n/a n/a
MultiSource/Benchmarks/Olden/voronoi/voronoi | 0.0640 13420 0.0520 * 0.0520 | 0.50 0.50 0.46 * 0.54 | 1.00 1.09 n/a n/a
MultiSource/Benchmarks/OptimizerEval/optimizer-eval | 0.0480 28884 0.1120 * 0.1240 | 114.08 118.50 114.69 * 106.23 | 0.96 0.99 n/a n/a
MultiSource/Benchmarks/PAQ8p/paq8p | 0.8880 194020 * * * | 0.00 * * * * | n/a n/a n/a n/a
MultiSource/Benchmarks/Prolangs-C++/NP/np | 0.0000 1184 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/city/city | 0.1040 23800 0.0760 * 0.0480 | 0.00 0.00 0.00 * 0.06 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/deriv1/deriv1 | 0.0240 12984 0.0440 * 0.0240 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/deriv2/deriv2 | 0.0440 14516 0.0520 * 0.0320 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/employ/employ | 0.0760 21948 0.0840 * 0.0600 | 0.01 0.00 0.00 * 0.07 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/family/family | 0.0040 3392 0.0120 * 0.0120 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/fsm/fsm | 0.0160 1880 0.0080 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/garage/garage | 0.0160 7424 0.0240 * 0.0240 | 0.00 0.01 0.00 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/life/life | 0.0280 6304 0.0280 * 0.0200 | 1.44 1.42 1.46 * 1.79 | 1.01 0.99 n/a n/a
MultiSource/Benchmarks/Prolangs-C++/objects/objects | 0.0200 9860 0.0400 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/ocean/ocean | 0.0440 8856 0.0280 * 0.0360 | 0.14 0.16 0.15 * 0.19 | 0.88 0.93 n/a n/a
MultiSource/Benchmarks/Prolangs-C++/office/office | 0.0520 12968 0.0360 * 0.0320 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/primes/primes | 0.0040 1592 0.0040 * 0.0040 | 0.46 0.46 0.47 * 0.47 | 1.00 0.98 n/a n/a
MultiSource/Benchmarks/Prolangs-C++/shapes/shapes | 0.0520 16060 0.0560 * 0.0480 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/simul/simul | 0.0159 4164 0.0160 * 0.0040 | 0.01 0.00 0.00 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/trees/trees | 0.0320 11272 0.0440 * 0.0320 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/vcirc/vcirc | 0.0080 1804 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/TimberWolfMC/timberwolfmc | 1.8081 545152 2.7801 * 0.5280 | 0.00 0.00 0.00 * 0.56 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/agrep/agrep | 0.3440 90404 0.4160 * 0.1560 | 0.00 0.00 0.00 * 0.17 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/allroots/allroots | 0.0120 3512 0.0160 * 0.0160 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/archie-client/archie | 0.1640 47672 0.1880 * 0.0320 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/assembler/assembler | 0.1680 61488 0.3400 * 0.2680 | 0.00 0.00 0.00 * 0.28 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/bison/mybison | 0.3200 108708 0.8880 * 0.7600 | 0.00 0.00 0.00 * 0.79 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/cdecl/cdecl | 0.0960 48928 0.2800 * 0.2960 | 0.00 0.00 0.00 * 0.31 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/compiler/compiler | 0.0920 36336 0.2120 * 0.0360 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/fixoutput/fixoutput | 0.0120 5980 0.0320 * 0.0280 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/football/football | 0.3240 85220 0.4480 * 0.0280 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/gnugo/gnugo | 0.1160 35268 0.1760 * 0.2080 | 0.08 0.06 0.07 * 0.29 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/loader/loader | 0.0920 28112 0.1200 * 0.0840 | 0.00 0.00 0.00 * 0.08 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/plot2fig/plot2fig | 0.0440 14648 0.0760 * 0.0720 | 0.00 0.00 0.00 * 0.07 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/simulator/simulator | 0.2400 64272 0.2760 * 0.0400 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/unix-smail/unix-smail | 0.1080 39464 0.2240 * 0.1720 | 0.01 0.00 0.00 * 0.18 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/unix-tbl/unix-tbl | 0.2720 75600 0.3840 * 0.0120 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/Ptrdist/anagram/anagram | 0.0200 7644 0.0320 * 0.0360 | 1.35 1.15 1.34 * 1.38 | 1.17 1.01 n/a n/a
MultiSource/Benchmarks/Ptrdist/bc/bc | 0.3720 125596 0.6160 * 0.5960 | 0.67 0.68 0.68 * 1.30 | 0.99 0.99 n/a n/a
MultiSource/Benchmarks/Ptrdist/ft/ft | 0.0280 7152 0.0320 * 0.0320 | 1.59 1.62 1.62 * 1.63 | 0.98 0.98 n/a n/a
MultiSource/Benchmarks/Ptrdist/ks/ks | 0.0400 11892 0.0520 * 0.0520 | 2.13 2.24 2.34 * 2.30 | 0.95 0.91 n/a n/a
MultiSource/Benchmarks/Ptrdist/yacr2/yacr2 | 0.1760 48272 0.2520 * 0.2680 | 0.91 0.95 1.31 * 1.58 | 0.96 0.69 n/a n/a
MultiSource/Benchmarks/SciMark2-C/scimark2 | 0.0600 15428 0.0760 * 0.0800 | 27.87 * 28.42 * 28.58 | n/a 0.98 n/a n/a
MultiSource/Benchmarks/Trimaran/enc-3des/enc-3des | 0.1600 21512 0.0920 * 0.0880 | 2.32 2.21 2.22 * 2.34 | 1.05 1.05 n/a n/a
MultiSource/Benchmarks/Trimaran/enc-md5/enc-md5 | 0.0520 7660 0.0400 * 0.0400 | 2.33 2.18 2.10 * 2.14 | 1.07 1.11 n/a n/a
MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1 | 0.0200 3900 0.0160 * 0.0160 | 0.79 0.50 0.82 * 0.89 | 1.58 0.96 n/a n/a
MultiSource/Benchmarks/Trimaran/enc-rc4/enc-rc4 | 0.0120 2956 0.0120 * 0.0080 | 1.37 1.54 1.20 * 1.26 | 0.89 1.14 n/a n/a
MultiSource/Benchmarks/Trimaran/netbench-crc/netbench-crc | 0.0120 32656 0.0120 * 0.0080 | 1.12 1.10 1.08 * 1.11 | 1.02 1.04 n/a n/a
MultiSource/Benchmarks/Trimaran/netbench-url/netbench-url | 0.0280 40864 0.0400 * 0.0400 | 2.95 3.26 4.00 * 4.50 | 0.90 0.74 n/a n/a
MultiSource/Benchmarks/VersaBench/8b10b/8b10b | 0.0080 2168 0.0080 * 0.0040 | 9.11 7.13 5.20 * 5.14 | 1.28 1.75 n/a n/a
MultiSource/Benchmarks/VersaBench/beamformer/beamformer | 0.0320 5748 0.0200 * 0.0240 | 1.94 2.57 2.21 * 2.25 | 0.75 0.88 n/a n/a
MultiSource/Benchmarks/VersaBench/bmm/bmm | 0.0120 2924 0.0120 * 0.0240 | 2.54 2.72 2.48 * 2.51 | 0.93 1.02 n/a n/a
MultiSource/Benchmarks/VersaBench/dbms/dbms | 0.1040 36324 0.2040 * 0.1960 | 1.94 2.22 1.84 * 2.08 | 0.87 1.05 n/a n/a
MultiSource/Benchmarks/VersaBench/ecbdes/ecbdes | 0.0640 9772 0.0200 * 0.0160 | 3.00 2.88 2.86 * 2.89 | 1.04 1.05 n/a n/a
MultiSource/Benchmarks/llubenchmark/llu | 0.0160 3712 0.0200 * 0.0160 | 13.48 13.66 13.13 * 13.47 | 0.99 1.03 n/a n/a
MultiSource/Benchmarks/mafft/pairlocalalign | 3.9162 341756 1.7401 * * | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
MultiSource/Benchmarks/mediabench/adpcm/rawcaudio/rawcaudio | 0.0080 2324 0.0080 * 0.0080 | 0.01 0.00 0.00 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/mediabench/adpcm/rawdaudio/rawdaudio | 0.0120 2192 0.0080 * 0.0080 | 0.01 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/mediabench/g721/g721encode/encode | 0.0760 13112 0.0560 * 0.0360 | 0.06 0.06 0.08 * 0.12 | - - n/a n/a
MultiSource/Benchmarks/mediabench/gsm/toast/toast | 0.3520 73804 0.2160 * 0.1440 | 0.02 0.03 0.02 * 0.19 | - - n/a n/a
MultiSource/Benchmarks/mediabench/jpeg/jpeg-6a/cjpeg | 1.2040 170484 0.6320 * 0.4080 | 0.02 0.00 0.00 * 0.46 | - - n/a n/a
MultiSource/Benchmarks/mediabench/mpeg2/mpeg2dec/mpeg2decode | 0.4440 101604 0.4720 * 0.3920 | 0.03 0.02 0.02 * 0.44 | - - n/a n/a
MultiSource/Benchmarks/sim/sim | 0.0760 28120 0.1400 * 0.1400 | 5.52 5.66 5.39 * 5.63 | 0.98 1.02 n/a n/a
MultiSource/Benchmarks/tramp3d-v4/tramp3d-v4 | 7.8485 1966488 4.8003 * 4.5322 | 0.73 * 0.77 * 5.70 | n/a 0.95 n/a n/a
SingleSource/Benchmarks/Adobe-C++/functionobjects | 0.1760 35452 0.1400 * 0.1320 | 4.05 5.77 3.56 * 3.77 | 0.70 1.14 n/a n/a
SingleSource/Benchmarks/Adobe-C++/loop_unroll | 0.9280 318836 1.5600 * 1.6120 | 1.85 1.97 1.84 * 3.57 | 0.94 1.01 n/a n/a
SingleSource/Benchmarks/Adobe-C++/simple_types_constant_folding | 0.8000 185368 1.9881 * 2.0041 | 1.45 2.52 1.39 * 3.48 | 0.58 1.04 n/a n/a
SingleSource/Benchmarks/Adobe-C++/simple_types_loop_invariant | 0.5200 137288 1.0040 * 1.0000 | 4.17 4.93 3.83 * 4.86 | 0.85 1.09 n/a n/a
SingleSource/Benchmarks/Adobe-C++/stepanov_abstraction | 0.2560 37428 0.1280 * 0.1280 | 5.24 11.63 5.19 * 5.35 | 0.45 1.01 n/a n/a
SingleSource/Benchmarks/Adobe-C++/stepanov_vector | 0.2760 41136 0.1480 * 0.1480 | 3.09 7.09 3.03 * 3.21 | 0.44 1.02 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/fannkuch | 0.0160 2672 0.0080 * 0.0040 | 4.23 4.09 3.60 * 3.49 | 1.03 1.18 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/fasta | 0.0120 3020 0.0120 * 0.0120 | 1.29 1.66 1.32 * 1.31 | 0.78 0.98 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/n-body | 0.0160 3192 0.0120 * 0.0080 | 2.37 2.12 2.07 * 2.09 | 1.12 1.14 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/nsieve-bits | 0.0000 1120 0.0080 * 0.0040 | 1.66 1.76 1.68 * 1.56 | 0.94 0.99 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/partialsums | 0.0040 1660 0.0120 * 0.0040 | 1.17 1.19 1.22 * 1.23 | 0.98 0.96 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/puzzle | 0.0080 1264 0.0080 * 0.0040 | 0.60 0.98 0.56 * 0.58 | 0.61 1.07 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/recursive | 0.0000 3444 0.0240 * 0.0280 | 1.23 1.12 1.02 * 1.05 | 1.10 1.21 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/spectral-norm | 0.0160 2792 0.0120 * 0.0080 | 3.08 3.10 2.08 * 2.09 | 0.99 1.48 n/a n/a
SingleSource/Benchmarks/CoyoteBench/almabench | 0.0080 5816 0.0120 * 0.0120 | 18.99 8.40 8.37 * 8.42 | 2.26 2.27 n/a n/a
SingleSource/Benchmarks/CoyoteBench/fftbench | 0.0960 22440 0.0720 * 0.0720 | 2.53 * 2.65 * 2.75 | n/a 0.95 n/a n/a
SingleSource/Benchmarks/CoyoteBench/huffbench | 0.0200 6616 0.0320 * 0.0280 | 18.90 21.98 18.80 * 19.12 | 0.86 1.01 n/a n/a
SingleSource/Benchmarks/CoyoteBench/lpbench | 0.0280 4408 0.0200 * 0.0200 | 14.41 16.14 14.63 * 15.43 | 0.89 0.98 n/a n/a
SingleSource/Benchmarks/Dhrystone/dry | 0.0120 1268 0.0040 * 0.0040 | 2.62 0.46 0.63 * 0.64 | 5.70 4.16 n/a n/a
SingleSource/Benchmarks/Dhrystone/fldry | 0.0120 1300 0.0040 * 0.0040 | 2.85 1.80 0.47 * 0.51 | 1.58 6.06 n/a n/a
SingleSource/Benchmarks/McGill/chomp | 0.0440 6140 0.0360 * 0.0360 | 1.37 1.02 1.38 * 1.10 | 1.34 0.99 n/a n/a
SingleSource/Benchmarks/McGill/exptree | 0.0120 4800 0.0200 * 0.0240 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/McGill/misr | 0.0160 2700 0.0160 * 0.0120 | 0.36 0.30 0.31 * 0.34 | 1.20 1.16 n/a n/a
SingleSource/Benchmarks/McGill/queens | 0.0080 3316 0.0160 * 0.0120 | 2.90 2.57 2.46 * 2.58 | 1.13 1.18 n/a n/a
SingleSource/Benchmarks/Misc-C++/bigfib | 0.2240 41088 0.1680 * 0.1320 | 0.64 * 0.66 * 0.81 | n/a 0.97 n/a n/a
SingleSource/Benchmarks/Misc-C++/mandel-text | 0.0080 1152 0.0080 * 0.0080 | 2.64 3.19 2.34 * 2.35 | 0.83 1.13 n/a n/a
SingleSource/Benchmarks/Misc-C++/oopack_v1p8 | 0.0400 9456 0.0320 * 0.0320 | 0.22 0.35 0.18 * 0.22 | 0.63 1.22 n/a n/a
SingleSource/Benchmarks/Misc-C++/ray | 0.0720 17280 0.0520 * 0.0520 | 6.75 8.21 5.02 * 5.18 | 0.82 1.34 n/a n/a
SingleSource/Benchmarks/Misc-C++/sphereflake | 0.0560 16904 0.0640 * 0.0600 | 3.42 5.60 3.37 * 3.47 | 0.61 1.01 n/a n/a
SingleSource/Benchmarks/Misc-C++/stepanov_container | 0.2520 46076 0.1600 * 0.1480 | 8.13 7.88 7.50 * 7.66 | 1.03 1.08 n/a n/a
SingleSource/Benchmarks/Misc-C++/stepanov_v1p2 | 0.0640 10008 0.0360 * 0.0320 | 8.19 15.84 8.18 * 8.21 | 0.52 1.00 n/a n/a
SingleSource/Benchmarks/Misc/ReedSolomon | 0.0680 10188 0.0440 * 0.0440 | 7.89 8.63 7.44 * 7.84 | 0.91 1.06 n/a n/a
SingleSource/Benchmarks/Misc/fbench | 0.0160 5364 0.0200 * 0.0200 | 2.20 2.27 2.54 * 2.61 | 0.97 0.87 n/a n/a
SingleSource/Benchmarks/Misc/ffbench | 0.0200 4340 0.0160 * 0.0160 | 0.97 1.08 1.10 * 1.13 | 0.90 0.88 n/a n/a
SingleSource/Benchmarks/Misc/flops | 0.0200 6552 0.0280 * 0.0280 | 16.68 13.01 15.85 * 15.51 | 1.28 1.05 n/a n/a
SingleSource/Benchmarks/Misc/flops-1 | 0.0040 1152 0.0000 * 0.0000 | 4.48 4.05 4.61 * 4.08 | 1.11 0.97 n/a n/a
SingleSource/Benchmarks/Misc/flops-2 | 0.0040 1252 0.0040 * 0.0040 | 2.22 2.51 2.21 * 2.22 | 0.88 1.00 n/a n/a
SingleSource/Benchmarks/Misc/flops-3 | 0.0040 1172 0.0040 * 0.0040 | 2.74 3.22 3.00 * 3.08 | 0.85 0.91 n/a n/a
SingleSource/Benchmarks/Misc/flops-4 | 0.0040 1152 0.0000 * 0.0040 | 4.05 1.35 1.39 * 1.40 | 3.00 2.91 n/a n/a
SingleSource/Benchmarks/Misc/flops-5 | 0.0040 1284 0.0040 * 0.0040 | 6.85 3.92 4.46 * 4.51 | 1.75 1.54 n/a n/a
SingleSource/Benchmarks/Misc/flops-6 | 0.0040 1284 0.0040 * 0.0040 | 5.09 4.86 5.10 * 5.11 | 1.05 1.00 n/a n/a
SingleSource/Benchmarks/Misc/flops-7 | 0.0040 1080 0.0040 * 0.0000 | 6.21 6.14 6.18 * 6.51 | 1.01 1.00 n/a n/a
SingleSource/Benchmarks/Misc/flops-8 | 0.0040 1288 0.0040 * 0.0040 | 5.42 3.92 2.36 * 2.36 | 1.38 2.30 n/a n/a
SingleSource/Benchmarks/Misc/himenobmtxpa | 0.0520 9672 0.0400 * 0.0480 | 1.41 2.55 2.06 * 2.22 | 0.55 0.68 n/a n/a
SingleSource/Benchmarks/Misc/mandel | 0.0040 1084 0.0040 * 0.0040 | 1.50 1.65 1.69 * 2.02 | 0.91 0.89 n/a n/a
SingleSource/Benchmarks/Misc/mandel-2 | 0.0040 1052 0.0040 * 0.0040 | 1.21 1.39 1.03 * 1.05 | 0.87 1.17 n/a n/a
SingleSource/Benchmarks/Misc/oourafft | 0.0760 13464 0.0520 * 0.0520 | 6.32 8.76 8.12 * 7.27 | 0.72 0.78 n/a n/a
SingleSource/Benchmarks/Misc/perlin | 0.0160 4476 0.0160 * 0.0200 | 5.97 6.71 6.85 * 6.86 | 0.89 0.87 n/a n/a
SingleSource/Benchmarks/Misc/pi | 0.0040 1152 0.0040 * 0.0040 | 1.00 0.94 1.01 * 0.93 | 1.06 0.99 n/a n/a
SingleSource/Benchmarks/Misc/richards_benchmark | 0.0160 5752 0.0160 * 0.0160 | 0.95 1.09 1.16 * 1.32 | 0.87 0.82 n/a n/a
SingleSource/Benchmarks/Misc/salsa20 | 0.0160 2700 0.0120 * 0.0120 | 10.50 9.39 9.51 * 9.82 | 1.12 1.10 n/a n/a
SingleSource/Benchmarks/Misc/whetstone | 0.0160 3356 0.0200 * 0.0160 | 2.47 2.53 2.50 * 2.52 | 0.98 0.99 n/a n/a
SingleSource/Benchmarks/Shootout-C++/ackermann | 0.0360 11116 0.0360 * 0.0280 | 1.86 1.04 1.15 * 1.11 | 1.79 1.62 n/a n/a
SingleSource/Benchmarks/Shootout-C++/ary | 0.0440 9192 0.0280 * 0.0280 | 0.12 0.15 0.14 * 0.18 | 0.80 0.86 n/a n/a
SingleSource/Benchmarks/Shootout-C++/ary2 | 0.0440 9808 0.0320 * 0.0360 | 0.14 0.14 0.15 * 0.18 | 1.00 0.93 n/a n/a
SingleSource/Benchmarks/Shootout-C++/ary3 | 0.0480 11680 0.0400 * 0.0440 | 5.59 5.58 5.99 * 5.75 | 1.00 0.93 n/a n/a
SingleSource/Benchmarks/Shootout-C++/except | 0.0360 11384 * * * | 0.28 * * * * | n/a n/a n/a n/a
SingleSource/Benchmarks/Shootout-C++/fibo | 0.0240 7952 0.0280 * 0.0280 | 2.58 0.58 0.56 * 0.61 | 4.45 4.61 n/a n/a
SingleSource/Benchmarks/Shootout-C++/hash | 0.0760 15128 0.0440 * 0.0440 | 0.79 0.79 0.77 * 0.96 | 1.00 1.03 n/a n/a
SingleSource/Benchmarks/Shootout-C++/hash2 | 0.0920 20148 0.0680 * 0.0640 | 4.80 4.78 4.70 * 4.75 | 1.00 1.02 n/a n/a
SingleSource/Benchmarks/Shootout-C++/heapsort | 0.0040 3016 0.0040 * 0.0079 | 5.57 6.03 5.45 * 5.39 | 0.92 1.02 n/a n/a
SingleSource/Benchmarks/Shootout-C++/hello | 0.0280 8392 0.0240 * 0.0240 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/Shootout-C++/lists | 0.0480 11472 0.0400 * 0.0360 | 6.08 6.19 6.18 * 6.54 | 0.98 0.98 n/a n/a
SingleSource/Benchmarks/Shootout-C++/lists1 | 0.0840 16308 0.0640 * 0.0680 | 0.38 0.38 0.39 * 0.51 | 1.00 0.97 n/a n/a
SingleSource/Benchmarks/Shootout-C++/matrix | 0.0440 12240 0.0440 * 0.0440 | 3.41 3.53 3.48 * 3.55 | 0.97 0.98 n/a n/a
SingleSource/Benchmarks/Shootout-C++/methcall | 0.0360 10872 0.0239 * 0.0240 | 6.00 6.45 5.72 * 7.85 | 0.93 1.05 n/a n/a
SingleSource/Benchmarks/Shootout-C++/moments | 0.0480 9092 0.0240 * 0.0280 | 0.22 0.24 0.23 * 0.28 | 0.92 0.96 n/a n/a
SingleSource/Benchmarks/Shootout-C++/nestedloop | 0.0280 8124 0.0280 * 0.0240 | 8.02 0.17 0.17 * 0.21 | 47.18 47.18 n/a n/a
SingleSource/Benchmarks/Shootout-C++/objinst | 0.0400 11068 0.0360 * 0.0280 | 6.91 5.64 5.69 * 5.83 | 1.23 1.21 n/a n/a
SingleSource/Benchmarks/Shootout-C++/random | 0.0280 7924 0.0240 * 0.0240 | 6.70 4.40 4.70 * 4.68 | 1.52 1.43 n/a n/a
SingleSource/Benchmarks/Shootout-C++/reversefile | 0.1040 17488 0.0560 * 0.0400 | 0.00 * 0.01 * 0.04 | n/a - n/a n/a
SingleSource/Benchmarks/Shootout-C++/sieve | 0.0680 12648 0.0440 * 0.0360 | 2.23 2.43 2.37 * 2.37 | 0.92 0.94 n/a n/a
SingleSource/Benchmarks/Shootout-C++/spellcheck | 0.1000 27360 0.0880 * 0.0440 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
SingleSource/Benchmarks/Shootout-C++/strcat | 0.0480 10628 0.0360 * 0.0320 | 0.15 * 0.10 * 0.17 | n/a 1.50 n/a n/a
SingleSource/Benchmarks/Shootout-C++/sumcol | 0.0240 9084 0.0280 * 0.0200 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/Shootout-C++/wc | 0.0360 11192 0.0360 * 0.0320 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
SingleSource/Benchmarks/Shootout-C++/wordfreq | 0.0800 18464 0.0600 * 0.0200 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/Shootout/ackermann | 0.0040 1180 0.0080 * 0.0040 | 0.00 0.01 0.01 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/Shootout/ary3 | 0.0040 1140 0.0040 * 0.0040 | 5.97 5.42 7.90 * 5.45 | 1.10 0.76 n/a n/a
SingleSource/Benchmarks/Shootout/fib2 | 0.0080 964 0.0080 * 0.0040 | 2.60 0.72 0.56 * 0.58 | 3.61 4.64 n/a n/a
SingleSource/Benchmarks/Shootout/hash | 0.0160 2948 0.0120 * 0.0120 | 6.60 6.59 6.58 * 5.70 | 1.00 1.00 n/a n/a
SingleSource/Benchmarks/Shootout/heapsort | 0.0080 1424 0.0080 * 0.0040 | 5.08 5.98 5.24 * 5.28 | 0.85 0.97 n/a n/a
SingleSource/Benchmarks/Shootout/hello | 0.0000 576 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Benchmarks/Shootout/lists | 0.0120 3180 0.0120 * 0.0160 | 5.71 6.02 5.90 * 6.59 | 0.95 0.97 n/a n/a
SingleSource/Benchmarks/Shootout/matrix | 0.0200 4080 0.0120 * 0.0120 | 2.68 4.80 4.01 * 4.03 | 0.56 0.67 n/a n/a
SingleSource/Benchmarks/Shootout/methcall | 0.0040 1568 0.0080 * 0.0119 | 4.88 4.67 4.66 * 6.56 | 1.04 1.05 n/a n/a
SingleSource/Benchmarks/Shootout/nestedloop | 0.0040 1040 0.0080 * 0.0040 | 8.02 0.19 0.17 * 0.18 | 42.21 47.18 n/a n/a
SingleSource/Benchmarks/Shootout/objinst | 0.0040 1664 0.0080 * 0.0120 | 5.12 5.18 5.01 * 4.98 | 0.99 1.02 n/a n/a
SingleSource/Benchmarks/Shootout/random | 0.0000 840 0.0000 * 0.0040 | 4.42 4.43 4.71 * 4.71 | 1.00 0.94 n/a n/a
SingleSource/Benchmarks/Shootout/sieve | 0.0040 1264 0.0040 * 0.0040 | 7.92 7.75 6.41 * 6.56 | 1.02 1.24 n/a n/a
SingleSource/Benchmarks/Shootout/strcat | 0.0040 1316 0.0040 * 0.0040 | 0.16 0.16 0.17 * 0.18 | 1.00 0.94 n/a n/a
SingleSource/Benchmarks/Stanford/Bubblesort | 0.0080 1420 0.0080 * 0.0080 | 0.05 0.05 0.05 * 0.06 | - - n/a n/a
SingleSource/Benchmarks/Stanford/IntMM | 0.0080 1472 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Oscar | 0.0120 3008 0.0080 * 0.0120 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Perm | 0.0080 3124 0.0160 * 0.0160 | 0.02 0.04 0.04 * 0.05 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Puzzle | 0.0920 4720 0.0160 * 0.0200 | 0.17 0.22 0.18 * 0.22 | 0.77 0.94 n/a n/a
SingleSource/Benchmarks/Stanford/Queens | 0.0080 2232 0.0120 * 0.0120 | 0.03 0.04 0.04 * 0.06 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Quicksort | 0.0080 1688 0.0040 * 0.0080 | 0.04 0.04 0.04 * 0.05 | - - n/a n/a
SingleSource/Benchmarks/Stanford/RealMM | 0.0120 1504 0.0120 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Towers | 0.0080 2432 0.0120 * 0.0080 | 0.02 0.02 0.02 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Treesort | 0.0120 2248 0.0120 * 0.0120 | 0.07 0.09 0.09 * 0.10 | - - n/a n/a
SingleSource/Regression/C++/2003-05-14-array-init | 0.0000 584 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2003-05-14-expr_stmt | 0.0000 484 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2003-06-08-BaseType | 0.0000 496 0.0000 * 0.0000 | 0.01 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2003-06-08-VirtualFunctions | 0.0040 620 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2003-06-13-Crasher | 0.0000 456 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C++/2003-08-20-EnumSizeProblem | 0.0040 456 0.0000 * 0.0000 | 0.01 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C++/2003-09-29-NonPODsByValue | 0.0000 576 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2008-01-29-ParamAliasesReturn | 0.0040 604 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/BuiltinTypeInfo | 0.0000 728 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/EH/ConditionalExpr | 0.0000 712 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/EH/ctor_dtor_count | 0.0000 1048 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/ctor_dtor_count-2 | 0.0000 1592 * * * | 0.01 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/dead_try_block | 0.0040 568 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C++/EH/exception_spec_test | 0.0040 2464 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/function_try_block | 0.0040 2452 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/simple_rethrow | 0.0040 1444 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/simple_throw | 0.0000 956 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/throw_rethrow_test | 0.0040 1792 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/global_ctor | 0.0040 1344 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/global_type | 0.0000 456 0.0000 * 0.0000 | 0.00 0.01 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/ofstream_ctor | 0.0240 9224 0.0200 * 0.0240 | 0.01 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/Regression/C++/pointer_member | 0.0000 660 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/pointer_method | 0.0000 664 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/short_circuit_dtor | 0.0000 644 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-05-14-initialize-string | 0.0000 680 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2003-05-21-BitfieldHandling | 0.0000 1152 0.0040 * 0.0040 | 0.00 * 0.00 * 0.00 | n/a - n/a n/a
SingleSource/Regression/C/2003-05-21-UnionBitfields | 0.0040 580 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-05-21-UnionTest | 0.0000 580 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-05-22-LocalTypeTest | 0.0000 624 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-05-22-VarSizeArray | 0.0000 580 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2003-05-23-TransparentUnion | 0.0040 576 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-06-16-InvalidInitializer | 0.0000 456 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-06-16-VolatileError | 0.0000 456 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-10-12-GlobalVarInitializers | 0.0000 664 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2004-02-03-AggregateCopy | 0.0040 588 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/Regression/C/2004-03-15-IndirectGoto | 0.0000 860 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2004-08-12-InlinerAndAllocas | 0.0040 824 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2005-05-06-LongLongSignedShift | 0.0040 608 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2008-01-07-LongDouble | 0.0000 596 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/ConstructorDestructorAttributes | 0.0000 760 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/DuffsDevice | 0.0040 1084 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/PR1386 | 0.0000 588 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/PR491 | 0.0000 456 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/PR640 | 0.0080 2076 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/badidx | 0.0040 1004 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/bigstack | 0.0080 4116 0.0120 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/callargs | 0.0040 928 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/casts | 0.0040 3596 0.0160 * 0.0120 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/Regression/C/globalrefs | 0.0000 932 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/matrixTranspose | 0.0080 1344 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/pointer_arithmetic | 0.0000 488 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/sumarray | 0.0000 948 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/sumarray2d | 0.0040 1080 0.0040 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/sumarraymalloc | 0.0040 1164 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/test_indvars | 0.0080 1436 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/testtrace | 0.0040 1136 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-04-17-PrintfChar | 0.0000 576 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-ArgumentTest | 0.0040 624 0.0000 * 0.0040 | 0.01 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-CastTest | 0.0040 1504 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-CastTest1 | 0.0000 608 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-CastTest2 | 0.0000 728 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-CastTest3 | 0.0000 684 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-ManyArguments | 0.0040 696 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-03-NotTest | 0.0040 664 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-19-DivTest | 0.0040 688 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-08-02-CastTest | 0.0000 584 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-08-02-CastTest2 | 0.0000 608 0.0040 * 0.0000 | 0.00 0.01 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-08-19-CodegenBug | 0.0000 568 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2002-10-09-ArrayResolution | 0.0000 644 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2002-10-12-StructureArgs | 0.0000 636 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2002-10-12-StructureArgsSimple | 0.0040 604 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-10-13-BadLoad | 0.0000 572 0.0000 * 0.0000 | 0.00 0.01 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-12-13-MishaTest | 0.0040 584 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-04-22-Switch | 0.0040 736 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-05-02-DependentPHI | 0.0040 816 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-05-07-VarArgs | 0.0080 2828 0.0120 * 0.0120 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/UnitTests/2003-05-12-MinIntProblem | 0.0000 568 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-05-14-AtExit | 0.0040 688 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-05-26-Shorts | 0.0040 2012 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-05-31-CastToBool | 0.0000 916 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-05-31-LongShifts | 0.0040 920 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-07-06-IntOverflow | 0.0000 812 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-07-08-BitOpsTest | 0.0000 592 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-07-09-LoadShorts | 0.0000 1520 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-07-09-SignedArgs | 0.0080 1672 0.0080 * 0.0080 | 0.00 0.00 0.01 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-07-10-SignConversions | 0.0000 792 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-08-05-CastFPToUint | 0.0040 720 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-08-11-VaListArg | 0.0080 3108 0.0160 * 0.0120 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-08-20-FoldBug | 0.0000 568 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-09-18-BitFieldTest | 0.0040 612 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-10-13-SwitchTest | 0.0000 652 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-10-29-ScalarReplBug | 0.0000 580 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2004-02-02-NegativeZero | 0.0000 640 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2004-06-20-StaticBitfieldInit | 0.0000 684 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2004-11-28-GlobalBoolLayout | 0.0000 880 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2005-05-11-Popcount-ffs-fls | 0.0160 2144 0.0080 * 0.0120 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/UnitTests/2005-05-12-Int64ToFP | 0.0040 684 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2005-05-13-SDivTwo | 0.0040 648 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2005-07-15-Bitfield-ABI | 0.0040 596 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2005-07-17-INT-To-FP | 0.0040 928 0.0080 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2005-11-29-LongSwitch | 0.0040 584 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2006-01-23-UnionInit | 0.0040 2124 0.0040 * 0.0040 | 0.00 * 0.00 * 0.01 | n/a - n/a n/a
SingleSource/UnitTests/2006-01-29-SimpleIndirectCall | 0.0000 796 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2006-02-04-DivRem | 0.0000 672 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2006-12-01-float_varg | 0.0040 660 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2006-12-04-DynAllocAndRestore | 0.0000 480 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2006-12-07-Compare64BitConstant | 0.0000 592 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2006-12-11-LoadConstants | 0.0280 2704 0.0360 * 0.0320 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/UnitTests/2007-01-04-KNR-Args | 0.0040 668 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2007-03-02-VaCopy | 0.0040 944 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2007-04-10-BitfieldTest | 0.0000 604 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2007-04-25-weak | 0.0000 512 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2008-04-18-LoopBug | 0.0040 1052 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2008-04-20-LoopBug2 | 0.0040 1068 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2008-07-13-InlineSetjmp | 0.0000 832 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2009-04-16-BitfieldInitialization | 0.0040 1888 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/AtomicOps | 0.0040 812 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/FloatPrecision | 0.0000 616 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/cast | 0.0080 2560 0.0280 * 0.0280 | 0.01 0.02 0.02 * 0.05 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/cast-bug | 0.0040 628 0.0000 * 0.0040 | 0.01 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/cast2 | 0.0000 592 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/ccc | 0.0000 760 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/div | 0.0040 1340 0.0040 * 0.0040 | 0.00 0.00 0.01 * 0.01 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/factor | 0.0080 1008 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/rem | 0.0320 9136 0.0880 * 0.0840 | 0.00 0.00 0.01 * 0.10 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/shr | 0.0000 1448 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/StructModifyTest | 0.0000 688 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/TestLoop | 0.0040 680 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/Threads/tls | 0.0000 876 0.0040 * * | 0.00 0.00 0.00 * * | - - n/a n/a
SingleSource/UnitTests/Vector/SSE/sse.expandfft | 0.0320 6336 0.0240 * 0.0240 | 0.68 1.43 0.58 * 0.61 | 0.48 1.17 n/a n/a
SingleSource/UnitTests/Vector/SSE/sse.isamax | 0.0120 3156 0.0080 * 0.0120 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/Vector/SSE/sse.shift | 0.0040 828 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/Vector/SSE/sse.stepfft | 0.0480 9860 0.0440 * 0.0440 | 0.68 1.37 0.64 * 0.68 | 0.50 1.06 n/a n/a
SingleSource/UnitTests/Vector/build | 0.0000 804 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/Vector/build2 | 0.0000 1144 0.0040 * 0.0040 | 1.54 1.56 2.03 * 2.05 | 0.99 0.76 n/a n/a
SingleSource/UnitTests/Vector/divides | 0.0000 656 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/Vector/multiplies | 0.0120 1652 0.0120 * 0.0120 | 1.26 1.24 3.31 * 3.25 | 1.02 0.38 n/a n/a
SingleSource/UnitTests/Vector/simple | 0.0040 1216 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/Vector/sumarray | 0.0000 940 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/Vector/sumarray-dbl | 0.0040 1004 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/printargs | 0.0000 760 0.0040 * 0.0000 | 0.01 0.00 0.00 * 0.00 | - - n/a n/a
Post-change:
===========
Program | GCCAS Bytecode LLC compile LLC-BETA compile JIT codegen | GCC CBE LLC LLC-BETA JIT | GCC/CBE GCC/LLC GCC/LLC-BETA LLC/LLC-BETA
MultiSource/Applications/Burg/burg | 0.4440 109848 0.8840 * 0.8680 | 0.00 0.00 0.00 * 0.92 | - - n/a n/a
MultiSource/Applications/ClamAV/clamscan | 5.1803 1318528 6.8444 * 3.9642 | 0.18 0.20 0.20 * 4.36 | 0.90 0.90 n/a n/a
MultiSource/Applications/JM/ldecod/ldecod | 2.7441 661960 2.5761 * 2.0801 | 0.06 0.08 0.07 * 2.29 | - - n/a n/a
MultiSource/Applications/JM/lencod/lencod | 8.0565 1442696 6.6084 * 5.7203 | 8.47 8.71 8.33 * 14.82 | 0.97 1.02 n/a n/a
MultiSource/Applications/SIBsim4/SIBsim4 | 0.4280 84528 0.4360 * 0.4480 | 4.30 * 4.73 * 5.39 | n/a 0.91 n/a n/a
MultiSource/Applications/SPASS/SPASS | 6.2723 1594748 5.5923 * 4.0522 | 12.77 12.03 12.42 * 17.52 | 1.06 1.03 n/a n/a
MultiSource/Applications/aha/aha | 0.0240 7104 0.0320 * 0.0280 | 2.23 2.85 3.00 * 3.11 | 0.78 0.74 n/a n/a
MultiSource/Applications/d/make_dparser | 1.0760 299996 0.9760 * 0.8080 | 0.03 * 0.03 * 0.93 | n/a - n/a n/a
MultiSource/Applications/hbd/hbd | 0.2480 82120 0.4080 * 0.3360 | 0.00 0.00 0.00 * 0.38 | - - n/a n/a
MultiSource/Applications/hexxagon/hexxagon | 0.1920 49820 0.2040 * 0.1960 | 12.04 9.00 9.92 * 9.66 | 1.34 1.21 n/a n/a
MultiSource/Applications/kimwitu++/kc | 5.3083 1725192 * * * | 0.00 * * * * | n/a n/a n/a n/a
MultiSource/Applications/lambda-0.1.3/lambda | 0.1960 67120 0.3360 * 0.2560 | 6.14 5.56 5.74 * 6.83 | 1.10 1.07 n/a n/a
MultiSource/Applications/lemon/lemon | 0.3360 104052 0.5560 * 0.0080 | 0.09 0.06 0.06 * 113.61 | - - n/a n/a
MultiSource/Applications/lua/lua | 1.5240 557040 2.2481 * 1.6441 | 28.54 * 31.44 * 33.39 | n/a 0.91 n/a n/a
MultiSource/Applications/minisat/minisat | 0.2120 45840 0.2040 * * | 12.74 * 12.36 * * | n/a 1.03 n/a n/a
MultiSource/Applications/obsequi/Obsequi | 0.3560 59808 0.2800 * 0.2840 | 2.72 * 2.76 * 3.18 | n/a 0.99 n/a n/a
MultiSource/Applications/oggenc/oggenc | 1.5600 803888 1.1920 * 0.9680 | 0.17 * 0.17 * 1.26 | n/a 1.00 n/a n/a
MultiSource/Applications/sgefa/sgefa | 0.0800 16476 0.0840 * 0.0840 | 0.79 0.83 0.84 * 0.97 | 0.95 0.94 n/a n/a
MultiSource/Applications/siod/siod | 0.7200 344048 1.8121 * 0.8000 | 3.69 3.87 3.71 * 4.73 | 0.95 0.99 n/a n/a
MultiSource/Applications/spiff/spiff | 0.1680 50964 0.2480 * * | 1.09 1.10 1.14 * * | 0.99 0.96 n/a n/a
MultiSource/Applications/sqlite3/sqlite3 | 3.9202 1133884 5.1443 * 3.6602 | 4.54 * 5.28 * 9.58 | n/a 0.86 n/a n/a
MultiSource/Applications/treecc/treecc | 0.7240 292592 1.2040 * 0.3400 | 0.00 0.00 0.00 * 0.37 | - - n/a n/a
MultiSource/Applications/viterbi/viterbi | 0.0320 5576 0.0240 * 0.0280 | 12.27 18.49 12.38 * 12.34 | 0.66 0.99 n/a n/a
MultiSource/Benchmarks/ASCI_Purple/SMG2000/smg2000 | 3.1521 463676 2.5521 * 1.9161 | 7.48 9.09 7.55 * 10.22 | 0.82 0.99 n/a n/a
MultiSource/Benchmarks/ASC_Sequoia/AMGmk/AMGmk | 0.0960 13992 0.0680 * 0.0600 | 22.98 31.13 22.41 * 22.35 | 0.74 1.03 n/a n/a
MultiSource/Benchmarks/ASC_Sequoia/CrystalMk/CrystalMk | 0.0400 8248 0.0280 * 0.0280 | 12.13 12.64 11.96 * 12.19 | 0.96 1.01 n/a n/a
MultiSource/Benchmarks/ASC_Sequoia/IRSmk/IRSmk | 0.0240 5592 0.0240 * 0.0240 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/BitBench/drop3/drop3 | 0.0120 3588 0.0120 * 0.0160 | 0.50 0.71 0.47 * 0.50 | 0.70 1.06 n/a n/a
MultiSource/Benchmarks/BitBench/five11/five11 | 0.0120 2724 0.0080 * 0.0080 | 2.47 2.49 2.43 * 2.43 | 0.99 1.02 n/a n/a
MultiSource/Benchmarks/BitBench/uudecode/uudecode | 0.0040 2864 0.0120 * 0.0080 | 0.12 0.14 0.13 * 0.15 | 0.86 0.92 n/a n/a
MultiSource/Benchmarks/BitBench/uuencode/uuencode | 0.0120 2728 0.0120 * 0.0120 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/Fhourstones-3.1/fhourstones3.1 | 0.0360 8072 0.0360 * 0.0360 | 2.03 1.93 1.85 * 1.91 | 1.05 1.10 n/a n/a
MultiSource/Benchmarks/Fhourstones/fhourstones | 0.0600 10820 0.0440 * 0.0520 | 1.83 1.85 1.82 * 1.99 | 0.99 1.01 n/a n/a
MultiSource/Benchmarks/FreeBench/analyzer/analyzer | 0.0440 10116 0.0480 * 0.0440 | 0.10 0.13 0.11 * 0.16 | 0.77 0.91 n/a n/a
MultiSource/Benchmarks/FreeBench/distray/distray | 0.0240 6944 0.0280 * 0.0320 | 0.25 0.30 0.25 * 0.29 | 0.83 1.00 n/a n/a
MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow | 0.0680 18880 0.0800 * 0.0720 | 0.34 0.37 0.37 * 0.46 | 0.92 0.92 n/a n/a
MultiSource/Benchmarks/FreeBench/mason/mason | 0.0160 6144 0.0200 * 0.0200 | 0.40 0.24 0.25 * 0.28 | 1.67 1.60 n/a n/a
MultiSource/Benchmarks/FreeBench/neural/neural | 0.0440 8772 0.0440 * 0.0480 | 0.26 0.31 0.23 * 0.29 | 0.84 1.13 n/a n/a
MultiSource/Benchmarks/FreeBench/pcompress2/pcompress2 | 0.0560 11040 0.0480 * 0.0520 | 0.29 0.30 0.26 * 0.33 | 0.97 1.12 n/a n/a
MultiSource/Benchmarks/FreeBench/pifft/pifft | 0.2600 58904 0.2800 * 0.2840 | 0.13 0.14 0.15 * 0.45 | 0.93 0.87 n/a n/a
MultiSource/Benchmarks/MallocBench/cfrac/cfrac | 0.2160 92136 0.3000 * 0.2800 | 1.78 * 1.70 * 1.96 | n/a 1.05 n/a n/a
MultiSource/Benchmarks/MallocBench/espresso/espresso | 1.4040 407284 1.9841 * 1.3600 | 0.58 0.58 0.55 * 2.00 | 1.00 1.05 n/a n/a
MultiSource/Benchmarks/MallocBench/gs/gs | 1.1200 376444 1.3960 * 0.6200 | 0.04 * 0.04 * 0.72 | n/a - n/a n/a
MultiSource/Benchmarks/McCat/01-qbsort/qbsort | 0.0120 3456 0.0160 * 0.0200 | 0.05 0.05 0.05 * 0.08 | - - n/a n/a
MultiSource/Benchmarks/McCat/03-testtrie/testtrie | 0.0160 3780 0.0200 * 0.0200 | 0.01 0.00 0.01 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/McCat/04-bisect/bisect | 0.0120 3984 0.0160 * 0.0200 | 0.17 0.25 0.19 * 0.21 | 0.68 0.89 n/a n/a
MultiSource/Benchmarks/McCat/05-eks/eks | 0.0880 7532 0.0360 * 0.0360 | 0.01 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/McCat/08-main/main | 0.0680 12004 0.0320 * 0.0360 | 0.05 0.03 0.02 * 0.06 | - - n/a n/a
MultiSource/Benchmarks/McCat/09-vor/vor | 0.0800 23092 0.0920 * 0.0920 | 0.13 0.14 0.13 * 0.25 | 0.93 1.00 n/a n/a
MultiSource/Benchmarks/McCat/12-IOtest/iotest | 0.0120 2576 0.0120 * 0.0120 | 0.36 0.24 0.24 * 0.27 | 1.50 1.50 n/a n/a
MultiSource/Benchmarks/McCat/15-trie/trie | 0.0040 3216 0.0160 * 0.0200 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/McCat/17-bintr/bintr | 0.0120 3668 0.0160 * 0.0240 | 0.10 0.10 0.10 * 0.14 | 1.00 1.00 n/a n/a
MultiSource/Benchmarks/McCat/18-imp/imp | 0.0720 21096 0.0920 * 0.1040 | 0.08 0.08 0.10 * 0.22 | - - n/a n/a
MultiSource/Benchmarks/MiBench/automotive-basicmath/automotive-basicmath | 0.0160 4808 0.0200 * 0.0280 | 0.55 0.57 0.53 * 0.60 | 0.96 1.04 n/a n/a
MultiSource/Benchmarks/MiBench/automotive-bitcount/automotive-bitcount | 0.0160 3532 0.0120 * 0.0080 | 0.12 0.16 0.14 * 0.15 | 0.75 0.86 n/a n/a
MultiSource/Benchmarks/MiBench/automotive-susan/automotive-susan | 0.2800 64100 0.2800 * 0.2680 | 0.05 0.08 0.06 * 0.35 | - - n/a n/a
MultiSource/Benchmarks/MiBench/consumer-jpeg/consumer-jpeg | 1.2880 201192 0.8120 * 0.4280 | 0.01 0.00 0.00 * 0.48 | - - n/a n/a
MultiSource/Benchmarks/MiBench/consumer-lame/consumer-lame | 1.3840 331160 1.1440 * 0.9400 | 0.35 * 0.33 * 1.34 | n/a 1.06 n/a n/a
MultiSource/Benchmarks/MiBench/consumer-typeset/consumer-typeset | 7.5284 1392340 5.9403 * 5.1323 | 0.21 * 0.21 * 5.60 | n/a 1.00 n/a n/a
MultiSource/Benchmarks/MiBench/network-dijkstra/network-dijkstra | 0.0120 3456 0.0160 * 0.0200 | 0.05 0.05 0.05 * 0.07 | - - n/a n/a
MultiSource/Benchmarks/MiBench/network-patricia/network-patricia | 0.0280 4268 0.0240 * 0.0240 | 0.16 0.17 0.16 * 0.20 | 0.94 1.00 n/a n/a
MultiSource/Benchmarks/MiBench/office-ispell/office-ispell | 0.5080 128824 0.6520 * 0.2000 | 0.00 0.00 0.00 * 0.20 | - - n/a n/a
MultiSource/Benchmarks/MiBench/office-stringsearch/office-stringsearch | 0.0200 13212 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/MiBench/security-blowfish/security-blowfish | 0.0960 31024 0.0920 * 0.0480 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/MiBench/security-rijndael/security-rijndael | 0.1280 51332 0.0800 * 0.0640 | 0.04 0.05 0.07 * 0.14 | - - n/a n/a
MultiSource/Benchmarks/MiBench/security-sha/security-sha | 0.0160 4764 0.0160 * 0.0160 | 0.01 0.03 0.02 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/MiBench/telecomm-CRC32/telecomm-CRC32 | 0.0040 3180 0.0080 * 0.0040 | 0.33 0.29 0.31 * 0.30 | 1.14 1.06 n/a n/a
MultiSource/Benchmarks/MiBench/telecomm-FFT/telecomm-fft | 0.0200 4852 0.0200 * 0.0240 | 0.08 0.06 0.06 * 0.09 | - - n/a n/a
MultiSource/Benchmarks/MiBench/telecomm-adpcm/telecomm-adpcm | 0.0080 2192 0.0040 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/MiBench/telecomm-gsm/telecomm-gsm | 0.3680 73804 0.2160 * 0.1480 | 0.22 0.23 0.22 * 0.38 | 0.96 1.00 n/a n/a
MultiSource/Benchmarks/NPB-serial/is/is | 0.0160 5108 0.0160 * 0.3240 | 10.75 11.07 10.63 * 11.42 | 0.97 1.01 n/a n/a
MultiSource/Benchmarks/Olden/bh/bh | 0.0960 15196 0.0760 * 0.0760 | 2.51 * 2.16 * 2.26 | n/a 1.16 n/a n/a
MultiSource/Benchmarks/Olden/bisort/bisort | 0.0080 3672 0.0160 * 0.0240 | 1.05 1.12 1.08 * 1.12 | 0.94 0.97 n/a n/a
MultiSource/Benchmarks/Olden/em3d/em3d | 0.0280 6424 0.0280 * 0.0320 | 3.50 4.86 3.42 * 3.43 | 0.72 1.02 n/a n/a
MultiSource/Benchmarks/Olden/health/health | 0.0280 7576 0.0280 * 0.0280 | 0.61 * 0.62 * 0.63 | n/a 0.98 n/a n/a
MultiSource/Benchmarks/Olden/mst/mst | 0.0240 4176 0.0160 * 0.0240 | 0.19 0.19 0.20 * 0.34 | 1.00 0.95 n/a n/a
MultiSource/Benchmarks/Olden/perimeter/perimeter | 0.0200 12280 0.0720 * 0.0640 | 0.38 0.36 0.36 * 0.42 | 1.06 1.06 n/a n/a
MultiSource/Benchmarks/Olden/power/power | 0.0320 8572 0.0280 * 0.0320 | 3.38 3.38 3.08 * 3.10 | 1.00 1.10 n/a n/a
MultiSource/Benchmarks/Olden/treeadd/treeadd | 0.0000 1812 0.0080 * 0.0080 | 7.07 0.39 0.38 * 0.40 | 18.13 18.61 n/a n/a
MultiSource/Benchmarks/Olden/tsp/tsp | 0.0200 6984 0.0280 * 0.0200 | 2.90 2.92 2.67 * 2.62 | 0.99 1.09 n/a n/a
MultiSource/Benchmarks/Olden/voronoi/voronoi | 0.0560 13420 0.0480 * 0.0520 | 0.46 0.48 0.45 * 0.52 | 0.96 1.02 n/a n/a
MultiSource/Benchmarks/OptimizerEval/optimizer-eval | 0.0680 28884 0.1080 * 0.1800 | 114.14 118.46 115.23 * 105.24 | 0.96 0.99 n/a n/a
MultiSource/Benchmarks/PAQ8p/paq8p | 0.7960 194020 * * * | 0.00 * * * * | n/a n/a n/a n/a
MultiSource/Benchmarks/Prolangs-C++/NP/np | 0.0040 1184 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/city/city | 0.1000 23800 0.0680 * 0.0560 | 0.01 0.01 0.00 * 0.07 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/deriv1/deriv1 | 0.0360 12984 0.0400 * 0.0320 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/deriv2/deriv2 | 0.0400 14516 0.0520 * 0.0360 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/employ/employ | 0.0760 21948 0.0840 * 0.0640 | 0.01 0.00 0.00 * 0.08 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/family/family | 0.0080 3392 0.0160 * 0.0160 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/fsm/fsm | 0.0160 1880 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/garage/garage | 0.0200 7424 0.0200 * 0.0240 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/life/life | 0.0240 6304 0.0280 * 0.0200 | 1.43 1.42 1.46 * 1.49 | 1.01 0.98 n/a n/a
MultiSource/Benchmarks/Prolangs-C++/objects/objects | 0.0280 9860 0.0360 * 0.0120 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/ocean/ocean | 0.0400 8856 0.0400 * 0.0280 | 0.14 0.15 0.15 * 0.19 | 0.93 0.93 n/a n/a
MultiSource/Benchmarks/Prolangs-C++/office/office | 0.0480 12968 0.0400 * 0.0320 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/primes/primes | 0.0080 1592 0.0080 * 0.0040 | 0.46 0.46 0.47 * 0.48 | 1.00 0.98 n/a n/a
MultiSource/Benchmarks/Prolangs-C++/shapes/shapes | 0.0400 16060 0.0480 * 0.0400 | 0.00 0.00 0.00 * 0.06 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/simul/simul | 0.0280 4164 0.0080 * 0.0080 | 0.01 0.01 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/trees/trees | 0.0360 11272 0.0480 * 0.0440 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C++/vcirc/vcirc | 0.0040 1804 0.0000 * 0.0080 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/TimberWolfMC/timberwolfmc | 1.8121 545152 2.7481 * 0.5480 | 0.00 0.00 0.00 * 0.58 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/agrep/agrep | 0.3400 90404 0.4320 * 0.1560 | 0.00 0.00 0.00 * 0.18 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/allroots/allroots | 0.0160 3512 0.0160 * 0.0200 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/archie-client/archie | 0.1680 47672 0.1840 * 0.0360 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/assembler/assembler | 0.1560 61488 0.3320 * 0.2600 | 0.00 0.00 0.00 * 0.28 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/bison/mybison | 0.3160 108708 0.9040 * 0.7640 | 0.00 0.00 0.00 * 0.80 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/cdecl/cdecl | 0.1040 48928 0.2880 * 0.3040 | 0.00 0.00 0.00 * 0.32 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/compiler/compiler | 0.0920 36336 0.2160 * 0.0400 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/fixoutput/fixoutput | 0.0120 5980 0.0360 * 0.0280 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/football/football | 0.3480 85220 0.4520 * 0.0280 | 0.00 0.00 0.00 * 0.04 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/gnugo/gnugo | 0.1040 35268 0.1680 * 0.2080 | 0.09 0.06 0.06 * 0.30 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/loader/loader | 0.0800 28112 0.1200 * 0.0920 | 0.00 0.00 0.00 * 0.09 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/plot2fig/plot2fig | 0.0440 14648 0.0800 * 0.0680 | 0.00 0.00 0.00 * 0.08 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/simulator/simulator | 0.2240 64272 0.2680 * 0.0360 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/unix-smail/unix-smail | 0.1040 39464 0.2280 * 0.1720 | 0.00 0.00 0.00 * 0.18 | - - n/a n/a
MultiSource/Benchmarks/Prolangs-C/unix-tbl/unix-tbl | 0.3000 75600 0.3880 * 0.0160 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
MultiSource/Benchmarks/Ptrdist/anagram/anagram | 0.0160 7644 0.0280 * 0.0320 | 1.33 1.18 1.32 * 1.38 | 1.13 1.01 n/a n/a
MultiSource/Benchmarks/Ptrdist/bc/bc | 0.3440 125596 0.6040 * 0.5960 | 0.67 0.67 0.68 * 1.30 | 1.00 0.99 n/a n/a
MultiSource/Benchmarks/Ptrdist/ft/ft | 0.0400 7152 0.0280 * 0.0320 | 1.57 1.66 1.57 * 1.71 | 0.95 1.00 n/a n/a
MultiSource/Benchmarks/Ptrdist/ks/ks | 0.0320 11892 0.0480 * 0.0520 | 2.13 2.23 2.34 * 2.29 | 0.96 0.91 n/a n/a
MultiSource/Benchmarks/Ptrdist/yacr2/yacr2 | 0.1760 48272 0.2560 * 0.2640 | 0.90 0.94 1.32 * 1.59 | 0.96 0.68 n/a n/a
MultiSource/Benchmarks/SciMark2-C/scimark2 | 0.0840 15428 0.0720 * 0.0760 | 27.89 * 28.38 * 28.59 | n/a 0.98 n/a n/a
MultiSource/Benchmarks/Trimaran/enc-3des/enc-3des | 0.1600 21512 0.0880 * 0.0920 | 2.32 2.20 2.21 * 2.32 | 1.05 1.05 n/a n/a
MultiSource/Benchmarks/Trimaran/enc-md5/enc-md5 | 0.0560 7660 0.0400 * 0.0400 | 2.34 2.18 2.10 * 2.15 | 1.07 1.11 n/a n/a
MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1 | 0.0200 3900 0.0120 * 0.0160 | 0.79 0.50 0.82 * 0.89 | 1.58 0.96 n/a n/a
MultiSource/Benchmarks/Trimaran/enc-rc4/enc-rc4 | 0.0160 2956 0.0120 * 0.0120 | 1.28 1.52 1.21 * 1.20 | 0.84 1.06 n/a n/a
MultiSource/Benchmarks/Trimaran/netbench-crc/netbench-crc | 0.0080 32656 0.0080 * 0.0120 | 1.11 1.09 1.07 * 1.09 | 1.02 1.04 n/a n/a
MultiSource/Benchmarks/Trimaran/netbench-url/netbench-url | 0.0239 40864 0.0400 * 0.0400 | 2.95 3.27 4.05 * 4.67 | 0.90 0.73 n/a n/a
MultiSource/Benchmarks/VersaBench/8b10b/8b10b | 0.0040 2168 0.0040 * 0.0080 | 9.09 7.13 5.20 * 5.12 | 1.27 1.75 n/a n/a
MultiSource/Benchmarks/VersaBench/beamformer/beamformer | 0.0280 5748 0.0200 * 0.0240 | 1.93 2.55 2.22 * 2.25 | 0.76 0.87 n/a n/a
MultiSource/Benchmarks/VersaBench/bmm/bmm | 0.0200 2924 0.0160 * 0.0240 | 2.54 2.71 2.47 * 2.52 | 0.94 1.03 n/a n/a
MultiSource/Benchmarks/VersaBench/dbms/dbms | 0.1000 36324 0.2000 * 0.1920 | 1.94 2.22 1.86 * 2.12 | 0.87 1.04 n/a n/a
MultiSource/Benchmarks/VersaBench/ecbdes/ecbdes | 0.0680 9772 0.0160 * 0.0160 | 3.01 2.87 2.87 * 2.88 | 1.05 1.05 n/a n/a
MultiSource/Benchmarks/llubenchmark/llu | 0.0160 3712 0.0160 * 0.0160 | 13.19 14.44 13.20 * 13.79 | 0.91 1.00 n/a n/a
MultiSource/Benchmarks/mafft/pairlocalalign | 3.8322 341756 1.7401 * * | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
MultiSource/Benchmarks/mediabench/adpcm/rawcaudio/rawcaudio | 0.0120 2324 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/mediabench/adpcm/rawdaudio/rawdaudio | 0.0080 2192 0.0080 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
MultiSource/Benchmarks/mediabench/g721/g721encode/encode | 0.0720 13112 0.0480 * 0.0360 | 0.06 0.06 0.08 * 0.12 | - - n/a n/a
MultiSource/Benchmarks/mediabench/gsm/toast/toast | 0.3440 73804 0.2200 * 0.1400 | 0.02 0.02 0.02 * 0.19 | - - n/a n/a
MultiSource/Benchmarks/mediabench/jpeg/jpeg-6a/cjpeg | 1.1800 170484 0.6280 * 0.3920 | 0.00 0.00 0.00 * 0.45 | - - n/a n/a
MultiSource/Benchmarks/mediabench/mpeg2/mpeg2dec/mpeg2decode | 0.4560 101604 0.4680 * 0.3800 | 0.02 0.02 0.02 * 0.43 | - - n/a n/a
MultiSource/Benchmarks/sim/sim | 0.0760 28120 0.1440 * 0.1400 | 5.51 5.67 5.39 * 5.63 | 0.97 1.02 n/a n/a
MultiSource/Benchmarks/tramp3d-v4/tramp3d-v4 | 7.8204 1966488 4.7722 * 4.4002 | 0.72 * 0.79 * 5.52 | n/a 0.91 n/a n/a
SingleSource/Benchmarks/Adobe-C++/functionobjects | 0.1760 35452 0.1320 * 0.1240 | 4.06 5.76 3.57 * 3.77 | 0.70 1.14 n/a n/a
SingleSource/Benchmarks/Adobe-C++/loop_unroll | 0.8840 318836 1.4480 * 1.5320 | 1.85 1.93 1.84 * 3.46 | 0.96 1.01 n/a n/a
SingleSource/Benchmarks/Adobe-C++/simple_types_constant_folding | 0.8240 185368 2.2161 * 2.1681 | 1.45 2.52 1.39 * 3.67 | 0.58 1.04 n/a n/a
SingleSource/Benchmarks/Adobe-C++/simple_types_loop_invariant | 0.5560 137288 1.0000 * 1.0080 | 4.18 4.92 3.82 * 4.91 | 0.85 1.09 n/a n/a
SingleSource/Benchmarks/Adobe-C++/stepanov_abstraction | 0.2600 37428 0.1240 * 0.1200 | 5.24 11.64 5.19 * 5.35 | 0.45 1.01 n/a n/a
SingleSource/Benchmarks/Adobe-C++/stepanov_vector | 0.2560 41136 0.1440 * 0.1440 | 3.08 7.11 3.03 * 3.21 | 0.43 1.02 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/fannkuch | 0.0120 2672 0.0080 * 0.0080 | 4.23 4.10 3.60 * 3.51 | 1.03 1.18 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/fasta | 0.0120 3020 0.0120 * 0.0080 | 1.30 1.68 1.31 * 1.31 | 0.77 0.99 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/n-body | 0.0120 3192 0.0120 * 0.0080 | 2.37 2.12 2.07 * 2.10 | 1.12 1.14 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/nsieve-bits | 0.0040 1120 0.0080 * 0.0080 | 1.68 1.73 1.56 * 1.56 | 0.97 1.08 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/partialsums | 0.0040 1660 0.0040 * 0.0040 | 1.19 1.18 1.22 * 1.21 | 1.01 0.98 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/puzzle | 0.0080 1264 0.0040 * 0.0040 | 0.58 0.99 0.56 * 0.57 | 0.59 1.04 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/recursive | 0.0080 3444 0.0200 * 0.0240 | 1.22 1.12 1.03 * 1.03 | 1.09 1.18 n/a n/a
SingleSource/Benchmarks/BenchmarkGame/spectral-norm | 0.0160 2792 0.0120 * 0.0120 | 3.08 3.09 2.07 * 2.10 | 1.00 1.49 n/a n/a
SingleSource/Benchmarks/CoyoteBench/almabench | 0.0160 5816 0.0120 * 0.0080 | 19.32 8.42 8.35 * 8.40 | 2.29 2.31 n/a n/a
SingleSource/Benchmarks/CoyoteBench/fftbench | 0.1040 22440 0.0840 * 0.0760 | 2.62 * 2.81 * 2.93 | n/a 0.93 n/a n/a
SingleSource/Benchmarks/CoyoteBench/huffbench | 0.0200 6616 0.0280 * 0.0280 | 18.83 21.93 18.74 * 19.01 | 0.86 1.00 n/a n/a
SingleSource/Benchmarks/CoyoteBench/lpbench | 0.0280 4408 0.0200 * 0.0160 | 14.19 14.30 14.09 * 13.99 | 0.99 1.01 n/a n/a
SingleSource/Benchmarks/Dhrystone/dry | 0.0120 1268 0.0080 * 0.0080 | 2.62 0.46 0.62 * 0.66 | 5.70 4.23 n/a n/a
SingleSource/Benchmarks/Dhrystone/fldry | 0.0120 1300 0.0040 * 0.0040 | 2.86 1.82 0.47 * 0.54 | 1.57 6.09 n/a n/a
SingleSource/Benchmarks/McGill/chomp | 0.0240 6140 0.0320 * 0.0360 | 1.35 0.99 1.35 * 1.13 | 1.36 1.00 n/a n/a
SingleSource/Benchmarks/McGill/exptree | 0.0200 4800 0.0240 * 0.0200 | 0.00 0.01 0.00 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/McGill/misr | 0.0120 2700 0.0120 * 0.0080 | 0.37 0.30 0.32 * 0.33 | 1.23 1.16 n/a n/a
SingleSource/Benchmarks/McGill/queens | 0.0120 3316 0.0160 * 0.0120 | 2.89 2.57 2.45 * 2.58 | 1.12 1.18 n/a n/a
SingleSource/Benchmarks/Misc-C++/bigfib | 0.2000 41088 0.1640 * 0.1400 | 0.61 * 0.62 * 0.77 | n/a 0.98 n/a n/a
SingleSource/Benchmarks/Misc-C++/mandel-text | 0.0040 1152 0.0040 * 0.0040 | 2.64 3.18 2.33 * 2.34 | 0.83 1.13 n/a n/a
SingleSource/Benchmarks/Misc-C++/oopack_v1p8 | 0.0280 9456 0.0320 * 0.0320 | 0.22 0.34 0.17 * 0.22 | 0.65 1.29 n/a n/a
SingleSource/Benchmarks/Misc-C++/ray | 0.0560 17280 0.0600 * 0.0480 | 6.83 8.25 5.10 * 5.22 | 0.83 1.34 n/a n/a
SingleSource/Benchmarks/Misc-C++/sphereflake | 0.0560 16904 0.0640 * 0.0600 | 3.44 6.99 3.35 * 3.47 | 0.49 1.03 n/a n/a
SingleSource/Benchmarks/Misc-C++/stepanov_container | 0.2520 46076 0.1600 * 0.1440 | 7.36 8.04 7.56 * 7.63 | 0.92 0.97 n/a n/a
SingleSource/Benchmarks/Misc-C++/stepanov_v1p2 | 0.0640 10008 0.0320 * 0.0320 | 8.20 15.87 8.19 * 8.23 | 0.52 1.00 n/a n/a
SingleSource/Benchmarks/Misc/ReedSolomon | 0.0600 10188 0.0480 * 0.0440 | 8.04 8.64 7.42 * 7.83 | 0.93 1.08 n/a n/a
SingleSource/Benchmarks/Misc/fbench | 0.0160 5364 0.0160 * 0.0240 | 2.19 2.26 2.56 * 2.63 | 0.97 0.86 n/a n/a
SingleSource/Benchmarks/Misc/ffbench | 0.0200 4340 0.0200 * 0.0240 | 0.98 1.09 1.11 * 1.12 | 0.90 0.88 n/a n/a
SingleSource/Benchmarks/Misc/flops | 0.0200 6552 0.0240 * 0.0280 | 16.69 13.00 15.86 * 16.00 | 1.28 1.05 n/a n/a
SingleSource/Benchmarks/Misc/flops-1 | 0.0000 1152 0.0040 * 0.0040 | 4.51 4.06 4.62 * 4.08 | 1.11 0.98 n/a n/a
SingleSource/Benchmarks/Misc/flops-2 | 0.0000 1252 0.0040 * 0.0040 | 2.22 2.51 2.22 * 2.23 | 0.88 1.00 n/a n/a
SingleSource/Benchmarks/Misc/flops-3 | 0.0000 1172 0.0040 * 0.0040 | 2.74 3.21 3.02 * 3.09 | 0.85 0.91 n/a n/a
SingleSource/Benchmarks/Misc/flops-4 | 0.0000 1152 0.0040 * 0.0000 | 4.06 1.35 1.39 * 1.40 | 3.01 2.92 n/a n/a
SingleSource/Benchmarks/Misc/flops-5 | 0.0000 1284 0.0040 * 0.0040 | 6.84 3.91 4.45 * 4.49 | 1.75 1.54 n/a n/a
SingleSource/Benchmarks/Misc/flops-6 | 0.0040 1284 0.0040 * 0.0040 | 5.10 4.85 5.10 * 5.12 | 1.05 1.00 n/a n/a
SingleSource/Benchmarks/Misc/flops-7 | 0.0000 1080 0.0040 * 0.0080 | 6.20 6.12 6.18 * 6.58 | 1.01 1.00 n/a n/a
SingleSource/Benchmarks/Misc/flops-8 | 0.0080 1288 0.0040 * 0.0000 | 5.41 3.94 2.35 * 2.36 | 1.37 2.30 n/a n/a
SingleSource/Benchmarks/Misc/himenobmtxpa | 0.0520 9672 0.0400 * 0.0480 | 1.45 2.73 2.07 * 2.17 | 0.53 0.70 n/a n/a
SingleSource/Benchmarks/Misc/mandel | 0.0040 1084 0.0040 * 0.0080 | 1.49 1.64 1.68 * 2.00 | 0.91 0.89 n/a n/a
SingleSource/Benchmarks/Misc/mandel-2 | 0.0040 1052 0.0040 * 0.0040 | 1.22 1.40 1.03 * 1.06 | 0.87 1.18 n/a n/a
SingleSource/Benchmarks/Misc/oourafft | 0.0800 13464 0.0520 * 0.0560 | 6.33 8.77 8.17 * 7.22 | 0.72 0.77 n/a n/a
SingleSource/Benchmarks/Misc/perlin | 0.0160 4476 0.0160 * 0.0200 | 5.96 6.72 6.83 * 6.87 | 0.89 0.87 n/a n/a
SingleSource/Benchmarks/Misc/pi | 0.0040 1152 0.0040 * 0.0040 | 1.00 0.94 1.01 * 0.95 | 1.06 0.99 n/a n/a
SingleSource/Benchmarks/Misc/richards_benchmark | 0.0160 5752 0.0160 * 0.0200 | 0.94 1.10 1.16 * 1.29 | 0.85 0.81 n/a n/a
SingleSource/Benchmarks/Misc/salsa20 | 0.0160 2700 0.0080 * 0.0120 | 10.57 9.35 9.65 * 9.76 | 1.13 1.10 n/a n/a
SingleSource/Benchmarks/Misc/whetstone | 0.0160 3356 0.0120 * 0.0160 | 2.47 2.53 2.50 * 2.52 | 0.98 0.99 n/a n/a
SingleSource/Benchmarks/Shootout-C++/ackermann | 0.0400 11116 0.0360 * 0.0360 | 1.86 1.04 1.15 * 1.10 | 1.79 1.62 n/a n/a
SingleSource/Benchmarks/Shootout-C++/ary | 0.0320 9192 0.0320 * 0.0240 | 0.14 0.13 0.13 * 0.18 | 1.08 1.08 n/a n/a
SingleSource/Benchmarks/Shootout-C++/ary2 | 0.0520 9808 0.0320 * 0.0320 | 0.14 0.14 0.13 * 0.17 | 1.00 1.08 n/a n/a
SingleSource/Benchmarks/Shootout-C++/ary3 | 0.0520 11680 0.0400 * 0.0360 | 5.38 5.39 5.31 * 5.33 | 1.00 1.01 n/a n/a
SingleSource/Benchmarks/Shootout-C++/except | 0.0320 11384 * * * | 0.28 * * * * | n/a n/a n/a n/a
SingleSource/Benchmarks/Shootout-C++/fibo | 0.0240 7952 0.0240 * 0.0240 | 2.56 0.57 0.54 * 0.61 | 4.49 4.74 n/a n/a
SingleSource/Benchmarks/Shootout-C++/hash | 0.0760 15128 0.0440 * 0.0560 | 0.78 0.79 0.78 * 0.95 | 0.99 1.00 n/a n/a
SingleSource/Benchmarks/Shootout-C++/hash2 | 0.1200 20148 0.0560 * 0.0680 | 4.77 4.78 4.68 * 4.78 | 1.00 1.02 n/a n/a
SingleSource/Benchmarks/Shootout-C++/heapsort | 0.0080 3016 0.0080 * 0.0039 | 6.97 6.14 5.46 * 5.44 | 1.14 1.28 n/a n/a
SingleSource/Benchmarks/Shootout-C++/hello | 0.0280 8392 0.0240 * 0.0240 | 0.00 0.00 0.01 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/Shootout-C++/lists | 0.0680 11472 0.0400 * 0.0320 | 6.12 6.16 6.18 * 6.46 | 0.99 0.99 n/a n/a
SingleSource/Benchmarks/Shootout-C++/lists1 | 0.0920 16308 0.0600 * 0.0640 | 0.50 0.39 0.40 * 0.64 | 1.28 1.25 n/a n/a
SingleSource/Benchmarks/Shootout-C++/matrix | 0.0400 12240 0.0440 * 0.0360 | 3.40 3.53 3.50 * 3.56 | 0.96 0.97 n/a n/a
SingleSource/Benchmarks/Shootout-C++/methcall | 0.0280 10872 0.0360 * 0.0240 | 6.00 6.45 5.73 * 7.88 | 0.93 1.05 n/a n/a
SingleSource/Benchmarks/Shootout-C++/moments | 0.0520 9092 0.0280 * 0.0240 | 0.20 0.22 0.22 * 0.25 | 0.91 0.91 n/a n/a
SingleSource/Benchmarks/Shootout-C++/nestedloop | 0.0360 8124 0.0240 * 0.0200 | 8.02 0.17 0.17 * 0.20 | 47.18 47.18 n/a n/a
SingleSource/Benchmarks/Shootout-C++/objinst | 0.0440 11068 0.0360 * 0.0360 | 5.73 5.87 5.69 * 5.72 | 0.98 1.01 n/a n/a
SingleSource/Benchmarks/Shootout-C++/random | 0.0320 7924 0.0240 * 0.0240 | 6.69 4.39 4.70 * 4.67 | 1.52 1.42 n/a n/a
SingleSource/Benchmarks/Shootout-C++/reversefile | 0.1040 17488 0.0560 * 0.0480 | 0.00 * 0.00 * 0.06 | n/a - n/a n/a
SingleSource/Benchmarks/Shootout-C++/sieve | 0.0560 12648 0.0440 * 0.0440 | 2.26 2.43 2.38 * 2.37 | 0.93 0.95 n/a n/a
SingleSource/Benchmarks/Shootout-C++/spellcheck | 0.1080 27360 0.0720 * 0.0480 | 0.00 0.00 0.00 * 0.05 | - - n/a n/a
SingleSource/Benchmarks/Shootout-C++/strcat | 0.0480 10628 0.0400 * 0.0360 | 0.15 * 0.10 * 0.15 | n/a 1.50 n/a n/a
SingleSource/Benchmarks/Shootout-C++/sumcol | 0.0400 9084 0.0240 * 0.0160 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/Shootout-C++/wc | 0.0360 11192 0.0400 * 0.0320 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/Shootout-C++/wordfreq | 0.0920 18464 0.0640 * 0.0240 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/Benchmarks/Shootout/ackermann | 0.0040 1180 0.0080 * 0.0080 | 0.00 0.00 0.01 * 0.02 | - - n/a n/a
SingleSource/Benchmarks/Shootout/ary3 | 0.0040 1140 0.0040 * 0.0080 | 5.48 6.28 5.51 * 5.47 | 0.87 0.99 n/a n/a
SingleSource/Benchmarks/Shootout/fib2 | 0.0040 964 0.0040 * 0.0040 | 2.60 0.72 0.56 * 0.57 | 3.61 4.64 n/a n/a
SingleSource/Benchmarks/Shootout/hash | 0.0160 2948 0.0160 * 0.0120 | 6.75 6.65 7.00 * 6.06 | 1.02 0.96 n/a n/a
SingleSource/Benchmarks/Shootout/heapsort | 0.0080 1424 0.0080 * 0.0040 | 6.32 6.08 6.50 * 5.49 | 1.04 0.97 n/a n/a
SingleSource/Benchmarks/Shootout/hello | 0.0000 576 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Benchmarks/Shootout/lists | 0.0200 3180 0.0120 * 0.0120 | 5.66 6.00 5.89 * 6.60 | 0.94 0.96 n/a n/a
SingleSource/Benchmarks/Shootout/matrix | 0.0160 4080 0.0120 * 0.0120 | 2.69 4.81 4.01 * 4.05 | 0.56 0.67 n/a n/a
SingleSource/Benchmarks/Shootout/methcall | 0.0040 1568 0.0080 * 0.0080 | 4.87 4.67 4.66 * 6.57 | 1.04 1.05 n/a n/a
SingleSource/Benchmarks/Shootout/nestedloop | 0.0080 1040 0.0040 * 0.0040 | 8.01 0.18 0.17 * 0.18 | 44.50 47.12 n/a n/a
SingleSource/Benchmarks/Shootout/objinst | 0.0040 1664 0.0080 * 0.0080 | 5.12 5.17 5.04 * 4.98 | 0.99 1.02 n/a n/a
SingleSource/Benchmarks/Shootout/random | 0.0040 840 0.0040 * 0.0040 | 4.42 4.43 4.70 * 4.70 | 1.00 0.94 n/a n/a
SingleSource/Benchmarks/Shootout/sieve | 0.0040 1264 0.0040 * 0.0040 | 7.83 7.76 6.30 * 6.52 | 1.01 1.24 n/a n/a
SingleSource/Benchmarks/Shootout/strcat | 0.0040 1316 0.0080 * 0.0080 | 0.17 0.17 0.17 * 0.18 | 1.00 1.00 n/a n/a
SingleSource/Benchmarks/Stanford/Bubblesort | 0.0080 1420 0.0080 * 0.0040 | 0.06 0.05 0.05 * 0.06 | - - n/a n/a
SingleSource/Benchmarks/Stanford/IntMM | 0.0120 1472 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Oscar | 0.0080 3008 0.0120 * 0.0120 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Perm | 0.0080 3124 0.0080 * 0.0120 | 0.02 0.03 0.04 * 0.05 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Puzzle | 0.0840 4720 0.0200 * 0.0240 | 0.17 0.22 0.18 * 0.21 | 0.77 0.94 n/a n/a
SingleSource/Benchmarks/Stanford/Queens | 0.0080 2232 0.0120 * 0.0120 | 0.03 0.04 0.04 * 0.06 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Quicksort | 0.0120 1688 0.0080 * 0.0080 | 0.05 0.04 0.04 * 0.05 | - - n/a n/a
SingleSource/Benchmarks/Stanford/RealMM | 0.0080 1504 0.0040 * 0.0080 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Towers | 0.0200 2432 0.0120 * 0.0120 | 0.01 0.02 0.02 * 0.04 | - - n/a n/a
SingleSource/Benchmarks/Stanford/Treesort | 0.0080 2248 0.0160 * 0.0080 | 0.09 0.09 0.09 * 0.11 | - - n/a n/a
SingleSource/Regression/C++/2003-05-14-array-init | 0.0000 584 0.0000 * 0.0000 | 0.00 0.01 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C++/2003-05-14-expr_stmt | 0.0000 484 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C++/2003-06-08-BaseType | 0.0040 496 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2003-06-08-VirtualFunctions | 0.0000 620 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2003-06-13-Crasher | 0.0000 456 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2003-08-20-EnumSizeProblem | 0.0000 456 0.0040 * 0.0000 | 0.00 0.00 0.01 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2003-09-29-NonPODsByValue | 0.0000 576 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/2008-01-29-ParamAliasesReturn | 0.0040 604 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/BuiltinTypeInfo | 0.0000 728 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/EH/ConditionalExpr | 0.0040 712 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C++/EH/ctor_dtor_count | 0.0040 1048 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/ctor_dtor_count-2 | 0.0000 1592 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/dead_try_block | 0.0040 568 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C++/EH/exception_spec_test | 0.0040 2464 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/function_try_block | 0.0080 2452 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/simple_rethrow | 0.0040 1444 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/simple_throw | 0.0000 956 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/EH/throw_rethrow_test | 0.0080 1792 * * * | 0.00 * * * * | n/a n/a n/a n/a
SingleSource/Regression/C++/global_ctor | 0.0040 1344 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/global_type | 0.0040 456 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/ofstream_ctor | 0.0320 9224 0.0280 * 0.0240 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/Regression/C++/pointer_member | 0.0000 660 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C++/pointer_method | 0.0040 664 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C++/short_circuit_dtor | 0.0040 644 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2003-05-14-initialize-string | 0.0000 680 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-05-21-BitfieldHandling | 0.0040 1152 0.0040 * 0.0040 | 0.00 * 0.00 * 0.00 | n/a - n/a n/a
SingleSource/Regression/C/2003-05-21-UnionBitfields | 0.0040 580 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-05-21-UnionTest | 0.0040 580 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2003-05-22-LocalTypeTest | 0.0040 624 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2003-05-22-VarSizeArray | 0.0000 580 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-05-23-TransparentUnion | 0.0000 576 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2003-06-16-InvalidInitializer | 0.0000 456 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2003-06-16-VolatileError | 0.0000 456 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2003-10-12-GlobalVarInitializers | 0.0040 664 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2004-02-03-AggregateCopy | 0.0000 588 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2004-03-15-IndirectGoto | 0.0040 860 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2004-08-12-InlinerAndAllocas | 0.0040 824 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/2005-05-06-LongLongSignedShift | 0.0000 608 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/2008-01-07-LongDouble | 0.0000 596 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/ConstructorDestructorAttributes | 0.0000 760 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/DuffsDevice | 0.0080 1084 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/Regression/C/PR1386 | 0.0000 588 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/PR491 | 0.0000 456 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/PR640 | 0.0080 2076 0.0080 * 0.0080 | 0.00 0.00 0.01 * 0.02 | - - n/a n/a
SingleSource/Regression/C/badidx | 0.0000 1004 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/bigstack | 0.0120 4116 0.0120 * 0.0080 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/Regression/C/callargs | 0.0000 928 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/casts | 0.0080 3596 0.0160 * 0.0160 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/Regression/C/globalrefs | 0.0000 932 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/matrixTranspose | 0.0120 1344 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/pointer_arithmetic | 0.0000 488 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/sumarray | 0.0040 948 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/sumarray2d | 0.0080 1080 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/Regression/C/sumarraymalloc | 0.0040 1164 0.0040 * 0.0120 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/test_indvars | 0.0080 1436 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/Regression/C/testtrace | 0.0080 1136 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-04-17-PrintfChar | 0.0000 576 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-ArgumentTest | 0.0000 624 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-CastTest | 0.0040 1504 0.0080 * 0.0080 | 0.00 0.01 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-CastTest1 | 0.0000 608 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-CastTest2 | 0.0040 728 0.0000 * 0.0000 | 0.01 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-CastTest3 | 0.0000 684 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-02-ManyArguments | 0.0000 696 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-05-03-NotTest | 0.0040 664 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2002-05-19-DivTest | 0.0000 688 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2002-08-02-CastTest | 0.0000 584 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-08-02-CastTest2 | 0.0000 608 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-08-19-CodegenBug | 0.0000 568 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-10-09-ArrayResolution | 0.0000 644 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-10-12-StructureArgs | 0.0000 636 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-10-12-StructureArgsSimple | 0.0000 604 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2002-10-13-BadLoad | 0.0000 572 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2002-12-13-MishaTest | 0.0040 584 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-04-22-Switch | 0.0000 736 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-05-02-DependentPHI | 0.0040 816 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-05-07-VarArgs | 0.0120 2828 0.0120 * 0.0120 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-05-12-MinIntProblem | 0.0000 568 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-05-14-AtExit | 0.0040 688 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-05-26-Shorts | 0.0000 2012 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-05-31-CastToBool | 0.0000 916 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-05-31-LongShifts | 0.0040 920 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-07-06-IntOverflow | 0.0000 812 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-07-08-BitOpsTest | 0.0000 592 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-07-09-LoadShorts | 0.0000 1520 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-07-09-SignedArgs | 0.0080 1672 0.0040 * 0.0080 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-07-10-SignConversions | 0.0040 792 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-08-05-CastFPToUint | 0.0000 720 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-08-11-VaListArg | 0.0040 3108 0.0160 * 0.0160 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-08-20-FoldBug | 0.0000 568 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2003-09-18-BitFieldTest | 0.0040 612 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-10-13-SwitchTest | 0.0000 652 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2003-10-29-ScalarReplBug | 0.0000 580 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2004-02-02-NegativeZero | 0.0040 640 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2004-06-20-StaticBitfieldInit | 0.0040 684 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2004-11-28-GlobalBoolLayout | 0.0000 880 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2005-05-11-Popcount-ffs-fls | 0.0120 2144 0.0080 * 0.0080 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/UnitTests/2005-05-12-Int64ToFP | 0.0000 684 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2005-05-13-SDivTwo | 0.0040 648 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2005-07-15-Bitfield-ABI | 0.0000 596 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2005-07-17-INT-To-FP | 0.0040 928 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2005-11-29-LongSwitch | 0.0000 584 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2006-01-23-UnionInit | 0.0080 2124 0.0080 * 0.0080 | 0.00 * 0.00 * 0.00 | n/a - n/a n/a
SingleSource/UnitTests/2006-01-29-SimpleIndirectCall | 0.0000 796 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2006-02-04-DivRem | 0.0000 672 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2006-12-01-float_varg | 0.0000 660 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2006-12-04-DynAllocAndRestore | 0.0040 480 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2006-12-07-Compare64BitConstant | 0.0000 592 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2006-12-11-LoadConstants | 0.0239 2704 0.0320 * 0.0280 | 0.00 0.00 0.00 * 0.03 | - - n/a n/a
SingleSource/UnitTests/2007-01-04-KNR-Args | 0.0000 668 0.0040 * 0.0040 | 0.01 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2007-03-02-VaCopy | 0.0000 944 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2007-04-10-BitfieldTest | 0.0000 604 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2007-04-25-weak | 0.0000 512 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2008-04-18-LoopBug | 0.0040 1052 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2008-04-20-LoopBug2 | 0.0040 1068 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/2008-07-13-InlineSetjmp | 0.0000 832 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/2009-04-16-BitfieldInitialization | 0.0000 1888 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/AtomicOps | 0.0000 812 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/FloatPrecision | 0.0000 616 0.0040 * 0.0040 | 0.01 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/cast | 0.0080 2560 0.0240 * 0.0240 | 0.02 0.02 0.01 * 0.04 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/cast-bug | 0.0000 628 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/cast2 | 0.0000 592 0.0000 * 0.0000 | 0.00 0.01 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/ccc | 0.0040 760 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/div | 0.0000 1340 0.0040 * 0.0040 | 0.00 0.01 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/factor | 0.0040 1008 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.02 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/rem | 0.0240 9136 0.0880 * 0.0880 | 0.00 0.00 0.00 * 0.09 | - - n/a n/a
SingleSource/UnitTests/SignlessTypes/shr | 0.0000 1448 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/StructModifyTest | 0.0040 688 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/TestLoop | 0.0040 680 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/Threads/tls | 0.0000 876 0.0000 * * | 0.00 0.00 0.00 * * | - - n/a n/a
SingleSource/UnitTests/Vector/SSE/sse.expandfft | 0.0240 6336 0.0240 * 0.0240 | 0.69 1.41 0.59 * 0.62 | 0.49 1.17 n/a n/a
SingleSource/UnitTests/Vector/SSE/sse.isamax | 0.0120 3156 0.0120 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/Vector/SSE/sse.shift | 0.0040 828 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/Vector/SSE/sse.stepfft | 0.0560 9860 0.0440 * 0.0440 | 0.69 1.37 0.63 * 0.68 | 0.50 1.10 n/a n/a
SingleSource/UnitTests/Vector/build | 0.0040 804 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/Vector/build2 | 0.0120 1144 0.0040 * 0.0040 | 1.54 1.54 2.04 * 2.03 | 1.00 0.75 n/a n/a
SingleSource/UnitTests/Vector/divides | 0.0000 656 0.0000 * 0.0000 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/Vector/multiplies | 0.0080 1652 0.0120 * 0.0120 | 1.26 1.24 3.29 * 3.29 | 1.02 0.38 n/a n/a
SingleSource/UnitTests/Vector/simple | 0.0040 1216 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/Vector/sumarray | 0.0040 940 0.0040 * 0.0000 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
SingleSource/UnitTests/Vector/sumarray-dbl | 0.0000 1004 0.0000 * 0.0040 | 0.00 0.00 0.00 * 0.00 | - - n/a n/a
SingleSource/UnitTests/printargs | 0.0000 760 0.0040 * 0.0040 | 0.00 0.00 0.00 * 0.01 | - - n/a n/a
llvm-svn: 77499
2009-07-29 20:10:24 +00:00
Bob Wilson
1024634df7
Fix the verifier to handle intrinsics with LLVMMatchType parameters, where
...
the return type of the intrinsic is not overloaded, i.e., where the type
being matched is some other parameter. The argument to LLVMMatchType is
an index into the list of overloaded types (ignoring the fixed types),
but VerifyIntrinsicPrototype is expecting its arguments for LLVMMatchType
parameters to be indices into the combined list of _all_ return values and
parameters, not just the overloaded ones.
This patch changes TableGen to keep track for each overloaded type of the
corresponding index into the list of return values and parameters. It
then generates the values expected by VerifyIntrinsicPrototype.
llvm-svn: 77467
2009-07-29 16:35:59 +00:00
Evan Cheng
8977f04b12
Revert AsmWriterEmitter.cpp to 74742. The recent changes are causing serious compile time regression.
...
llvm-svn: 77431
2009-07-29 05:06:11 +00:00
Daniel Dunbar
0033199c50
Match X86 register names to number.
...
llvm-svn: 77404
2009-07-29 00:02:19 +00:00
Owen Anderson
47db941fd3
Get rid of the Pass+Context magic.
...
llvm-svn: 76702
2009-07-22 00:24:57 +00:00
David Greene
5e165083a0
Make a bunch of changes suggested by Chris and others to improve
...
efficiency. Fix a few formatting bugs along the way.
llvm-svn: 76601
2009-07-21 18:16:24 +00:00
David Greene
40c68ad3bb
Re-apply 75490, 75806 and 76177 with fixes and tests. Efficiency comes
...
next.
llvm-svn: 76486
2009-07-20 22:02:59 +00:00
Evan Cheng
4e4eb0b00c
Restore AsmWriterEmitter.cpp back to 74742. The recent changes broke Thumb.
...
llvm-svn: 76398
2009-07-20 06:10:07 +00:00
Evan Cheng
0c317a99c4
Revert 76177 for now. It's messing up ARM asm printing. Also this significant debate about its efficiency.
...
llvm-svn: 76279
2009-07-18 01:43:53 +00:00
Daniel Dunbar
e2eec05e60
tblgen/AsmMatcher: Emit simple matcher for register names.
...
llvm-svn: 76212
2009-07-17 18:51:11 +00:00
David Greene
33d1e7db01
Add logic to align instruction operands to columns for pretty-printing.
...
No target uses this currently. This patch only adds the mechanism so
that local installations can choose to enable this.
llvm-svn: 76177
2009-07-17 14:24:46 +00:00
David Greene
11817374de
Get rid of postInstructionAction and call EmitComments directly.
...
llvm-svn: 75806
2009-07-15 18:24:03 +00:00
Dan Gohman
607818a2c1
Add a Force option to raw_fd_ostream to specify whether opening
...
an existing file is considered an error. Convert several tools
to use raw_fd_ostream instead of std::ostream, and to use this
new option instead of doing a manual check.
llvm-svn: 75801
2009-07-15 17:29:42 +00:00
Duncan Sands
9ad1594fe0
Remove the v3i32 and v3f32 value types: they are not
...
native for any supported targets.
llvm-svn: 75785
2009-07-15 15:28:52 +00:00
Bob Wilson
c6026b5198
Revert 75308.
...
llvm-svn: 75565
2009-07-14 00:16:03 +00:00
David Greene
de54478bf0
Add infrastructure to allow post instruction printing action triggers.
...
We'll eventually use this to print comments in asm files and do other
fun things.
This adds interfaces to the AsmPrinter and changes TableGen to invoke
the postInstructionAction when appropriate. It also add parameters to
TargetAsmInfo to control comment layout.
llvm-svn: 75490
2009-07-13 20:25:48 +00:00
Daniel Dunbar
d66cc5c781
Update CMakeLists.txt
...
llvm-svn: 75389
2009-07-11 21:53:14 +00:00
Daniel Dunbar
3085b57bb8
Stub out assembly matcher (.s -> MCInst) tblgen backend.
...
llvm-svn: 75378
2009-07-11 19:39:44 +00:00
Bob Wilson
73fd66c06b
Add new vector types for 192-bit, 348-bit and 512-bit sizes.
...
These are needed to represent ARM Neon struct datatypes containing 2, 3 or 4
separate vectors.
llvm-svn: 75308
2009-07-10 23:05:09 +00:00
Bob Wilson
bf8e4c1128
Refactor TableGen's llvm::getName to share code with llvm::getEnumName,
...
since names are the same for almost all the types.
llvm-svn: 75302
2009-07-10 22:25:24 +00:00
Owen Anderson
0504e0a222
Thread LLVMContext through MVT and related parts of SDISel.
...
llvm-svn: 75153
2009-07-09 17:57:24 +00:00
Torok Edwin
fa04002254
Convert more abort() calls to llvm_report_error().
...
Also remove trailing semicolon.
llvm-svn: 75027
2009-07-08 19:04:27 +00:00
Chris Lattner
ee3c74fba0
Add a new little "FileCheck" utility for regression testing.
...
llvm-svn: 75022
2009-07-08 18:44:05 +00:00
Mikhail Glushenkov
b0df5047e5
Add an 'init' option property.
...
Makes possible to provide default values for options defined in plugins (same as
cl::init).
llvm-svn: 74905
2009-07-07 16:08:41 +00:00
Mikhail Glushenkov
182512b403
Refactoring.
...
Make isList(), isSwitch() and isParameter() member functions of
OptionDescription.
llvm-svn: 74904
2009-07-07 16:08:11 +00:00
Mikhail Glushenkov
2de4161b23
Comment fix.
...
llvm-svn: 74903
2009-07-07 16:07:36 +00:00
Devang Patel
5832e7fd23
Add new ValueType for metadata.
...
llvm-svn: 74882
2009-07-06 23:44:32 +00:00
Daniel Dunbar
38a22bffdc
Replace std::iostreams with raw_ostream in TableGen.
...
- Sorry, I can't help myself.
- No intended functionality change.
llvm-svn: 74742
2009-07-03 00:10:29 +00:00
Chris Lattner
96122debc1
improve the APIs for creating struct and function types with no arguments/elements
...
to not have to create a temporary vector (in the API at least). Patch by Jay Foad!
llvm-svn: 74584
2009-07-01 04:13:31 +00:00
Daniel Dunbar
c9dc78ae40
Normalize SourceMgr messages.
...
- Don't print "Parsing" in front of every message.
- Take additional "type" argument which is prepended to the message (with ": ")
if given.
- Update clients to print errors (warnings) as:
<filename>:<line number>: error(warning): ...
llvm-svn: 74489
2009-06-30 00:49:23 +00:00
David Greene
371ca49bad
Remove commented code.
...
llvm-svn: 74471
2009-06-29 22:55:52 +00:00
David Greene
efa19619c8
Implement !cast<string>.
...
llvm-svn: 74444
2009-06-29 20:05:29 +00:00
David Greene
fd42c8a567
Improve TableGen error reporting.
...
llvm-svn: 74443
2009-06-29 19:59:52 +00:00
David Greene
f92ba97cda
Add more vector ValueTypes for AVX and other extended vector instruction
...
sets.
llvm-svn: 74427
2009-06-29 16:47:10 +00:00
Evan Cheng
34c8c7414f
Fix a CodeGenDAGPatterns bug. Check if top level predicates match when it's looking for duplicates.
...
llvm-svn: 74276
2009-06-26 05:59:16 +00:00
Mikhail Glushenkov
269884ead5
Better error message.
...
llvm-svn: 74193
2009-06-25 18:21:34 +00:00
Mikhail Glushenkov
248c414024
Make llvmc work again.
...
Chris recently broke llvmc with his Makefile changes (r75379). That patch made
the global change .o -> .a, which caused built-in llvmc plugins to stop working
since plugin initialization in llvmc is based on static variables not referenced
from the main executable. This patch implements auto-generated forced references
to the plugin libraries.
llvm-svn: 74000
2009-06-23 20:46:48 +00:00
Mikhail Glushenkov
ae3b1a8b55
A little bit nicer formatting.
...
llvm-svn: 73998
2009-06-23 20:45:31 +00:00
Mikhail Glushenkov
beecd51f95
Typo.
...
llvm-svn: 73997
2009-06-23 20:45:07 +00:00
Chris Lattner
2adc9e739c
rename SourceMgr::PrintError to PrintMessage.
...
llvm-svn: 73861
2009-06-21 21:22:11 +00:00
Chris Lattner
7d4c0d5fb3
simplify some error recovery stuff.
...
llvm-svn: 73856
2009-06-21 19:22:49 +00:00
Chris Lattner
7153bd8a29
prune #include, fix warning.
...
llvm-svn: 73847
2009-06-21 05:33:06 +00:00
Chris Lattner
976af622a9
move include searching logic from TGLexer to SourceMgr.
...
llvm-svn: 73845
2009-06-21 05:06:04 +00:00
Chris Lattner
fd255754af
Rename TGSourceMgr -> SourceMgr.
...
llvm-svn: 73844
2009-06-21 03:41:50 +00:00
Chris Lattner
526c8cb557
rename TGLoc -> SMLoc.
...
llvm-svn: 73843
2009-06-21 03:39:35 +00:00
Chris Lattner
1b30e1ac45
move TGSourceMgr class out of TableGen into libsupport.
...
llvm-svn: 73842
2009-06-21 03:36:54 +00:00
Chris Lattner
681f79124a
allow clients of the asmprinter to opt-out of the boilerplate with a #define.
...
llvm-svn: 73798
2009-06-19 23:57:53 +00:00
Nick Lewycky
d9d1f817a0
Fix grammaro, and bad indentation.
...
llvm-svn: 73602
2009-06-17 04:23:52 +00:00
Douglas Gregor
ec131d1fd7
Add output of the SFINAE bit for Clang's diagnostics
...
llvm-svn: 73331
2009-06-14 07:24:49 +00:00
Bill Wendling
e05336f80d
I'm going to assume that this was meant to be an assignment instead of a
...
computation that isn't used. Please correct this if it's wrong!
llvm-svn: 73139
2009-06-09 18:49:42 +00:00
David Greene
58a6b76cfd
Revert 73074 and 73099 because Windows doesn't have POSIX
...
regular expressions. We will add an OpenBSD implementation
and re-apply ASAP.
llvm-svn: 73138
2009-06-09 18:31:17 +00:00
David Greene
67c05bff31
Add a !patsubst operator. Use on string types.
...
llvm-svn: 73099
2009-06-08 23:05:37 +00:00
David Greene
8618f95caf
Make IntInits and ListInits typed. This helps deduce types of !if and
...
other operators. For the rare cases where a list type cannot be
deduced, provide a []<type> syntax, where <type> is the list element
type.
llvm-svn: 73078
2009-06-08 20:23:18 +00:00
David Greene
b035445537
Make !if short-circuit when possible.
...
llvm-svn: 73076
2009-06-08 19:16:56 +00:00
David Greene
07eba05a61
Add a !regmatch operator to do pattern matching in TableGen.
...
llvm-svn: 73074
2009-06-08 17:00:34 +00:00
Dale Johannesen
5234d3795f
Revert 72707 and 72709, for the moment.
...
llvm-svn: 72712
2009-06-02 03:12:52 +00:00
Dale Johannesen
0b8ca79253
Make the implicit inputs and outputs of target-independent
...
ADDC/ADDE use MVT::i1 (later, whatever it gets legalized to)
instead of MVT::Flag. Remove CARRY_FALSE in favor of 0; adjust
all target-independent code to use this format.
Most targets will still produce a Flag-setting target-dependent
version when selection is done. X86 is converted to use i32
instead, which means TableGen needs to produce different code
in xxxGenDAGISel.inc. This keys off the new supportsHasI1 bit
in xxxInstrInfo, currently set only for X86; in principle this
is temporary and should go away when all other targets have
been converted. All relevant X86 instruction patterns are
modified to represent setting and using EFLAGS explicitly. The
same can be done on other targets.
The immediate behavior change is that an ADC/ADD pair are no
longer tightly coupled in the X86 scheduler; they can be
separated by instructions that don't clobber the flags (MOV).
I will soon add some peephole optimizations based on using
other instructions that set the flags to feed into ADC.
llvm-svn: 72707
2009-06-01 23:27:20 +00:00
Anton Korobeynikov
08bf4c0f5a
Propagate CPU string out of SubtargetFeatures
...
llvm-svn: 72335
2009-05-23 19:50:50 +00:00
Oscar Fuentes
770c8e7927
CMake: Use libpthread in tblgen when needed. Updated list of source
...
files for PIC16 target.
llvm-svn: 72277
2009-05-22 20:55:15 +00:00
Dale Johannesen
4ff70e389e
TableGen for fast isel seems to assume an 'imm'
...
operand is the last in a pattern. There is no
reason this should be true (although apparently
it always is right now).
llvm-svn: 72232
2009-05-21 22:25:49 +00:00
Nick Lewycky
942982278c
Fix warning.
...
llvm-svn: 71834
2009-05-15 03:07:14 +00:00
Nick Lewycky
d449e7c8c6
Add extra parenthesis around || statements to pacify compiler.
...
Also fix up some 80col violations while I'm there.
llvm-svn: 71833
2009-05-15 03:03:14 +00:00
David Greene
3587eed2c4
Implement !if, analogous to $(if) in GNU make.
...
llvm-svn: 71815
2009-05-14 23:26:46 +00:00
David Greene
d571b3c94b
Graduate LLVM to the big leagues by embedding a LISP processor into TableGen.
...
Ok, not really, but do support some common LISP functions:
* car
* cdr
* null
llvm-svn: 71805
2009-05-14 22:38:31 +00:00
David Greene
e917fff30f
Implement a !foreach operator analogous to GNU make's $(foreach).
...
Use it on dags and lists like this:
class decls {
string name;
}
def Decls : decls;
class B<list<string> names> : A<!foreach(Decls.name, names, !strconcat(Decls.name, ", Sr."))>;
llvm-svn: 71803
2009-05-14 22:23:47 +00:00
David Greene
98ed3c7273
Implement a !subst operation simmilar to $(subst) in GNU make to do
...
def/var/string substitution on generic pattern templates. For example:
def Type;
def v4f32 : Type;
def TYPE : Type;
class GenType<Type t> {
let type = !(subst TYPE, v4f32, t);
}
def TheType : GenType<TYPE>;
llvm-svn: 71801
2009-05-14 21:54:42 +00:00
David Greene
e8f3b27e65
Implement !cast.
...
llvm-svn: 71794
2009-05-14 21:22:49 +00:00
David Greene
5d0c051e66
Operation Enhancements
...
Create an OpInit class to serve as a base for all operation Inits.
Move parsing of operation constructs to separate functions and reference
from multiple places.
Add some commented out new operations. Coming soon.
llvm-svn: 71789
2009-05-14 20:54:48 +00:00
David Greene
9d3febea6a
Fix PR4207.
...
If we're resolving a list element access and we're given a VarInit,
return a new VarListElementInit referencing the VarInit.
llvm-svn: 71787
2009-05-14 20:38:52 +00:00
Dale Johannesen
69ee5e4cfe
Slightly improve generated code in a degenerate case.
...
Should remove a warning from MSVC.
llvm-svn: 71603
2009-05-12 22:32:29 +00:00
Duncan Sands
af9eaa830a
Rename PaddedSize to AllocSize, in the hope that this
...
will make it more obvious what it represents, and stop
it being confused with the StoreSize.
llvm-svn: 71349
2009-05-09 07:06:46 +00:00
Chris Lattner
8bbd76b031
Change 'make install' to install tblgen, for better support of out-of-tree targets,
...
patch by Mikael Lepistö!
llvm-svn: 71226
2009-05-08 17:32:47 +00:00
Argyrios Kyrtzidis
58f3811300
Move the tablegen-produced DebugLoc handling into a AsmWriter::processDebugLoc function.
...
No functionality change.
llvm-svn: 71156
2009-05-07 13:55:51 +00:00
Mikhail Glushenkov
b43eb8200f
A better error message.
...
llvm-svn: 71068
2009-05-06 04:54:23 +00:00
Mikhail Glushenkov
6da4749ce6
The 'forward_as' property did not use its second argument.
...
See PR4159 for details. Patch by Martin Nowack!
llvm-svn: 71054
2009-05-06 01:41:19 +00:00
David Greene
44f9d7a8f0
Allow multiclass def names to contain "#NAME"" where TableGen replaces
...
#NAME# with the name of the defm instantiating the multiclass. This is
useful for AVX instruction naming where a "V" prefix is standard
throughout the ISA. For example:
multiclass SSE_AVX_Inst<...> {
def SS : Instr<...>;
def SD : Instr<...>;
def PS : Instr<...>;
def PD : Instr<...>;
def V#NAME#SS : Instr<...>;
def V#NAME#SD : Instr<...>;
def V#NAME#PS : Instr<...>;
def V#NAME#PD : Instr<...>;
}
defm ADD : SSE_AVX_Inst<...>;
Results in
ADDSS
ADDSD
ADDPS
ADDPD
VADDSS
VADDSD
VADDPS
VADDPD
llvm-svn: 70979
2009-05-05 16:28:25 +00:00
Mikhail Glushenkov
d953cd9401
Fix incorrect code generation with ENV.
...
See PR4157 for details. Patch by Martin Nowack!
llvm-svn: 70973
2009-05-05 12:34:34 +00:00
Dan Gohman
cfd6941cf9
Quotes are used for including llvm headers, rather than angles.
...
llvm-svn: 70879
2009-05-04 17:09:51 +00:00
Argyrios Kyrtzidis
9ae29b2d8f
-Remove the DwarfWriter::RecordSourceLine calls from the instruction selectors.
...
-Depend on DebugLocs for source line info.
(Comes with Regression-Be-Gone(tm))
llvm-svn: 70871
2009-05-04 16:23:49 +00:00
Argyrios Kyrtzidis
79be34012f
Revert r70803 for now, it causes a regression.
...
llvm-svn: 70811
2009-05-03 23:27:19 +00:00
Argyrios Kyrtzidis
ce7196b903
-Remove the DwarfWriter::RecordSourceLine calls from the instruction selectors.
...
-Depend on DebugLocs for source line info.
llvm-svn: 70803
2009-05-03 22:03:35 +00:00
Argyrios Kyrtzidis
a5037484a4
Make DebugLoc independent of DwarfWriter.
...
-Replace DebugLocTuple's Source ID with CompileUnit's GlobalVariable*
-Remove DwarfWriter::getOrCreateSourceID
-Make necessary changes for the above (fix callsites, etc.)
llvm-svn: 70520
2009-04-30 23:22:31 +00:00
Jakob Stoklund Olesen
c8124976af
Slightly change TableGen's definition of a register subclass.
...
A subclass is allowed to have a larger spill size than the superclass, and the
spill alignment must be a multiple of the superclass alignment. This causes
the following new subclass relations:
=== Alpha ===
F4RC -> F8RC
=== PPC ===
F4RC -> F8RC
=== SPU ===
R8C -> R16C -> R32C/R32FP -> R64C/R64FP -> GPRC/VECREG
=== X86 ===
FR32 -> FR64 -> VR128
RFP32 -> RFP64 -> RFP80
These subclass relations are consistent with the behaviour of -join-cross-class-copies.
llvm-svn: 70511
2009-04-30 21:22:44 +00:00
Bob Wilson
f71e656631
Rename the CurMultiClass formal parameter of TGParser::AddSubMultiClass
...
so that it doesn't shadow the instance variable of the same name.
Make the parameter names in method declarations match the definitions.
llvm-svn: 70502
2009-04-30 18:26:19 +00:00
Bob Wilson
92ab820f03
Remove unnecessary "class" keywords.
...
llvm-svn: 70499
2009-04-30 17:46:20 +00:00
Bob Wilson
56d8625492
Change forward declaration of MultiClass to use the "struct" keyword instead
...
of "class", so that it matches the subsequent definition.
llvm-svn: 70498
2009-04-30 17:35:11 +00:00
Bill Wendling
026e5d7667
Instead of passing in an unsigned value for the optimization level, use an enum,
...
which better identifies what the optimization is doing. And is more flexible for
future uses.
llvm-svn: 70440
2009-04-29 23:29:43 +00:00
Bill Wendling
084669a1c9
Second attempt:
...
Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.
Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'll change the JIT with a follow-up patch.
llvm-svn: 70343
2009-04-29 00:15:41 +00:00
Bob Wilson
3d948164f7
Fix trailing whitespace and 80-col. violations in recent TableGen changes.
...
llvm-svn: 70319
2009-04-28 19:41:44 +00:00
Bill Wendling
56f2987a87
r70270 isn't ready yet. Back this out. Sorry for the noise.
...
llvm-svn: 70275
2009-04-28 01:04:53 +00:00
Bill Wendling
d0ae15946c
Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
...
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.
Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'm not 100% sure if it's necessary to change it there...
llvm-svn: 70270
2009-04-28 00:21:31 +00:00
Nate Begeman
8d6d4b9289
2nd attempt, fixing SSE4.1 issues and implementing feedback from duncan.
...
PR2957
ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
as the shuffle mask. A value of -1 represents UNDEF.
In addition to eliminating the creation of illegal BUILD_VECTORS just to
represent shuffle masks, we are better about canonicalizing the shuffle mask,
resulting in substantially better code for some classes of shuffles.
llvm-svn: 70225
2009-04-27 18:41:29 +00:00
David Greene
7049e79e45
Fix multiclass inheritance to limit value resolution to new defs added
...
by base multiclasses. Do not attempt to alter defs from previous base
multiclasses. This fixes multiple multiclass inheritance.
llvm-svn: 69974
2009-04-24 16:55:41 +00:00
Rafael Espindola
b93db668b3
Revert 69952. Causes testsuite failures on linux x86-64.
...
llvm-svn: 69967
2009-04-24 12:40:33 +00:00
Nate Begeman
bb881d66f4
PR2957
...
ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
as the shuffle mask. A value of -1 represents UNDEF.
In addition to eliminating the creation of illegal BUILD_VECTORS just to
represent shuffle masks, we are better about canonicalizing the shuffle mask,
resulting in substantially better code for some classes of shuffles.
A clean up of x86 shuffle code, and some canonicalizing in DAGCombiner is next.
llvm-svn: 69952
2009-04-24 03:42:54 +00:00
David Greene
196ac3c69a
Make BinOps typed and require a type specifier for !nameconcat. This
...
allows binops to be used in typed contexts such as when passing
arguments to classes.
llvm-svn: 69921
2009-04-23 21:25:15 +00:00
David Greene
f00919a040
Allow defm to inherit from multiple multiclasses.
...
llvm-svn: 69832
2009-04-22 22:17:51 +00:00
David Greene
a9c6c5d39b
Implement !nameconcat to concatenate strings and look up the resulting
...
name in the symbol table, returning an object.
llvm-svn: 69822
2009-04-22 20:18:10 +00:00
David Greene
753ed8fd9c
Implement multiclass inheritance.
...
llvm-svn: 69810
2009-04-22 16:42:54 +00:00
Mikhail Glushenkov
c48ede23bd
Add some assertions.
...
Fixes segfaults in some corner cases.
llvm-svn: 69494
2009-04-19 00:22:35 +00:00
Bob Wilson
a4c2290e5f
Use CallConvLower.h and TableGen descriptions of the calling conventions
...
for ARM. Patch by Sandeep Patel.
llvm-svn: 69371
2009-04-17 19:07:39 +00:00
Bob Wilson
b8c370a8b5
Fix PR3994: LLVMMatchType arguments do not refer to absolute return value
...
and argument positions but only to the overloaded intrinsic parameters.
Keep a separate list of these overloaded parameters in CodeGenTarget.cpp
so they can be resolved easily. Remove assertions from IntrinsicEmitter.cpp:
they were harmless but confusing, and the assertions elsewhere in TableGen
will catch any incorrect values.
llvm-svn: 69316
2009-04-16 21:51:05 +00:00
Chris Lattner
cce520f884
prove diagnostic -> group mapping information.
...
llvm-svn: 69270
2009-04-16 05:52:18 +00:00
Chris Lattner
1e86593b6a
encode subgroups into the clang .inc file. -Wall now works!
...
llvm-svn: 69257
2009-04-16 03:16:12 +00:00
Chris Lattner
13507d6cba
start producing subgroup info.
...
llvm-svn: 69249
2009-04-16 00:53:25 +00:00
Chris Lattner
4816a3488f
make sure that empty diag groups get known by clang.
...
llvm-svn: 69235
2009-04-15 22:33:02 +00:00
Chris Lattner
bcba418569
implement support for writing out diagnostic group tables.
...
llvm-svn: 69219
2009-04-15 20:55:08 +00:00
Chris Lattner
e05d99f604
use UppercaseString instead of EmitAllCaps
...
llvm-svn: 69213
2009-04-15 20:16:12 +00:00
Chris Lattner
3983dfdc83
use escape string.
...
llvm-svn: 69212
2009-04-15 20:13:18 +00:00
Chris Lattner
c2ac800cd7
rename -gen-clang-diags-options -> -gen-clang-diag-groups
...
llvm-svn: 69208
2009-04-15 20:02:32 +00:00
Chris Lattner
06a7f37265
don't infer diag class from parenting relations, make it an explicit field
...
in the record.
llvm-svn: 69176
2009-04-15 16:55:46 +00:00
Chris Lattner
4e7b579ecc
include the default mapping in the clang diagnostic .inc files.
...
llvm-svn: 69173
2009-04-15 16:43:18 +00:00
Chris Lattner
3dfaeeaefc
minor cleanups
...
llvm-svn: 69152
2009-04-15 06:26:49 +00:00
Dan Gohman
6c1426308c
Rename COPY_TO_SUBCLASS to COPY_TO_REGCLASS, and generalize
...
it accordingly. Thanks to Jakob Stoklund Olesen for pointing
out how this might be useful.
llvm-svn: 68986
2009-04-13 21:06:25 +00:00
Dan Gohman
60a446ab02
Add a new TargetInstrInfo MachineInstr opcode, COPY_TO_SUBCLASS.
...
This will be used to replace things like X86's MOV32to32_.
Enhance ScheduleDAGSDNodesEmit to be more flexible and robust
in the presense of subregister superclasses and subclasses. It
can now cope with the definition of a virtual register being in
a subclass of a use.
Re-introduce the code for recording register superreg classes and
subreg classes. This is needed because when subreg extracts and
inserts get coalesced away, the virtual registers are left in
the correct subclass.
llvm-svn: 68961
2009-04-13 15:38:05 +00:00
Dan Gohman
e14b8d9853
Generalize getRegisterClassForRegister to handle registers
...
in multiple classes in the case that the classes are all
in subset/superset relations. This function is used by the
fast-isel emitter, which always wants the super-most set.
llvm-svn: 68957
2009-04-13 15:24:11 +00:00
Owen Anderson
5eb8d26f19
Give register alias checking the hash table treatment too.
...
llvm-svn: 68730
2009-04-09 22:19:30 +00:00
Owen Anderson
3a888f639e
Convert TargetRegisterInfo's super-register checking to use a pre-computed hash table just like subregister checking does.
...
llvm-svn: 68669
2009-04-09 03:50:16 +00:00
Chris Lattner
3a88fa0ff8
"This adds a getName() method to TargetRegisterClass, just like in TargetRegisterInfo.
...
This makes debugging register classes a bit easier."
Patch by Jakob Stoklund Olesen!
llvm-svn: 68400
2009-04-03 20:25:41 +00:00
Dan Gohman
b425feb2aa
Delete ISD::INSERT_SUBREG and ISD::EXTRACT_SUBREG, which are unused.
...
Note that these are distinct from TargetInstrInfo::INSERT_SUBREG
and TargetInstrInfo::EXTRACT_SUBREG, which are used.
llvm-svn: 68355
2009-04-03 00:25:26 +00:00
Ted Kremenek
061cf25072
Constify method to make VC++ happy. Patch by Brian Diekelman!
...
llvm-svn: 68222
2009-04-01 18:24:22 +00:00
Dan Gohman
90ea62cba6
Tidy up some comments.
...
llvm-svn: 68112
2009-03-31 16:48:35 +00:00
Dan Gohman
0837aa99ea
Add a comment.
...
llvm-svn: 68111
2009-03-31 16:46:45 +00:00
Jim Grosbach
975c1cb41a
fix a few spelling errors and typos
...
llvm-svn: 67758
2009-03-26 16:17:51 +00:00
Jim Grosbach
4bae1ac5e8
Use 'bool' for FoundRC
...
llvm-svn: 67750
2009-03-26 14:45:34 +00:00
Jim Grosbach
292ea55130
Modify getRegisterValueType() to allow for a register being in mutliple
...
register classes. Before, MVT::Other would be returned anytime a reg was
in multiple register classes. Now, MVT::Other is only returned if the types
for those register classes differ.
llvm-svn: 67714
2009-03-25 23:28:33 +00:00
Ted Kremenek
c8e54db801
Add sanity check in Clang TableGen backend to check if 'Component' is a string.
...
llvm-svn: 67565
2009-03-23 21:54:33 +00:00
Sebastian Redl
8d5baa09f8
Fix the Win32 VS2008 build:
...
- Make type declarations match the struct/class keyword of the definition.
- Move AddSignalHandler into the namespace where it belongs.
- Correctly call functions from template base.
- Some other small changes.
With this patch, LLVM and Clang should build properly and with far less noise under VS2008.
llvm-svn: 67347
2009-03-19 23:26:52 +00:00
Ted Kremenek
dd03b5bb63
Fix regression in 'tblgen -gen-clang-diags-defs': Emit the diagnostic kind instead of "DIAGNOSTICCONTROLLED".
...
llvm-svn: 67305
2009-03-19 17:18:09 +00:00
Nate Begeman
dbe3f77f5b
Add support to tablegen for naming the nodes themselves, not just the operands,
...
in selectiondag patterns. This is required for the upcoming shuffle_vector rewrite,
and as it turns out, cleans up a hack in the Alpha instruction info.
llvm-svn: 67286
2009-03-19 05:21:56 +00:00
Ted Kremenek
4724b8262f
tblgen -gen-clang-diags-options: Output OptionTable entries in lexicographic
...
order.
llvm-svn: 67244
2009-03-18 21:36:46 +00:00
Ted Kremenek
bf76c6d971
'tblgen -gen-clang-diags-options' now outputs the OptionTable:
...
static const WarningOption OptionTable[] = {
{"unused-macros", DIAGS(UnusedMacrosDiags)}
...
};
This table is not yet properly sorted.
llvm-svn: 67242
2009-03-18 21:28:47 +00:00
Ted Kremenek
4a330b7ec1
Add another Clang TableGen-backend (-gen-clang-diags-options) for emitting
...
declarations for controlling groups of warnings. Currently this transforms:
def UnusedMacrosDiags : Option<"unused-macros", [pp_macro_not_used]>;
into:
static const diag::kind UnusedMacrosDiags[] = { diag::pp_macro_not_used };
llvm-svn: 67239
2009-03-18 21:16:16 +00:00
Chris Lattner
0f6dc78cfe
include the null at the end of a memorybuffer as part of the buffer.
...
This allows tblgen to handle include "foo.td" when the quote is exactly
the last character in a file. rdar://6695728
llvm-svn: 67232
2009-03-18 20:36:45 +00:00
Douglas Gregor
9f20b83568
Add TGSourceMgr.cpp to CMake build, sort lines
...
llvm-svn: 67042
2009-03-16 17:04:14 +00:00
Ted Kremenek
9750429e61
Add (hidden) TableGen command option '-clang-component' which specifies the
...
component's warnings to process for '-gen-clang-diags-defs'.
Also, when the component is specified, generate a '#if' prologue at the top of
the generated .def file (to match the current files).
llvm-svn: 66975
2009-03-13 22:53:41 +00:00
Ted Kremenek
dee115697b
Add initial implementation of a TableGen backend for converting Clang-warnings
...
tablegen files to the original .def preprocessor include files. This is my first
TableGen backend; I don't claim that it is awesome.
llvm-svn: 66971
2009-03-13 22:21:17 +00:00
Ted Kremenek
58e32877f1
Further constify Record::isSubClassOf.
...
llvm-svn: 66970
2009-03-13 22:20:10 +00:00
Chris Lattner
8bd06d8e1b
Fix escaping in asm string literals correctly by having tblgen unescape
...
them, then the asmprinter emitter reescape them.
llvm-svn: 66958
2009-03-13 21:33:17 +00:00
Chris Lattner
a614ef2000
add a horrible hack to fix the build.
...
llvm-svn: 66957
2009-03-13 21:23:43 +00:00
Chris Lattner
1bd3674306
add support for a few simple escape characters in tblgen strings.
...
llvm-svn: 66949
2009-03-13 21:03:27 +00:00
Chris Lattner
ba42e49c14
add a new TGError class and use it to propagate location info with
...
errors when thrown. This gets us nice errors like this from tblgen:
CMOVL32rr: (set GR32:i32:$dst, (X86cmov GR32:$src1, GR32:$src2))
/Users/sabre/llvm/Debug/bin/tblgen: error:
Included from X86.td:116:
Parsing X86InstrInfo.td:922: In CMOVL32rr: X86cmov node requires exactly 4 operands!
def CMOVL32rr : I<0x4C, MRMSrcReg, // if <s, GR32 = GR32
^
instead of just:
CMOVL32rr: (set GR32:i32:$dst, (X86cmov GR32:$src1, GR32:$src2))
/Users/sabre/llvm/Debug/bin/tblgen: In CMOVL32rr: X86cmov node requires exactly 4 operands!
This is all I plan to do with this, but it should be easy enough to improve if anyone
cares (e.g. keeping more loc info in "dag" expr records in tblgen.
llvm-svn: 66898
2009-03-13 16:25:21 +00:00
Chris Lattner
bd9b9210c2
give each Record a location.
...
llvm-svn: 66897
2009-03-13 16:09:24 +00:00
Chris Lattner
87710ca527
make "locations" a class instead of a typedef.
...
llvm-svn: 66895
2009-03-13 16:01:53 +00:00
Argyrios Kyrtzidis
afc74e2326
Unbreak build, bring in std::string for GCC 4.3
...
llvm-svn: 66876
2009-03-13 08:12:13 +00:00
Evan Cheng
bd5616271b
Unbreak build.
...
llvm-svn: 66874
2009-03-13 07:41:30 +00:00
Chris Lattner
8db9bc7ee4
split buffer management and diagnostic printing out of the tblgen
...
lexer into its own TGSourceMgr class.
llvm-svn: 66873
2009-03-13 07:05:43 +00:00
Chris Lattner
be0d672ac4
implement support for C-style string literal concatenation in td files.
...
llvm-svn: 66663
2009-03-11 17:08:13 +00:00
Chris Lattner
e3fc2d13be
Change various llvm utilities to use PrettyStackTraceProgram in
...
their main routines. This makes the tools print their argc/argv
commands if they crash.
llvm-svn: 66248
2009-03-06 05:34:10 +00:00
Mikhail Glushenkov
f6281fb47c
'append_cmd' should split its argument.
...
Makes '(append_cmd "-foo a b c")' work.
llvm-svn: 65623
2009-02-27 06:46:55 +00:00
Chris Lattner
265fc59cb2
these utils don't need exports.
...
llvm-svn: 65559
2009-02-26 19:02:23 +00:00
Mon P Wang
b402493161
Added support to have TableGen provide information if an intrinsic (core
...
or target) can be overloaded or not.
llvm-svn: 65404
2009-02-24 23:17:49 +00:00
Bill Wendling
c5437ea429
Overhaul my earlier submission due to feedback. It's a large patch, but most of
...
them are generic changes.
- Use the "fast" flag that's already being passed into the asm printers instead
of shoving it into the DwarfWriter.
- Instead of calling "MI->getParent()->getParent()" for every MI, set the
machine function when calling "runOnMachineFunction" in the asm printers.
llvm-svn: 65379
2009-02-24 08:30:20 +00:00
Bill Wendling
786c5973f7
- Use the "Fast" flag instead of "OptimizeForSize" to determine whether to emit
...
a DBG_LABEL or not. We want to fall back to the original way of emitting debug
info when we're in -O0/-fast mode.
- Add plumbing in to pass the "Fast" flag to places that need it.
- XFAIL DebugInfo/deaddebuglabel.ll. This is finding 11 labels instead of 8. I
need to investigate still.
llvm-svn: 65367
2009-02-24 02:35:30 +00:00
Bill Wendling
4d38d7272e
We have logic in there to emit a default debugging label at the beginning of a
...
function. Emitting another label after the prologue messes up the debugging. We
are doing that because the first DebugLoc object it sees is different from the
previous, which was nothing. Check for this situation, and don't emit one if
it's the first.
llvm-svn: 65180
2009-02-20 22:19:20 +00:00
Bill Wendling
0a0987d198
Add an accessor method to DwarfWriter to tell of debugging info should be emitted.
...
llvm-svn: 65092
2009-02-20 00:44:43 +00:00
Bill Wendling
82d8f120ec
Print out a new label only if the debug location *tuple* is different. The debug
...
locations may change, but the tuples may be the same.
llvm-svn: 65039
2009-02-19 09:16:38 +00:00
Bill Wendling
13aada6fc4
Forgot to check that debug information is supported.
...
llvm-svn: 65034
2009-02-19 08:06:12 +00:00
Bill Wendling
0f4c581c4a
Put code that generates debug labels into TableGen so that it can be used by
...
everyone.
llvm-svn: 64978
2009-02-18 23:12:06 +00:00
Dan Gohman
8cab4c44bb
Add explicit keywords.
...
llvm-svn: 64915
2009-02-18 16:37:45 +00:00
Cedric Venet
d1e179d992
Unbreak the build on win32.
...
Cleanup some warning.
Remark: when struct/class are declared differently than they are defined, this make problem for VC++ since it seems to mangle class differently that struct. These error are very hard to understand and find. So please, try to keep your definition/declaration in sync.
Only tested with VS2008. hope it does not break anything. feel free to revert.
llvm-svn: 64554
2009-02-14 16:06:42 +00:00
Duncan Sands
73247d2edc
Generalize some alias analysis logic from atomic
...
intrinsics to any IntrWriteArgMem intrinsics.
llvm-svn: 64551
2009-02-14 10:56:35 +00:00
Evan Cheng
b9946d9841
Eliminate a 'control reaches end of non-void function' warning.
...
llvm-svn: 64111
2009-02-09 03:07:24 +00:00
Dale Johannesen
9f3f72f144
Get rid of one more non-DebugLoc getNode and
...
its corresponding getTargetNode. Lots of
caller changes.
llvm-svn: 63904
2009-02-06 01:31:28 +00:00
Dale Johannesen
f80493bbfd
Remove a non-DebugLoc version of getNode.
...
llvm-svn: 63889
2009-02-05 22:07:54 +00:00
Dale Johannesen
b842d529a3
Reapply 63765. Patches for clang and llvm-gcc to follow.
...
llvm-svn: 63812
2009-02-05 01:49:45 +00:00
Dale Johannesen
f08a47bb70
Remove non-DebugLoc forms of CopyToReg and CopyFromReg.
...
Adjust callers.
llvm-svn: 63789
2009-02-04 23:02:30 +00:00
Dale Johannesen
ae616c2c61
Reverting 63765. This broke the build of both clang
...
and llvm-gcc.
llvm-svn: 63786
2009-02-04 22:47:25 +00:00
Nate Begeman
6ae3aa83d0
New feature: add support for target intrinsics being defined in the
...
target directories themselves. This also means that VMCore no longer
needs to know about every target's list of intrinsics. Future work
will include converting the PowerPC target to this interface as an
example implementation.
llvm-svn: 63765
2009-02-04 19:47:21 +00:00
Duncan Sands
3ed768868d
Fix PR3453 and probably a bunch of other potential
...
crashes or wrong code with codegen of large integers:
eliminate the legacy getIntegerVTBitMask and
getIntegerVTSignBit methods, which returned their
value as a uint64_t, so couldn't handle huge types.
llvm-svn: 63494
2009-02-01 18:06:53 +00:00
Bill Wendling
33dddf3235
Explain why this is here.
...
llvm-svn: 63342
2009-01-29 23:19:43 +00:00
Bill Wendling
50338007b9
- Add DebugLoc to getTargetNode().
...
- Modify TableGen to add the DebugLoc when calling getTargetNode.
(The light-weight wrappers are only temporary. The non-DebugLoc version will be
removed once the whole debug info stuff is finished with.)
llvm-svn: 63273
2009-01-29 05:27:31 +00:00
Dan Gohman
84f0165273
Move the code that starts printing the Select_* functions
...
after the code that sorts the patterns. This doesn't
affect the output, but it makes the code a little easier
to follow.
llvm-svn: 63265
2009-01-29 01:37:18 +00:00
Mikhail Glushenkov
02b47b5e7a
Typo.
...
llvm-svn: 63174
2009-01-28 03:47:58 +00:00
Mikhail Glushenkov
2115d09a10
Add three new option properties.
...
Adds new option properties 'multi_val', 'one_or_more' and 'zero_or_one'.
llvm-svn: 63172
2009-01-28 03:47:20 +00:00
Evan Cheng
4a0bf66eb8
Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead.
...
llvm-svn: 62762
2009-01-22 09:10:11 +00:00
Chris Lattner
9fc809e980
Make tblgen more portable, allowing it to build with ICC.
...
Patch by Robert Zeh!
llvm-svn: 62750
2009-01-22 05:10:16 +00:00
Mikhail Glushenkov
fbc89cecad
Change the hook API back to prevent memory leaks.
...
llvm-svn: 62686
2009-01-21 13:04:33 +00:00
Mikhail Glushenkov
bf9716e15d
Allow hooks with arguments.
...
llvm-svn: 62685
2009-01-21 13:04:00 +00:00
Dan Gohman
3289983d69
Avoid triggering an assertion failure when an instruction pattern
...
is a leaf node. Patch by Brandner!
llvm-svn: 62361
2009-01-16 21:30:55 +00:00
Dan Gohman
3e35fe8968
Add support for instructions with multiple ComplexPatterns, by
...
adding more information to the temporary variables names so that
they don't conflict.
llvm-svn: 62296
2009-01-16 02:05:52 +00:00
Duncan Sands
dc020f9c3c
Rename getABITypeSize to getTypePaddedSize, as
...
suggested by Chris.
llvm-svn: 62099
2009-01-12 20:38:59 +00:00
Chris Lattner
2089cd09ba
make tblgen autogenerate the nocapture intrinsics for
...
llvm.memcpy/memset/memmove. This allows removal of some
hackish code from basicaa.
llvm-svn: 62071
2009-01-12 02:41:37 +00:00
Chris Lattner
9d0a8770bd
add scaffolding to emit argument attributes. No functionality
...
change.
llvm-svn: 62067
2009-01-12 01:27:55 +00:00
Chris Lattner
49b7ee1b50
make tblgen emit the entire Intrinsic::getAttributes method,
...
not a random piece of it. No functionality change.
llvm-svn: 62066
2009-01-12 01:18:58 +00:00
Chris Lattner
9a3113aeb8
add nocapture attribute to llvm.mem* intrinsics and have tblgen
...
parse them. tblgen doesn't yet do anything with this info though.
llvm-svn: 62065
2009-01-12 01:12:03 +00:00
Bob Wilson
f76486ac8a
Improve support for type-generic vector intrinsics by teaching TableGen how
...
to handle LLVMMatchType intrinsic parameters, and by adding new subclasses
of LLVMMatchType to match vector types with integral elements that are
either twice as wide or half as wide as the elements of the matched type.
llvm-svn: 61834
2009-01-07 00:09:01 +00:00
Dan Gohman
49c42d5f57
Delete an unused variable and simplify the code.
...
llvm-svn: 61732
2009-01-05 19:31:28 +00:00
Bob Wilson
c9e772efc2
Handle iAny and fAny types in TreePatternNode::UpdateNodeType.
...
llvm-svn: 61713
2009-01-05 17:52:54 +00:00
Bob Wilson
1b97f3fcea
Fix spelling in some comments.
...
llvm-svn: 61702
2009-01-05 17:23:09 +00:00
Dan Gohman
f1fb65c747
Use dyn_cast intead of isa + cast in the generated DAGISel code. This
...
reduces the amount of code slightly when assertions are enabled.
llvm-svn: 61249
2008-12-19 18:13:39 +00:00
Mon P Wang
a501640ffa
Added support for vector widening.
...
llvm-svn: 61209
2008-12-18 20:03:17 +00:00
Mikhail Glushenkov
cf029824e1
Fix typo in error message.
...
llvm-svn: 61191
2008-12-18 04:06:58 +00:00
Mikhail Glushenkov
5932d8c986
Some enhancements for the 'case' expression.
...
Add (error) and (empty).
llvm-svn: 61117
2008-12-17 02:47:01 +00:00
Mikhail Glushenkov
e30a2820f6
Put Edge* classes into anonymous namespace.
...
Prevents conflicts between plugins.
llvm-svn: 60871
2008-12-11 10:34:18 +00:00
Mikhail Glushenkov
7f1bef5a55
Make 'extern' an option property.
...
Makes (forward) work better.
llvm-svn: 60667
2008-12-07 16:47:12 +00:00
Mikhail Glushenkov
4cc945da6e
Better error message.
...
llvm-svn: 60664
2008-12-07 16:45:12 +00:00
Mikhail Glushenkov
395cb25ac7
Re-apply Cedric's changes.
...
Use B instead of Beg (for consistency), but NodeA and NodeB instead of A
and B.
llvm-svn: 60663
2008-12-07 16:44:47 +00:00
Mikhail Glushenkov
0d88271490
Try to guess when the auto-generated cl::Sink option should be marked 'extern'.
...
This would be much easier to do if the CommandLine library didn't use
global state. Global state is evil.
llvm-svn: 60659
2008-12-07 16:42:47 +00:00
Mikhail Glushenkov
35a46f808b
Add a (progn)-like construct for (actions). Implemented as a DAG list.
...
llvm-svn: 60658
2008-12-07 16:42:22 +00:00
Mikhail Glushenkov
85467c71d2
Use (actions) instead of option properties, support external options.
...
Also includes a major refactoring. See documentation for more
information.
llvm-svn: 60656
2008-12-07 16:41:11 +00:00
Cedric Venet
af333378c9
The use of the construct:
...
for(Type1 B = ...;;) { Type2 B ; ... }
is bad: code is hard to read and VS VS don't like it (it ignore the second declaration of B).
This patch fix the problem in tablegen. Please don't write code like this.
llvm-svn: 60590
2008-12-05 13:37:30 +00:00
Dan Gohman
69cc2cbbff
Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning.
...
llvm-svn: 60487
2008-12-03 18:15:48 +00:00
Dan Gohman
cc78cdf275
Mark x86's V_SET0 and V_SETALLONES with isSimpleLoad, and teach X86's
...
foldMemoryOperand how to "fold" them, by converting them into constant-pool
loads. When they aren't folded, they use xorps/cmpeqd, but for example when
register pressure is high, they may now be folded as memory operands, which
reduces register pressure.
Also, mark V_SET0 isAsCheapAsAMove so that two-address-elimination will
remat it instead of copying zeros around (V_SETALLONES was already marked).
llvm-svn: 60461
2008-12-03 05:21:24 +00:00
Dan Gohman
ae3ba45eb2
Add a sanity-check to tablegen to catch the case where isSimpleLoad
...
is set but mayLoad is not set. Fix all the problems this turned up.
Change code to not use isSimpleLoad instead of mayLoad unless it
really wants isSimpleLoad.
llvm-svn: 60459
2008-12-03 02:30:17 +00:00
Mikhail Glushenkov
cc2d0b2c4c
Support multiple compilation graph definitions. Not terribly useful, but makes the code more generic.
...
llvm-svn: 60199
2008-11-28 00:13:47 +00:00
Mikhail Glushenkov
3bb3da6f4c
Add 'hidden' and 'really_hidden' option properties.
...
llvm-svn: 60198
2008-11-28 00:13:25 +00:00
Evan Cheng
83bdb38965
On x86 favors folding short immediate into some arithmetic operations (e.g. add, and, xor, etc.) because materializing an immediate in a register is expensive in turns of code size.
...
e.g.
movl 4(%esp), %eax
addl $4, %eax
is 2 bytes shorter than
movl $4, %eax
addl 4(%esp), %eax
llvm-svn: 60139
2008-11-27 00:49:46 +00:00
Mikhail Glushenkov
3ac10202c0
Small fix: the error message was incorrect in some cases.
...
llvm-svn: 60099
2008-11-26 10:55:45 +00:00
Mikhail Glushenkov
20313c954e
Support dependencies between plugins by priority-sorting.
...
llvm-svn: 59449
2008-11-17 17:30:25 +00:00
Mikhail Glushenkov
7549d568d5
Filter ToolPropertiesList to exclude all Tools not mentioned in the compilation graph.
...
llvm-svn: 59448
2008-11-17 17:29:42 +00:00
Mikhail Glushenkov
faae122e07
Add a layer of indirection to make plugins more flexible.
...
Use strings instead of TableGen defs in the compilation graph
definition. Makes it easier for the plugins to modify an existing graph.
llvm-svn: 59447
2008-11-17 17:29:18 +00:00
Bill Wendling
c35325c698
Fix to record comparator to make it work for return values > 1.
...
llvm-svn: 59242
2008-11-13 12:03:00 +00:00
Bill Wendling
3d2667c8f3
Put comma in correct place for call to StructType::get
...
llvm-svn: 59241
2008-11-13 10:18:35 +00:00
Bill Wendling
9182147f17
Modify the intrinsics pattern to separate out the "return" types from the
...
"parameter" types. An intrinsic can now return a multiple return values like
this:
def add_with_overflow : Intrinsic<[llvm_i32_ty, llvm_i1_ty],
[LLVMMatchType<0>, LLVMMatchType<0>]>;
llvm-svn: 59237
2008-11-13 09:08:33 +00:00
Mikhail Glushenkov
a2909684b6
Check the return value of std::getenv.
...
When constructing std::strings from C strings, we should check the input
value to be not NULL so that the std::string constructor does not
segfault.
Fixes #3047 .
llvm-svn: 59131
2008-11-12 12:41:18 +00:00
Mikhail Glushenkov
1cb041242f
Add a bit of lazy evaluation to PopulateCompilationGraph().
...
Only the tools that are mentioned in the compilation graph definition
are now inserted by PopulateCompilationGraph(). This should cut down
plugin loading time a little.
llvm-svn: 59097
2008-11-12 00:05:17 +00:00
Mikhail Glushenkov
c1e7dbb1f7
Some cosmetic changes.
...
llvm-svn: 59096
2008-11-12 00:04:46 +00:00
Mikhail Glushenkov
f5a294d08d
Allow $CALL and $ENV in command names. Fixes #3025 .
...
llvm-svn: 58922
2008-11-08 19:43:32 +00:00
Anton Korobeynikov
9278247502
Properly escape dashes in TableGen's LLVMC2 emitter.
...
Patch by Patrick Walton!
llvm-svn: 58901
2008-11-08 10:16:21 +00:00
Dan Gohman
cc0d2cfa01
Make tablegen print out a nice error message for a const char*
...
exception, like it does for a std::string exception.
llvm-svn: 58865
2008-11-07 21:01:13 +00:00
Dan Gohman
ce2417f4e1
Use an assert to check that SelectCode isn't called on
...
nodes that are already selected.
llvm-svn: 58763
2008-11-05 18:30:52 +00:00
Dan Gohman
f14b77ebf1
Eliminate the ISel priority queue, which used the topological order for a
...
priority function. Instead, just iterate over the AllNodes list, which is
already in topological order. This eliminates a fair amount of bookkeeping,
and speeds up the isel phase by about 15% on many testcases.
The impact on most targets is that AddToISelQueue calls can be simply removed.
In the x86 target, there are two additional notable changes.
The rule-bending AND+SHIFT optimization in MatchAddress that creates new
pre-isel nodes during isel is now a little more verbose, but more robust.
Instead of either creating an invalid DAG or creating an invalid topological
sort, as it has historically done, it can now just insert the new nodes into
the node list at a position where they will be consistent with the topological
ordering.
Also, the address-matching code has logic that checked to see if a node was
"already selected". However, when a node is selected, it has all its uses
taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any
further visits from MatchAddress. This code is now removed.
llvm-svn: 58748
2008-11-05 04:14:16 +00:00
Dan Gohman
daca2240b1
Give tablegen's Type a destructor, to suppress spurious
...
"Type has virtual functions but non-virtual destructor"
warnings.
llvm-svn: 58710
2008-11-04 18:09:07 +00:00
Dan Gohman
ade09cd9d3
Add some asserts to verify MVT invariant assumptions.
...
llvm-svn: 58701
2008-11-04 16:03:56 +00:00
Dan Gohman
d7546abb8a
Change how extended types are represented in MVTs. Instead of fiddling
...
bits, use a union of a SimpleValueType enum and a regular Type*.
This increases the size of MVT on 64-bit hosts from 32 bits to 64 bits.
In most cases, this doesn't add significant overhead. There are places
in codegen that use arrays of MVTs, so these are now larger, but
they're small in common cases.
This eliminates restrictions on the size of integer types and vector
types that can be represented in codegen. As the included testcase
demonstrates, it's now possible to codegen very large add operations.
There are still some complications with using very large types. PR2880
is still open so they can't be used as return values on normal targets,
there are no libcalls defined for very large integers so operations
like multiply and divide aren't supported.
This also introduces a minimal tablgen Type library, capable of
handling IntegerType and VectorType. This will allow parts of
TableGen that don't depend on using SimpleValueType values to handle
arbitrary integer and vector types.
llvm-svn: 58623
2008-11-03 17:56:27 +00:00
David Greene
ce2a938186
Have TableGen emit setSubgraphColor calls under control of a -gen-debug
...
flag. Then in a debugger developers can set breakpoints at these calls
to see waht is about to be selected and what the resulting subgraph
looks like. This really helps when debugging instruction selection.
llvm-svn: 58278
2008-10-27 21:56:29 +00:00
Cedric Venet
4e6ad3c12b
Remove tabs from my previous commit.
...
llvm-svn: 58263
2008-10-27 19:21:35 +00:00
Matthijs Kooijman
d470f73e2c
Remove redundant word in tblgen error message.
...
llvm-svn: 58250
2008-10-27 15:59:43 +00:00
Cedric Venet
10a11f033c
Add a default constructor to AsmWriterOperand to make VS2008sp1 happy. (AsmWriterOperand is used in a std::pair, and VS need to generate the default constructor of this pair).
...
llvm-svn: 58185
2008-10-26 15:40:44 +00:00
Argyrios Kyrtzidis
9e50bff478
Unbreak LLVM on the MSVC compiler:
...
-Bring in int64_t for TableGen/Record.h and TableGen/TGLexer.h
-Define strtoull
llvm-svn: 57970
2008-10-22 09:54:13 +00:00
Evan Cheng
010e9b0760
Add RCBarriers to TargetInstrDesc. It's a list of register classes the given instruction can "clobber". For example, on x86 the call instruction can modify all of the XMM and fp stack registers.
...
TableGen has been taught to generate the lists from instruction definitions.
llvm-svn: 57722
2008-10-17 21:00:09 +00:00
Dan Gohman
10549c29a8
Use INT64_C to emit constant values, to avoid problems with
...
constants that don't fit in an int. This fixes
"this decimal constant is unsigned only in ISO C90"
warnings.
llvm-svn: 57668
2008-10-17 04:40:39 +00:00
Dan Gohman
ca0546facc
Fun x86 encoding tricks: when adding an immediate value of 128,
...
use a SUB instruction instead of an ADD, because -128 can be
encoded in an 8-bit signed immediate field, while +128 can't be.
This avoids the need for a 32-bit immediate field in this case.
A similar optimization applies to 64-bit adds with 0x80000000,
with the 32-bit signed immediate field.
To support this, teach tablegen how to handle 64-bit constants.
llvm-svn: 57663
2008-10-17 01:33:43 +00:00
Dan Gohman
6e979020cd
Add support for having multiple predicates on a TreePatternNode.
...
This will allow predicates to be composed, which will allow the
predicate definitions to become less redundant, and eventually
will allow DAGISelEmitter.cpp to emit less redundant code.
llvm-svn: 57562
2008-10-15 06:17:21 +00:00
Duncan Sands
26ff6f9c54
Add <cstdio> include where needed by gcc-4.4.
...
Patch by Samuel Tardieu.
llvm-svn: 57291
2008-10-08 07:23:46 +00:00
Chris Lattner
758ce7260d
Fix shift overflow bug that would occur when a field was a full 32-bits
...
in tblgen. This is PR2827, thanks to Waldemar Knorr for tracking this
down.
llvm-svn: 57124
2008-10-05 18:31:58 +00:00
Dale Johannesen
867d549fce
Handle some 64-bit atomics on x86-32, some of the time.
...
llvm-svn: 56963
2008-10-02 18:53:47 +00:00
Dan Gohman
b486350b15
Move the primary fast-isel top-level comments to FastISel.cpp, where
...
they'll be a little more visible. Also, update and reword them a bit.
llvm-svn: 56877
2008-09-30 20:48:29 +00:00
Dan Gohman
843fe14fab
Move the code that handles DAGISel error conditions into
...
helper functions instead of duplicating it inline each time
it is needed. This eliminates a few hundred or so copies
of this code in each target.
llvm-svn: 56759
2008-09-27 23:53:14 +00:00
Dan Gohman
6e0548336a
Rename ConstantSDNode's getSignExtended to getSExtValue, for
...
consistancy with ConstantInt, and re-implement it in terms
of ConstantInt's getSExtValue.
llvm-svn: 56700
2008-09-26 21:54:37 +00:00
Devang Patel
4c758ea3e0
Large mechanical patch.
...
s/ParamAttr/Attribute/g
s/PAList/AttrList/g
s/FnAttributeWithIndex/AttributeWithIndex/g
s/FnAttr/Attribute/g
This sets the stage
- to implement function notes as function attributes and
- to distinguish between function attributes and return value attributes.
This requires corresponding changes in llvm-gcc and clang.
llvm-svn: 56622
2008-09-25 21:00:45 +00:00
Mikhail Glushenkov
53aa586844
Move llvmc2 header files under include/llvm/CompilerDriver
...
llvm-svn: 56466
2008-09-22 20:50:40 +00:00
Mikhail Glushenkov
47afe73081
Plugin support for llvmc2 (a-la opt).
...
llvm-svn: 56465
2008-09-22 20:49:34 +00:00
Mikhail Glushenkov
4825a0bb2f
Make comments a little bit more clear.
...
llvm-svn: 56463
2008-09-22 20:48:22 +00:00
Mikhail Glushenkov
8a2bdc74b2
Get rid of GlobalLanguageMap. Global state is evil.
...
llvm-svn: 56462
2008-09-22 20:47:46 +00:00
Mikhail Glushenkov
9c13f724fc
Add a (forward_as) option property
...
llvm-svn: 56459
2008-09-22 20:46:19 +00:00
Mikhail Glushenkov
b50080e6cb
Delete the file llvmc2/doc/LLVMC-Enhancements.rst + some minor language/spelling fixes.
...
llvm-svn: 56458
2008-09-22 20:45:17 +00:00
Oscar Fuentes
a229b3c9a7
Initial support for the CMake build system.
...
llvm-svn: 56419
2008-09-22 01:08:49 +00:00
Evan Cheng
038ca4aa0f
Add instruction names as comments to InstBits entries.
...
llvm-svn: 56275
2008-09-17 06:29:52 +00:00
Bill Wendling
24c79f28b1
Reverting r56249. On further investigation, this functionality isn't needed.
...
Apologies for the thrashing.
llvm-svn: 56251
2008-09-16 21:48:12 +00:00
Bill Wendling
8bc392fb1d
- Change "ExternalSymbolSDNode" to "SymbolSDNode".
...
- Add linkage to SymbolSDNode (default to external).
- Change ISD::ExternalSymbol to ISD::Symbol.
- Change ISD::TargetExternalSymbol to ISD::TargetSymbol
These changes pave the way to allowing SymbolSDNodes with non-external linkage.
llvm-svn: 56249
2008-09-16 21:12:30 +00:00
Dan Gohman
ec270fb640
Change ConstantSDNode and ConstantFPSDNode to use ConstantInt* and
...
ConstantFP* instead of APInt and APFloat directly.
This reduces the amount of time to create ConstantSDNode
and ConstantFPSDNode nodes when ConstantInt* and ConstantFP*
respectively are already available, as is the case in
SelectionDAGBuild.cpp. Also, it reduces the amount of time
to legalize constants into constant pools, and the amount of
time to add ConstantFP operands to MachineInstrs, due to
eliminating ConstantInt::get and ConstantFP::get calls.
It increases the amount of work needed to create new constants
in cases where the client doesn't already have a ConstantInt*
or ConstantFP*, such as legalize expanding 64-bit integer constants
to 32-bit constants. And it adds a layer of indirection for the
accessor methods. But these appear to be outweight by the benefits
in most cases.
It will also make it easier to make ConstantSDNode and
ConstantFPNode more consistent with ConstantInt and ConstantFP.
llvm-svn: 56162
2008-09-12 18:08:03 +00:00
Dan Gohman
effb894453
Rename ConstantSDNode::getValue to getZExtValue, for consistency
...
with ConstantInt. This led to fixing a bug in TargetLowering.cpp
using getValue instead of getAPIntValue.
llvm-svn: 56159
2008-09-12 16:56:44 +00:00
Evan Cheng
c5af471be5
Indentation.
...
llvm-svn: 56107
2008-09-11 17:31:12 +00:00
Jim Grosbach
56938af9e2
lib/Target/SubtargetFeature.cpp asserts that the FeatureKV[] table be sorted
...
by its first field, but TableGen doesn't actually enforce creating it that
way. TableGen sorts the records that will be used to create it by the names
of the records, not the Name field of those records.
This patch corrects the sort to use the "Name" field of the record as the
sort key.
llvm-svn: 56106
2008-09-11 17:05:32 +00:00
Evan Cheng
f66e1120c6
Change getSubReg semantics. It now returns zero if the specified register doesn't have a subreg of the specified index.
...
llvm-svn: 56099
2008-09-11 06:25:25 +00:00
Dan Gohman
f6ac018926
Fix typos in (generated) comments.
...
llvm-svn: 55916
2008-09-08 16:29:36 +00:00
Evan Cheng
ca14c07175
Correctly handle physical register inputs. They are not explicit input operands in the resulting machine instrs.
...
llvm-svn: 55893
2008-09-08 08:39:33 +00:00
Evan Cheng
105c581135
Eliminate a compile time warning.
...
llvm-svn: 55878
2008-09-07 09:00:57 +00:00
Evan Cheng
09638d34a5
Fix indentation of generated code.
...
llvm-svn: 55876
2008-09-07 08:23:06 +00:00
Evan Cheng
7cab17af29
Ignore multi-instruction patterns. e.g.
...
def : Pat<(i8 (trunc GR32:$src)),
(i8 (EXTRACT_SUBREG (MOV32to32_ GR32:$src), x86_subreg_8bit))>
llvm-svn: 55875
2008-09-07 08:19:51 +00:00
Evan Cheng
24422d4928
Let tblgen only generate fastisel routines, not the class definition. This makes it easier for targets to define its own fastisel class.
...
llvm-svn: 55679
2008-09-03 00:03:49 +00:00
Evan Cheng
34f3a962b0
Change getBinaryCodeForInstr prototype. First operand MachineInstr& should be const. Make corresponding changes.
...
llvm-svn: 55623
2008-09-02 06:51:36 +00:00
Owen Anderson
0673a8af14
Add initial support for fast isel of instructions that have inputs pinned to physical registers.
...
llvm-svn: 55545
2008-08-29 17:45:56 +00:00
Dan Gohman
d58f3e36d0
Add a target callback for FastISel.
...
llvm-svn: 55512
2008-08-28 23:21:34 +00:00
Gabor Greif
f304a7aa4d
erect abstraction boundaries for accessing SDValue members, rename Val -> Node to reflect semantics
...
llvm-svn: 55504
2008-08-28 21:40:38 +00:00
Owen Anderson
787f100462
Add support for fast-isel of opcodes that require use of extract_subreg. Because of how extract_subreg is treated, it requires special case handling.
...
llvm-svn: 55480
2008-08-28 18:06:12 +00:00
Dan Gohman
6d153b02c9
Update a comment to reflect recent changes.
...
llvm-svn: 55418
2008-08-27 16:18:22 +00:00
Dan Gohman
5ca269e684
Basic FastISel support for floating-point constants.
...
llvm-svn: 55401
2008-08-27 01:09:54 +00:00
Gabor Greif
abfdf928d8
disallow direct access to SDValue::ResNo, provide a getter instead
...
llvm-svn: 55394
2008-08-26 22:36:50 +00:00
Dan Gohman
44003cc354
Refactor a bunch of FastISelEmitter code into a helper class, and
...
put each major step in a separate function. This makes the high
level sequence of events easier to follow.
llvm-svn: 55385
2008-08-26 21:21:20 +00:00
Cedric Venet
cf7154b2d6
- small bug corrected: incorrect iterator type.
...
- fix to please VS: add a return after an assert.
llvm-svn: 55380
2008-08-26 19:49:04 +00:00
Owen Anderson
3ea3efec44
We need to check that the return type is correct, even in cases where we don't
...
have a return type that differs from the operand types.
llvm-svn: 55376
2008-08-26 18:50:00 +00:00
Chris Lattner
491a930ea3
code simplification, no functionality change.
...
llvm-svn: 55363
2008-08-26 07:01:28 +00:00
Chris Lattner
345dcce5a6
stabilize more printing, this doesn't cause a problem
...
in the example attached to PR2590, but is a problem in general.
llvm-svn: 55361
2008-08-26 06:50:46 +00:00
Chris Lattner
ef820d2ef9
stablize SubRegsSet printing, part of PR2590
...
llvm-svn: 55360
2008-08-26 06:49:06 +00:00
Chris Lattner
bd7ccd0162
Stabilize 'getDwarfRegNumFull' output to not depend on random memory
...
orders, part of PR2590
llvm-svn: 55359
2008-08-26 06:43:25 +00:00
Owen Anderson
6f2db7238b
Throw the switch to allow FastISel to emit instructions whose return types different from their inputs. Next step: adding lowering pattens in FastISel that actually use these newly available opcodes.
...
llvm-svn: 55349
2008-08-26 01:22:59 +00:00
Owen Anderson
5f334d8215
Enhance TableGen to emit code for FastISel of opcodes with variadic return types without slowing down opcodes that are not variadic. No such opcodes are currently generated, but in theory it should be a matter of just hitting the switch.
...
llvm-svn: 55347
2008-08-26 00:42:26 +00:00
Owen Anderson
8dd01ccdd8
Add a RetVT parameter to emitted FastISel methods, so that we will be able to pass the desired return
...
type down. This is not currently used.
llvm-svn: 55345
2008-08-25 23:58:18 +00:00
Owen Anderson
5952cca7d1
Deepen the map structure tablegen uses to compute FastISel patterns, in preparation for having patterns
...
with return types that differ from their input types. This is not yet used.
llvm-svn: 55344
2008-08-25 23:43:09 +00:00
Owen Anderson
32635dbfb2
Add support for fast isel of (integer) immediate materialization pattens, and use them to support
...
bitcast of constants in fast isel.
llvm-svn: 55325
2008-08-25 20:20:32 +00:00
Dan Gohman
eb0cee91f6
Move the point at which FastISel taps into the SelectionDAGISel
...
process up to a higher level. This allows FastISel to leverage
more of SelectionDAGISel's infastructure, such as updating Machine
PHI nodes.
Also, implement transitioning from SDISel back to FastISel in
the middle of a block, so it's now possible to go back and
forth. This allows FastISel to hand individual CallInsts and other
complicated things off to SDISel to handle, while handling the rest
of the block itself.
To help support this, reorganize the SelectionDAG class so that it
is allocated once and reused throughout a function, instead of
being completely reallocated for each block.
llvm-svn: 55219
2008-08-23 02:25:05 +00:00
Dan Gohman
9b29ec7ba9
Add a few comments.
...
llvm-svn: 55157
2008-08-22 00:28:15 +00:00
Dan Gohman
49e19e906f
Factor out the predicate check code from DAGISelEmitter.cpp
...
and use it in FastISelEmitter.cpp, and make FastISel
subtarget aware. Among other things, this lets it work
properly on x86 targets that don't have SSE, where it
successfully selects x87 instructions.
llvm-svn: 55156
2008-08-22 00:20:26 +00:00
Dan Gohman
fe9056584b
Basic fast-isel support for instructions with constant int operands.
...
llvm-svn: 55099
2008-08-21 01:41:07 +00:00
Dan Gohman
7b3932e5d8
Remove the code that limited FastISel to certain fixed signatures.
...
llvm-svn: 55096
2008-08-21 00:35:26 +00:00
Dan Gohman
7170623b16
Begin making more use of the FastISelEmitter class.
...
llvm-svn: 55093
2008-08-21 00:19:05 +00:00
Dan Gohman
e6724d404b
Remove an obsolete todo comment.
...
llvm-svn: 55080
2008-08-20 21:47:28 +00:00
Dan Gohman
3e2225dfd6
Factor the code for determining the target-specific instruction
...
namespace out of the isel emitters and into common code.
llvm-svn: 55079
2008-08-20 21:45:57 +00:00
Dan Gohman
02c84b8910
Simplify FastISel's constructor argument list, make the FastISel
...
class hold a MachineRegisterInfo member, and make the
MachineBasicBlock be passed in to SelectInstructions rather
than the FastISel constructor.
llvm-svn: 55076
2008-08-20 21:05:57 +00:00
Dan Gohman
b93b489c54
Fix the string for MVT::isVoid.
...
llvm-svn: 55034
2008-08-20 01:44:30 +00:00
Dan Gohman
2dbebd7db5
For now, restrict FastISel to instructions that only involve one
...
register class.
llvm-svn: 55008
2008-08-19 20:58:14 +00:00
Dan Gohman
98e6f1c48a
Factor out the code to scan an instruction's operands into a
...
helper function.
llvm-svn: 55007
2008-08-19 20:56:30 +00:00
Dan Gohman
aa13b6f71b
Add more comments.
...
llvm-svn: 55004
2008-08-19 20:36:33 +00:00
Dan Gohman
49520b99a3
Fix indentation in FastISel tablegen-emitted code.
...
llvm-svn: 55003
2008-08-19 20:31:38 +00:00
Dan Gohman
a6c14d0ddb
Add more checking to filter out more kinds of things that
...
FastISel doesn't support yet.
llvm-svn: 55002
2008-08-19 20:30:54 +00:00
Dan Gohman
6a36fe912c
80 columns.
...
llvm-svn: 54998
2008-08-19 18:07:49 +00:00
Dan Gohman
dbd5328238
Add a few doxygen comments.
...
llvm-svn: 54997
2008-08-19 18:06:12 +00:00
Dan Gohman
522012fc56
Remove an unneeded #include.
...
llvm-svn: 54996
2008-08-19 17:53:16 +00:00
Owen Anderson
fa8b2ea41b
Speed up addRegisterDead by adding more fast checks before performing the expensive
...
subregister query, and by increasing the size of the subregister hashtable so
that there are fewer collisions.
llvm-svn: 54781
2008-08-14 18:34:18 +00:00
Dan Gohman
b2226e21c3
Initial checkin of the new "fast" instruction selection support. See
...
the comments in FastISelEmitter.cpp for details on what this is.
This is currently experimental and unusable.
llvm-svn: 54751
2008-08-13 20:19:35 +00:00
Dan Gohman
e81ac0b66f
Oops, check in these files too, for the FastISel -> Fast rename.
...
llvm-svn: 54750
2008-08-13 19:55:00 +00:00
Mon P Wang
2c839d4b1e
Added support for overloading intrinsics (atomics) based on pointers
...
to different address spaces. This alters the naming scheme for those
intrinsics, e.g., atomic.load.add.i32 => atomic.load.add.i32.p0i32
llvm-svn: 54195
2008-07-30 04:36:53 +00:00
Dan Gohman
2ce6f2ad5e
Rename SDOperand to SDValue.
...
llvm-svn: 54128
2008-07-27 21:46:04 +00:00
Dan Gohman
1705968102
Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk
...
replacement of multiple values. This is slightly more efficient
than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
could be optimized even further. However, an important property of this
new function is that it handles the case where the source value set and
destination value set overlap. This makes it feasible for isel to use
SelectNodeTo in many very common cases, which is advantageous because
SelectNodeTo avoids a temporary node and it doesn't require CSEMap
updates for users of values that don't change position.
Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
handle operand lists more efficiently, and to correctly handle a number
of corner cases to which its new wider use exposes it.
This commit also includes a change to the encoding of post-isel opcodes
in SDNodes; now instead of being sandwiched between the target-independent
pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
opcodes are now represented as negative values. This makes it possible
to test if an opcode is pre-isel or post-isel without having to know
the size of the current target's post-isel instruction set.
These changes speed up llc overall by 3% and reduce memory usage by 10%
on the InstructionCombining.cpp testcase with -fast and -regalloc=local.
llvm-svn: 53728
2008-07-17 19:10:17 +00:00
Evan Cheng
4a898c0b11
TargetRegisterDesc::Name field is the same as the abstract register name. There is no need for targets to specify register names in addition to their AsmName's.
...
llvm-svn: 53207
2008-07-07 22:19:41 +00:00
Dan Gohman
d6ec05077f
Refactor the tablegen DAGISelEmitter code for outputing calls to
...
getTargetNode and SelectNodeTo to reduce duplication, and to
make some of the getTargetNode code available to SelectNodeTo.
Use SelectNodeTo instead of getTargetNode in several new
interesting cases, as it mutates nodes in place instead of
creating new ones.
This triggers some scheduling behavior differences due to nodes
being presented to the scheduler in a different order. Some of the
arbitrary scheduling decisions it makes are now arbitrarily made
differently. This is visible in CodeGen/PowerPC/LargeAbsoluteAddr.ll,
where a trivial scheduling difference led to a trivial register
allocation difference.
llvm-svn: 53203
2008-07-07 21:00:17 +00:00
Dan Gohman
56e3f63ec5
Add explicit keywords.
...
llvm-svn: 53179
2008-07-07 18:00:37 +00:00
Evan Cheng
798d9bb97f
isel load folding is disabled at -fast. Now hoist the check up to the top level to save some time.
...
llvm-svn: 53096
2008-07-03 08:39:51 +00:00
Dan Gohman
22e9707480
Replace a few uses of SelectionDAG::getTargetNode with
...
SelectionDAG::SelectNodeTo in the instruction selector. This
updates existing nodes in place instead of creating new ones.
Go back to selecting ISD::DBG_LABEL nodes into
TargetInstrInfo::DBG_LABEL nodes instead of leaving them
unselected, now that SelectNodeTo allows us to update them
in place.
llvm-svn: 53057
2008-07-02 23:23:19 +00:00
Owen Anderson
3684013910
Make the subregister hashtable output more readable by wrapping the lines,
...
and mark it const along with the associated changes to TargetRegisterInfo.
llvm-svn: 52966
2008-07-01 17:34:38 +00:00
Owen Anderson
9e75cb2e7a
Use delete[] instead of free on an array created with new[].
...
llvm-svn: 52960
2008-07-01 15:56:31 +00:00
Owen Anderson
1760b92d27
Implement suggestions from Chris:
...
- Use a more accurate heuristic for the size of the hashtable.
- Use bitwise and instead of modulo since the size is a power of two.
- Use new[] instead of malloc().
llvm-svn: 52951
2008-07-01 07:02:30 +00:00
Owen Anderson
49cce257ae
Replace the dynamically computed std::set lookup method for subregisters with a hashtable-based
...
version that is computed by tblgen at the time LLVM is compiled.
llvm-svn: 52945
2008-07-01 00:18:52 +00:00
Dan Gohman
fb19f9402b
Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating
...
the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.
Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.
This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.
llvm-svn: 52943
2008-07-01 00:05:16 +00:00
Evan Cheng
5447e4331b
Eliminate TargetRegisterDesc::ImmSubRegs. It's no longer in use.
...
llvm-svn: 52892
2008-06-30 07:32:56 +00:00
Chris Lattner
2e253b426f
check in anton's patch to make inlining happen in a determinstic order
...
and fix the bug that it uncovers: inlining a pattern fragment could bring
in other pattern fragments if the inlinee hadn't already been inlined.
llvm-svn: 52888
2008-06-30 03:02:03 +00:00
Dale Johannesen
a2de8eab61
Fixes the last x86-64 test failure in compat.exp:
...
<16 x float> is 64-byte aligned (for some reason),
which gets us into the stack realignment code. The
computation changing FP-relative offsets to SP-relative
was broken, assiging a spill temp to a location
also used for parameter passing. This
fixes it by rounding up the stack frame to a multiple
of the largest alignment (I concluded it wasn't fixable
without doing this, but I'm not very sure.)
llvm-svn: 52750
2008-06-26 01:51:13 +00:00
Mon P Wang
6a490371c9
Added MemOperands to Atomic operations since Atomics touches memory.
...
Added abstract class MemSDNode for any Node that have an associated MemOperand
Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and
atomic.lss => atomic.load.sub
llvm-svn: 52706
2008-06-25 08:15:39 +00:00
Evan Cheng
49bad4c9e1
- Add "Commutative" property to intrinsics. This allows tblgen to generate the commuted variants for dagisel matching code.
...
- Mark lots of X86 intrinsics as "Commutative" to allow load folding.
llvm-svn: 52353
2008-06-16 20:29:38 +00:00
Matthijs Kooijman
d4f2f2e86f
Remove some debug output from tblgen. This fixes a test.
...
llvm-svn: 52177
2008-06-10 14:53:49 +00:00
Duncan Sands
13237ac3b9
Wrap MVT::ValueType in a struct to get type safety
...
and better control the abstraction. Rename the type
to MVT. To update out-of-tree patches, the main
thing to do is to rename MVT::ValueType to MVT, and
rewrite expressions like MVT::getSizeInBits(VT) in
the form VT.getSizeInBits(). Use VT.getSimpleVT()
to extract a MVT::SimpleValueType for use in switch
statements (you will get an assert failure if VT is
an extended value type - these shouldn't exist after
type legalization).
This results in a small speedup of codegen and no
new testsuite failures (x86-64 linux).
llvm-svn: 52044
2008-06-06 12:08:01 +00:00
Chris Lattner
6449690da4
Add #includes required by GCC 4.3, thanks for Zhongxing Xu
...
for reporting this.
llvm-svn: 51926
2008-06-04 04:46:14 +00:00
Dan Gohman
92d62b43c2
Fix the position of MemOperands in nodes that use variadic_ops
...
in DAGISelEmitter output. This bug was recently uncovered by the
addition of patterns for CALL32m and CALL64m, which are nodes
that now have both MemOperands and variadic_ops.
This bug was especially visible with PIC in various configurations,
because the new patterns are matching the indirect call code used
in many PIC configurations.
llvm-svn: 51877
2008-06-02 17:40:38 +00:00
Anton Korobeynikov
10d2f50826
Initialize members properly during construction
...
llvm-svn: 51841
2008-06-01 16:22:49 +00:00
Mikhail Glushenkov
f970edf9b7
Callback was not executed on OS X when it was a function.
...
llvm-svn: 51814
2008-05-31 13:43:21 +00:00
Dan Gohman
bd3390c73a
Teach the DAGISelEmitter to not compute the variable_ops operand
...
index for the input pattern in terms of the output pattern. Instead
keep track of how many fixed operands the input pattern actually
has, and have the input matching code pass the output-emitting
function that index value. This simplifies the code, disentangles
variables_ops from the support for predication operations, and
makes variable_ops more robust.
llvm-svn: 51808
2008-05-31 02:11:25 +00:00
Mikhail Glushenkov
401f3d6eab
Add a check for side effect-free options (specified only in the OptionList).
...
llvm-svn: 51759
2008-05-30 06:28:37 +00:00
Mikhail Glushenkov
c03ce6071c
Refactoring: remove code duplication introduced in the previous patch.
...
llvm-svn: 51757
2008-05-30 06:27:29 +00:00
Mikhail Glushenkov
e8cee23f67
Refactoring: split CollectProperties into two separate function objects.
...
llvm-svn: 51756
2008-05-30 06:27:02 +00:00
Mikhail Glushenkov
b9b010eb09
New feature: OptionList.
...
It can be handy to have all information about options gathered in a single place
to provide an overview of all supported options. This patch allows the following:
def Options : OptionList<[
(switch_option "E", (help "Help string")),
(alias_option "quiet", "q")
...
]>;
Tool-specific option properties (like 'append_cmd') have (obviously) no meaning in
this context, so the only properties that are allowed are 'help' and 'required'.
See usage example in examples/Clang.td.
llvm-svn: 51754
2008-05-30 06:26:08 +00:00
Mikhail Glushenkov
c8bd3517d5
A small optimization: use static char* array instead of StrVector.
...
llvm-svn: 51752
2008-05-30 06:24:49 +00:00
Mikhail Glushenkov
bf14dd7dc3
Make it possible to test if the '-o' option is provided.
...
The following is now allowed:
(case (not_empty "o"), do_something, ...)
This didn't work previously because "-o" is built-in.
llvm-svn: 51751
2008-05-30 06:24:07 +00:00
Mikhail Glushenkov
f83f33e8d3
Fix: 'sink' handling was broken.
...
llvm-svn: 51750
2008-05-30 06:23:29 +00:00
Mikhail Glushenkov
b043663cf9
Add support for option aliases.
...
llvm-svn: 51749
2008-05-30 06:22:52 +00:00
Mikhail Glushenkov
bf1552d866
Allow nesting of case expressions.
...
The following is now legal:
(case (in_language "c"),
(case (switch_on "E"), "gcc -x c -E $INFILE", (default), "gcc -x c $INFILE"),
(default),
"gcc $INFILE $OUTFILE")
llvm-svn: 51748
2008-05-30 06:22:15 +00:00
Mikhail Glushenkov
d1a6a34cc5
Small error message improvement.
...
llvm-svn: 51747
2008-05-30 06:21:48 +00:00
Mikhail Glushenkov
763cc577b3
Remove RequireDefault parameter from EmitCaseConstructHandler.
...
There are now no situations when 'default' is required.
llvm-svn: 51746
2008-05-30 06:21:21 +00:00
Mikhail Glushenkov
5916ade717
Fix some headers.
...
llvm-svn: 51745
2008-05-30 06:20:54 +00:00
Mikhail Glushenkov
2f51489a62
New tests for the 'case' expression: not_empty, in_language.
...
llvm-svn: 51744
2008-05-30 06:19:52 +00:00
Mikhail Glushenkov
1f7a028929
Make it possible to have multiple input languages for a single tool.
...
llvm-svn: 51742
2008-05-30 06:18:16 +00:00
Mikhail Glushenkov
326d508303
Better error reporting for the 'case' construct.
...
llvm-svn: 51738
2008-05-30 06:15:47 +00:00
Mikhail Glushenkov
9e58d5958f
Do not generate empty 'if's for the output_suffix property.
...
llvm-svn: 51737
2008-05-30 06:15:20 +00:00
Mikhail Glushenkov
6db24d96cd
Make it possible to use hooks like this: '$CALL(MyHook)/path/to/file'.
...
llvm-svn: 51734
2008-05-30 06:13:29 +00:00
Mikhail Glushenkov
73edde26f0
Make it possible to change the output file suffix based on command-line options.
...
For instance, the following command:
llvmc2 -E hello.c
now generates a file with the correct suffix (hello.i).
llvm-svn: 51733
2008-05-30 06:13:02 +00:00
Mikhail Glushenkov
fc4ed7ad83
Add support for user-provided hooks and environment variable reads to the cmd_line tool property.
...
Used like this: (cmd_line "$CALL(MyHook) --option -o $ENV(VARIABLE) $CALL(AnotherHook)")
Also works with case expressions.
Hook declarations are auto-generated, the definitions should be provided by the user
(just drop a .cpp file in the tools/llvmc2 directory).
Hooks should live in the "hooks" namespace and have type std::string hooks::Hook(void).
llvm-svn: 51732
2008-05-30 06:12:24 +00:00
Mikhail Glushenkov
f1c87ff378
Some small tweaks to make the generated code prettier.
...
llvm-svn: 51729
2008-05-30 06:10:47 +00:00
Mikhail Glushenkov
e57a403338
Make it possible to use the generalised 'case' construct in the cmd_line property.
...
llvm-svn: 51728
2008-05-30 06:10:19 +00:00
Mikhail Glushenkov
8fedbb7b02
Add a generalised 'case' construct.
...
Besides assigning edge weights, it will also be used by the cmd_line tool property.
llvm-svn: 51727
2008-05-30 06:08:50 +00:00
Dan Gohman
96af4ddb62
Add patterns for CALL32m and CALL64m. They aren't matched in most
...
cases due to an isel deficiency already noted in
lib/Target/X86/README.txt, but they can be matched in this fold-call.ll
testcase, for example.
This is interesting mainly because it exposes a tricky tblgen bug;
tblgen was incorrectly computing the starting index for variable_ops
in the case of a complex pattern.
llvm-svn: 51706
2008-05-29 21:50:34 +00:00
Dan Gohman
6e582c449f
Fix a tblgen problem handling variable_ops in tblgen instruction
...
definitions. This adds a new construct, "discard", for indicating
that a named node in the input matching pattern is to be discarded,
instead of corresponding to a node in the output pattern. This
allows tblgen to know where the arguments for the varaible_ops are
supposed to begin.
This fixes "rdar://5791600", whatever that is ;-).
llvm-svn: 51699
2008-05-29 19:57:41 +00:00
Bill Wendling
3f6bb2713e
Add a flag to indicate that an instruction is as cheap (or cheaper) than a move
...
instruction to execute. This can be used for transformations (like two-address
conversion) to remat an instruction instead of generating a "move"
instruction. The idea is to decrease the live ranges and register pressure and
all that jazz.
llvm-svn: 51660
2008-05-28 22:54:52 +00:00
Roman Levenstein
52a005ac13
Do not generate by TableGen the hard-coded standard, target-independent part of
...
DAG instruction selectors. Introudce a dedicated header file for this part:
include/llvm/CodeGen/DAGISelHeader.h
TableGen now only generates the include preprocessor directive to include this
new header.
This is a preparation for supporting multiple implementations of instruction
selectors in the future.
Reviewed and approved by Evan and Dan.
llvm-svn: 51102
2008-05-14 10:17:11 +00:00
Mikhail Glushenkov
c79304461a
Filter option names to escape symbols not allowed as C++ identifiers.
...
Makes it possible to use options with names like "Wa,".
Also fixes the -Wall option handling as a side-effect.
llvm-svn: 50973
2008-05-12 16:33:06 +00:00
Mikhail Glushenkov
22ce861ffe
Reapply 50867: A small refactoring (extract method) + some comment fixes.
...
Fixed the build breakage, sorry for that.
llvm-svn: 50895
2008-05-09 08:27:26 +00:00
Tanya Lattner
93cea9fd18
Revertin 50867 since it was breaking the build.
...
llvm-svn: 50871
2008-05-08 21:54:20 +00:00
Mikhail Glushenkov
d7e151f868
A small refactoring (extract method) + some comment fixes.
...
llvm-svn: 50867
2008-05-08 20:02:03 +00:00
Mikhail Glushenkov
41318a15d0
Use Doxygen-style comments.
...
llvm-svn: 50833
2008-05-07 21:50:19 +00:00
Mikhail Glushenkov
eeac27e38c
Change from llvm::SmallSet<std::string> to llvm::StringMap<char>.
...
llvm-svn: 50766
2008-05-06 18:18:58 +00:00
Mikhail Glushenkov
5e9d6a3dd8
Add new edge property combinator: weight.
...
llvm-svn: 50765
2008-05-06 18:18:20 +00:00
Mikhail Glushenkov
a02084cff7
Use edge weights to choose the right linker based on input language names.
...
llvm-svn: 50759
2008-05-06 18:15:12 +00:00
Mikhail Glushenkov
1b056e9e5a
Add weights to graph edges. Choose between edges based on their weight.
...
llvm-svn: 50757
2008-05-06 18:14:24 +00:00
Mikhail Glushenkov
3a2f5c423e
Remove the UnpackValues() function.
...
llvm-svn: 50756
2008-05-06 18:13:45 +00:00
Mikhail Glushenkov
7f6ed20009
Add a --linker command-line option, make all tests pass.
...
llvm-svn: 50755
2008-05-06 18:13:00 +00:00
Mikhail Glushenkov
20c18c344b
Naming fix: LLVMCCConfigurationEmitter -> LLVMCConfigurationEmitter.
...
llvm-svn: 50754
2008-05-06 18:12:03 +00:00
Mikhail Glushenkov
1002d5f33f
Rename LLVMCCConfigurationEmitter to LLVMCConfigurationEmitter
...
llvm-svn: 50748
2008-05-06 18:09:29 +00:00
Mikhail Glushenkov
d4918dd32c
Add output redirection, rename namespace llvmcc to namespace llvmc.
...
llvm-svn: 50746
2008-05-06 18:08:59 +00:00
Mikhail Glushenkov
7ed45e2261
Small output formatting fix.
...
llvm-svn: 50739
2008-05-06 17:27:15 +00:00
Mikhail Glushenkov
2709e1a2c9
Add inward edge counters to Nodes; Associate JoinLists with JoinTools.
...
llvm-svn: 50738
2008-05-06 17:26:53 +00:00
Mikhail Glushenkov
baa0b592d0
Return const char* instead of std::string in Tool classes
...
llvm-svn: 50733
2008-05-06 17:24:26 +00:00
Mikhail Glushenkov
1c41c6d734
Refactoring: extract method.
...
llvm-svn: 50731
2008-05-06 17:23:14 +00:00
Mikhail Glushenkov
59eb254092
Add new edge properties: parameter_equals, element_in_list, and.
...
llvm-svn: 50730
2008-05-06 17:22:47 +00:00
Mikhail Glushenkov
681df41f2c
Implemented switch_on edge property.
...
llvm-svn: 50729
2008-05-06 17:22:03 +00:00
Mikhail Glushenkov
251280ce0b
More work on edge properties. Use Edge classes instead of strings in CompilationGraph.
...
llvm-svn: 50726
2008-05-06 16:36:50 +00:00
Mikhail Glushenkov
459df48de7
Ongoing work: add an edge typechecker, rudimentary support for edge properties.
...
llvm-svn: 50725
2008-05-06 16:36:06 +00:00
Mikhail Glushenkov
adcb08d1b3
Convert internal representation to use DAG. This gives us more flexibility and enables future improvements.
...
llvm-svn: 50724
2008-05-06 16:35:25 +00:00
Mikhail Glushenkov
a8276c5323
Code reorg
...
llvm-svn: 50722
2008-05-06 16:34:12 +00:00
Chuck Rose III
c6a47e8a79
VisualStudio project files updated. #include <algorithm> added to make VisualStudio happy. Also had to undefine setjmp because of #include <csetjmp> turning setjmp into _setjmp in VisualStudio.
...
llvm-svn: 49743
2008-04-15 21:27:11 +00:00
Evan Cheng
ba7126064a
Sort sub-registers and super-registers lists according to super-sub register relations. e.g. X86::RAX sub-register list is EAX, AX, AL, AH (order of last two are not guaranteed).
...
llvm-svn: 49714
2008-04-15 07:56:03 +00:00
Chris Lattner
57dd77462b
produce an error on invalid input instead of asserting:
...
def : Pat<((v2f64 (vector_shuffle immAllZerosV_bc,
^
llvm-svn: 49462
2008-04-10 04:48:34 +00:00
Nate Begeman
a6063118c6
Fix a bug where an incorrect bit mask would be generated if a target's last asm
...
string began at a power of 2 in the string index. For example, if "ret" started
at position 16, the ret instruction would be assigned code 16, but the mask would be AsmChars[] + Code & 15, not Code & 31.
llvm-svn: 49433
2008-04-09 16:24:11 +00:00
Chris Lattner
5ed17b67d2
Fix generation of multi-stage instruction itineraries. Patch by
...
giuma.cordes@gmail.com
llvm-svn: 49276
2008-04-06 17:38:14 +00:00
Dan Gohman
fc4ad7de66
Move instruction flag inference out of InstrInfoEmitter and into
...
CodeGenDAGPatterns, where it can be used in other tablegen backends.
This allows the inference to be done for DAGISelEmitter so that it
gets accurate mayLoad/mayStore/isSimpleLoad flags.
This brings MemOperand functionality back to where it was before
48329. However, it doesn't solve the problem of anonymous patterns
which expand to code that does loads or stores.
llvm-svn: 49123
2008-04-03 00:02:49 +00:00
Anton Korobeynikov
20c9e4cbee
Add new CC lowering rule: provide a list of registers, which can be 'shadowed',
...
when some another register is used for argument passing.
Currently is used on Win64.
llvm-svn: 49079
2008-04-02 05:23:57 +00:00
Chris Lattner
6f2ffdb73f
Change the MemoryBuffer::getFile* methods to take just a pointer to the
...
start of a filename, not a filename+length. All clients can produce a
null terminated name, and the system api's require null terminated
strings anyway.
llvm-svn: 49041
2008-04-01 18:04:03 +00:00
Mikhail Glushenkov
abb139c3f8
Fix build breakage on Windows with GCC 4.3. References bug #2176 .
...
llvm-svn: 48874
2008-03-27 09:53:47 +00:00
Dan Gohman
c60c67fc37
Add explicit keywords.
...
llvm-svn: 48801
2008-03-25 22:06:05 +00:00
Dan Gohman
bdc24adaaf
A quick nm audit turned up several fixed tables and objects that were
...
marked read-write. Use const so that they can be allocated in a
read-only segment.
llvm-svn: 48800
2008-03-25 21:45:14 +00:00
Anton Korobeynikov
70548d835e
Add first proof-of-concept universal compiler driver framework based
...
on ideas mentioned in PR686.
Written by Mikhail Glushenkov and contributed by Codedgers, Inc.
Old llvmc will be removed soon after new one will have all its properties.
llvm-svn: 48699
2008-03-23 08:57:20 +00:00
Duncan Sands
d97eea372a
Introduce a new node for holding call argument
...
flags. This is needed by the new legalize types
infrastructure which wants to expand the 64 bit
constants previously used to hold the flags on
32 bit machines. There are two functional changes:
(1) in LowerArguments, if a parameter has the zext
attribute set then that is marked in the flags;
before it was being ignored; (2) PPC had some bogus
code for handling two word arguments when using the
ELF 32 ABI, which was hard to convert because of
the bogusness. As suggested by the original author
(Nicolas Geoffray), I've disabled it for the moment.
Tested with "make check" and the Ada ACATS testsuite.
llvm-svn: 48640
2008-03-21 09:14:45 +00:00
Chris Lattner
a7cca362af
detabify llvm, patch by Mike Stump!
...
llvm-svn: 48577
2008-03-20 01:22:40 +00:00
Nate Begeman
fbbe80b597
Add support for escaping {} in asm strings, based on patch from Nick Burns.
...
llvm-svn: 48450
2008-03-17 07:26:14 +00:00
Christopher Lamb
d3d0ad3f58
Make insert_subreg a two-address instruction, vastly simplifying LowerSubregs pass. Add a new TII, subreg_to_reg, which is like insert_subreg except that it takes an immediate implicit value to insert into rather than a register.
...
llvm-svn: 48412
2008-03-16 03:12:01 +00:00
Evan Cheng
ec7533b620
Remove isImplicitDef TargetInstrDesc flag.
...
llvm-svn: 48381
2008-03-15 00:19:36 +00:00
Evan Cheng
0e7b00d79f
Replace all target specific implicit def instructions with a target independent one: TargetInstrInfo::IMPLICIT_DEF.
...
llvm-svn: 48380
2008-03-15 00:03:38 +00:00
Christopher Lamb
dd55d3f1b2
Get rid of a pseudo instruction and replace it with subreg based operation on real instructions, ridding the asm printers of the hack used to do this previously. In the process, update LowerSubregs to be careful about eliminating copies that have side affects.
...
Note: the coalescer will have to be careful about this too, when it starts coalescing insert_subreg nodes.
llvm-svn: 48329
2008-03-13 05:47:01 +00:00
Christopher Lamb
a731239c30
Recommitting changes after more testing. These appear to cause no problems.
...
llvm-svn: 48222
2008-03-11 09:33:47 +00:00
Chris Lattner
6aa4f515bb
emit an ID # for each regclass ID. Chris doesn't like to have to count.
...
llvm-svn: 48200
2008-03-11 00:00:23 +00:00
Evan Cheng
d4e1d9eeb2
Revert 48125, 48126, and 48130 for now to unbreak some x86-64 tests.
...
llvm-svn: 48167
2008-03-10 19:31:26 +00:00
Christopher Lamb
80b928e600
Revert accidentally committed local changes.
...
llvm-svn: 48126
2008-03-10 04:16:09 +00:00
Christopher Lamb
0faed2a9a6
Add support in TableGen for unknown operands that infer their type from the pattern their used in. This will be used to allow insert/extract subreg patterns in .td files!
...
llvm-svn: 48125
2008-03-10 04:13:41 +00:00
Dale Johannesen
4e622ec86d
Increase ISD::ParamFlags to 64 bits. Increase the ByValSize
...
field to 32 bits, thus enabling correct handling of ByVal
structs bigger than 0x1ffff. Abstract interface a bit.
Fixes gcc.c-torture/execute/pr23135.c and
gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing
on ppc32, quietly producing wrong code on x86-32.)
llvm-svn: 48122
2008-03-10 02:17:22 +00:00
Scott Michel
944207423b
This patch fixes a problem encountered by the CellSPU backend where variants
...
were being pruned in patterns where a variable was used more than once, e.g.:
(or (and R32C:$rA, R32C:$rC), (and R32C:$rB, (not R32C:$rC)))
In this example, $rC is used more than once and is actually significant to
instruction selection pattern matching when commuted variants are produced.
This patch scans the pattern's clauses and collects the variables, creating
a set of variables that are used more than once. TreePatternNode::isIsomorphicTo()
also understands that multiply-used variables are significant.
llvm-svn: 47950
2008-03-05 17:49:05 +00:00
Bill Wendling
d7a258d325
Rename PrintableName to Name.
...
llvm-svn: 47629
2008-02-26 21:47:57 +00:00
Bill Wendling
c24ea4fb41
Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool
...
would have been a Godsend here!
llvm-svn: 47625
2008-02-26 21:11:01 +00:00
Bill Wendling
e65d2afdb1
De-tabify.
...
llvm-svn: 47595
2008-02-26 10:45:29 +00:00
Bill Wendling
a7d1ed4c98
Some platforms use the same name for 32-bit and 64-bit registers (like
...
%r3 on PPC) in their ASM files. However, it's hard for humans to read
during debugging. Adding a new field to the register data that lets you
specify a different name to be printed than the one that goes into the
ASM file -- %x3 instead of %r3, for instance.
llvm-svn: 47534
2008-02-24 00:56:13 +00:00
Anton Korobeynikov
579f07135a
Unbreak build with gcc 4.3: provide missed includes and silence most annoying warnings.
...
llvm-svn: 47367
2008-02-20 11:08:44 +00:00
Scott Michel
a3cefeaf0c
Make tblgen a little smarter about constants smaller than i32. Currently,
...
tblgen will complain if a sign-extended constant does not fit into a
data type smaller than i32, e.g., i16. This causes a problem when certain
hex constants are used, such as 0xff for byte masks or immediate xor
values.
tblgen will try the sign-extended value first and, if the sign extended
value would overflow, it tries to see if the unsigned value will fit.
Consequently, a software developer can now safely incant:
(XORHIr16 R16C:$rA, 0xffff)
which is somewhat clearer and more informative than incanting:
(XORHIr16 R16C:$rA, (i16 -1))
even if the two are bitwise equivalent.
Tblgen also outputs the 64-bit unsigned constant in the generated ISel code
when getTargetConstant() is invoked.
llvm-svn: 47188
2008-02-15 23:05:48 +00:00
Dale Johannesen
6ca3ccf519
Rewrite tblgen handling of subtarget features so
...
it follows the order of the enum, not alphabetical.
The motivation is to make -mattr=+ssse3,+sse41
select SSE41 as it ought to. Added "ignored"
enum values of 0 to PPC and SPU to avoid compiler
warnings.
llvm-svn: 47143
2008-02-14 23:35:16 +00:00
Nate Begeman
53e1b3f9d5
Change how FP immediates are handled.
...
1) ConstantFP is now expand by default
2) ConstantFP is not turned into TargetConstantFP during Legalize
if it is legal.
This allows ConstantFP to be handled like Constant, allowing for
targets that can encode FP immediates as MachineOperands.
As a bonus, fix up Itanium FP constants, which now correctly match,
and match more constants! Hooray.
llvm-svn: 47121
2008-02-14 08:57:00 +00:00
Dan Gohman
3a4be0fdef
Rename MRegisterInfo to TargetRegisterInfo.
...
llvm-svn: 46930
2008-02-10 18:45:23 +00:00
Nate Begeman
17bedbc500
Tablegen support for insert & extract element matching
...
llvm-svn: 46901
2008-02-09 01:37:05 +00:00
Dan Gohman
2d489b5081
Re-apply the memory operand changes, with a fix for the static
...
initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.
llvm-svn: 46827
2008-02-06 22:27:42 +00:00
Evan Cheng
87fbd66f9f
Fix PR1975: dag isel emitter produces patterns that isel wrong flag result.
...
llvm-svn: 46776
2008-02-05 22:50:29 +00:00
Evan Cheng
2cb9068c78
Dwarf requires variable entries to be in the source order. Right now, since we are recording variable information at isel time this means parameters would appear in the reverse order. The short term fix is to issue recordVariable() at asm printing time instead.
...
llvm-svn: 46724
2008-02-04 23:06:48 +00:00
Chris Lattner
b2b9d6f0fb
Change the 'global modification' APIs in SelectionDAG to take a new
...
DAGUpdateListener object pointer instead of just returning a vector
of deleted nodes. This makes the interfaces more efficient (no more
allocating a vector [at least a malloc], filling it in, then walking
it) and more clean. This also allows the client to be notified of
nodes that are *changed* but not deleted.
llvm-svn: 46677
2008-02-03 06:49:24 +00:00
Evan Cheng
32e5347eb8
Get rid of the annoying blank lines before labels.
...
llvm-svn: 46667
2008-02-02 08:39:46 +00:00
Evan Cheng
efd142a920
SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
...
Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
llvm-svn: 46659
2008-02-02 04:07:54 +00:00
Evan Cheng
27b32b87ed
Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and re-commit.
...
llvm-svn: 46623
2008-01-31 21:00:00 +00:00
Evan Cheng
1c6c16ea11
Add an extra operand to LABEL nodes which distinguishes between debug, EH, or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution.
...
llvm-svn: 46609
2008-01-31 09:59:15 +00:00
Christopher Lamb
0592cf7e74
Allow ComplexExpressions in InstrInfo.td files to be slightly more... complex! ComplexExpressions can now have attributes which affect how TableGen interprets
...
the pattern when generating matchin code.
The first (and currently, only) attribute causes the immediate parent node of the ComplexPattern operand to be passed into the matching code rather than the node at the root of the entire DAG containing the pattern.
llvm-svn: 46606
2008-01-31 07:27:46 +00:00
Dan Gohman
3646fdda67
Create a new class, MemOperand, for describing memory references
...
in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.
Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.
Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.
llvm-svn: 46585
2008-01-31 00:25:39 +00:00
Scott Michel
167502a508
Fix to bug 1951: tblgen gratuitously renames variables when no temporary was
...
generated. This feature would only show up in fairly complex patterns, such
as this one in CellSPU:
def : Pat<(add (SPUhi tconstpool:$in, 0), (SPUlo tconstpool:$in, 0)),
(IOHLlo (ILHUhi tconstpool:$in), tconstpool:$in)>;
which generated the following emit code:
SDNode *Emit_0(const SDOperand &N, unsigned Opc0, unsigned Opc1, MVT::ValueType VT0, MVT::ValueType VT1) DISABLE_INLINE {
SDOperand N0 = N.getOperand(0);
SDOperand N00 = N0.getOperand(0);
SDOperand N01 = N0.getOperand(1);
SDOperand N1 = N.getOperand(1);
SDOperand N10 = N1.getOperand(0);
SDOperand N11 = N1.getOperand(1);
SDOperand Tmp3(CurDAG->getTargetNode(Opc0, VT0, N00), 0);
return CurDAG->SelectNodeTo(N.Val, Opc1, VT1, Tmp3, Tmp2); /* Tmp2 s/b N00 */
}
Tested against the test suites without incident.
llvm-svn: 46487
2008-01-29 02:29:31 +00:00
Anton Korobeynikov
010bd77372
Add interator interface to DAGInit also
...
llvm-svn: 46250
2008-01-22 11:00:07 +00:00
Anton Korobeynikov
e49cc26380
Provide iterator access to ListInit contents
...
llvm-svn: 46223
2008-01-21 22:30:26 +00:00
Chuck Rose III
fe2714fab3
Add files to windows project files. Also include <algorithm> explicitly so that vstudio build works
...
llvm-svn: 46013
2008-01-15 21:43:17 +00:00
Evan Cheng
4d70ba3134
Rename CCIfStruct to CCIfByVal and CCStructAssign to CCPassByVal. Remove unused parameters of CCStructAssign and add size and alignment requirement info.
...
llvm-svn: 45997
2008-01-15 03:34:58 +00:00
Evan Cheng
a9ecdf6927
Revert my last commit. Not needed.
...
llvm-svn: 45994
2008-01-15 03:10:35 +00:00
Evan Cheng
02e78103ab
ByVal arguments are passed on stack. Make sure to allocate a slot using size and alignment information on the parameter attribute.
...
llvm-svn: 45897
2008-01-12 01:07:41 +00:00
Chris Lattner
c8226f32e9
Simplify the side effect stuff a bit more and make licm/sinking
...
both work right according to the new flags.
This removes the TII::isReallySideEffectFree predicate, and adds
TII::isInvariantLoad.
It removes NeverHasSideEffects+MayHaveSideEffects and adds
UnmodeledSideEffects as machine instr flags. Now the clients
can decide everything they need.
I think isRematerializable can be implemented in terms of the
flags we have now, though I will let others tackle that.
llvm-svn: 45843
2008-01-10 23:08:24 +00:00
Chris Lattner
317332fc2a
Start inferring side effect information more aggressively, and fix many bugs in the
...
x86 backend where instructions were not marked maystore/mayload, and perf issues where
instructions were not marked neverHasSideEffects. It would be really nice if we could
write patterns for copy instructions.
I have audited all the x86 instructions down to MOVDQAmr. The flags on others and on
other targets are probably not right in all cases, but no clients currently use this
info that are enabled by default.
llvm-svn: 45829
2008-01-10 07:59:24 +00:00
Chris Lattner
70ddafaf45
Fix a crash on code like: let x = 1 {x
...
llvm-svn: 45827
2008-01-10 07:01:53 +00:00
Chris Lattner
86c458a178
if an instr lacks a pattern, assume it has side effects (unless never has s-e is true).
...
llvm-svn: 45823
2008-01-10 05:40:54 +00:00
Chris Lattner
42c63ef96e
start inferring 'no side effects'.
...
llvm-svn: 45822
2008-01-10 05:39:30 +00:00
Chris Lattner
9e69654461
Infer mayload
...
llvm-svn: 45819
2008-01-10 04:44:48 +00:00
Chris Lattner
1ca2068227
realize that instructions who match intrinsics that read memory read memory.
...
Also, instructions with any nodes that are SDNPMayLoad also read memory.
llvm-svn: 45817
2008-01-10 04:38:57 +00:00
Chris Lattner
07fde9bde1
add a mayLoad property for machine instructions, a correlary to mayStore.
...
This is currently not set by anything.
llvm-svn: 45748
2008-01-08 18:05:21 +00:00
Chris Lattner
03ad885039
rename TargetInstrDescriptor -> TargetInstrDesc.
...
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695
2008-01-07 07:27:27 +00:00
Chris Lattner
e99a6caee4
Rename all the M_* flags to be namespace qualified enums, and switch
...
all clients over to using predicates instead of these flags directly.
These are now private values which are only to be used to statically
initialize the tables.
llvm-svn: 45692
2008-01-07 06:42:05 +00:00
Chris Lattner
f376c99ea0
rename hasVariableOperands() -> isVariadic(). Add some comments.
...
Evan, please review the comments I added to getNumDefs to make sure
that they are accurate, thx.
llvm-svn: 45687
2008-01-07 05:19:29 +00:00
Chris Lattner
fd548c96cc
Move M_* flags down in the file. Move SchedClass up in the
...
TargetInstrDescriptor class and shrink to 16-bits, saving a
word in TargetInstrDescriptor. Add some comments.
llvm-svn: 45686
2008-01-07 05:06:49 +00:00
Chris Lattner
6f8713decb
the name field of instructions is never set to a non-empty string,
...
just unconditionally use the def name of the instruction.
llvm-svn: 45684
2008-01-07 04:57:31 +00:00
Chris Lattner
e55e115616
Add predicates methods to TargetOperandInfo, and switch all clients
...
over to using them, instead of diddling Flags directly. Change the
various flags from const variables to enums.
llvm-svn: 45677
2008-01-07 02:39:19 +00:00
Chris Lattner
a4ce4f6987
rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.
...
llvm-svn: 45667
2008-01-06 23:38:27 +00:00
Chris Lattner
10324d0175
rename isStore -> mayStore to more accurately reflect what it captures.
...
llvm-svn: 45656
2008-01-06 08:36:04 +00:00
Chris Lattner
a348f55ec6
Change the 'isStore' inferrer to look for 'SDNPMayStore'
...
instead of "ISD::STORE". This allows us to mark target-specific dag
nodes as storing (such as ppc byteswap stores). This allows us to remove
more explicit isStore flags from the .td files.
Finally, add a warning for when a .td file contains an explicit
isStore and tblgen is able to infer it.
llvm-svn: 45654
2008-01-06 06:44:58 +00:00
Chris Lattner
89c6566577
set the 'isstore' flag for instructions whose pattern is an
...
intrinsic that writes to memory.
llvm-svn: 45650
2008-01-06 05:36:50 +00:00
Chris Lattner
e457fd1e9b
remove some old hacky code that tried to infer whether a store
...
occured in a pattern, but failed miserably. The new code works for
any instruction that has a store in its pattern, including all the
x86 mem op mem instructions.
The only target-independent code that uses this is branch folding,
so this won't change anything in practice.
llvm-svn: 45648
2008-01-06 02:16:26 +00:00
Chris Lattner
27a4c1515a
rearrange some code to allow inferring instr info from the pattern of the instr, but don't do so yet.
...
llvm-svn: 45647
2008-01-06 01:53:37 +00:00
Chris Lattner
d5326def4a
improve const correctness.
...
llvm-svn: 45646
2008-01-06 01:52:22 +00:00
Chris Lattner
ea2d52d867
Split the impl of CodeGenInstruction out to its own .cpp file, add a getName() accessor.
...
llvm-svn: 45645
2008-01-06 01:35:39 +00:00
Chris Lattner
85467a17ae
final cleanups.
...
llvm-svn: 45644
2008-01-06 01:21:51 +00:00
Chris Lattner
626b89daa4
further simplifications and cleanup
...
llvm-svn: 45643
2008-01-06 01:20:13 +00:00
Chris Lattner
827efa451f
simplify some code
...
llvm-svn: 45642
2008-01-06 01:12:44 +00:00
Chris Lattner
ab3242fd46
rename CodegenDAGPatterns -> CodeGenDAGPatterns
...
llvm-svn: 45641
2008-01-06 01:10:31 +00:00
Chris Lattner
e59a3c79e5
split enum emission out from InstrInfoEmitter into it's own tblgen backend.
...
llvm-svn: 45640
2008-01-06 00:49:05 +00:00
Chris Lattner
78ac0747e7
fix build on case sensitive file systems.
...
llvm-svn: 45639
2008-01-05 23:37:52 +00:00
Chris Lattner
7980bba549
now that computing CodegenDAGPatterns doesn't implicitly print stuff
...
out, DAGISelEmitter can compute it in its ctor, which simplifies some code.
Now we can use CodegenDAGPatterns in other parts of tblgen that want access
to dag pattern info, woo!
llvm-svn: 45636
2008-01-05 22:58:54 +00:00
Chris Lattner
cc43e79bcd
move Node Transformation printing from CodeGenDAGPatterns -> DAGISelEmitter.
...
The only difference in output is that we now print them in alphabetical
order instead of reverse alphabetical order.
llvm-svn: 45635
2008-01-05 22:54:53 +00:00
Chris Lattner
e7170df043
move predicate printing code from CodeGenDAGPatterns -> DAGISelEmitter.
...
llvm-svn: 45634
2008-01-05 22:43:57 +00:00
Chris Lattner
9abe77b2d0
fix a fixme by improving const correctness.
...
llvm-svn: 45633
2008-01-05 22:30:17 +00:00
Chris Lattner
8cab021ca2
change getQualifiedName to be a global function.
...
Split the pattern parsing code out from the dag isel emitter into it's own file.
No functionality change.
llvm-svn: 45632
2008-01-05 22:25:12 +00:00
Chris Lattner
69ea01446e
Change the builtin matcher to emit a decision tree, which should help out
...
the VC++ 'nesting depth' issue.
llvm-svn: 45567
2008-01-04 04:38:35 +00:00
Chris Lattner
a47634ecb1
Don't let IntrinsicID be uninitialized if it doesn't match.
...
llvm-svn: 45563
2008-01-04 03:32:52 +00:00
Bill Wendling
ddc77f8e4c
Remove the default else. This was ending in code that looked like this:
...
if (!strcmp(Target, "x86")) {
// ...
}
else
IntrinsicID = Intrinsic::not_intrinsic;
llvm-svn: 45557
2008-01-03 23:02:16 +00:00
Chris Lattner
91678fc457
Fix a build problem with VC++ by not doing the target prefix
...
comparison for every builtin. This reduces the depth of
the if/elseif chain dramatically.
llvm-svn: 45500
2008-01-02 21:24:22 +00:00
Chris Lattner
dc3c9050f8
tblgen shouldn't include headers from llvm codegen.
...
llvm-svn: 45429
2007-12-30 00:25:23 +00:00
Chris Lattner
8adcd9f32e
remove attributions from utils.
...
llvm-svn: 45419
2007-12-29 20:37:13 +00:00
Chris Lattner
8fa21acd25
remove attributions from tools/utils makefiles.
...
llvm-svn: 45414
2007-12-29 20:07:17 +00:00
Christopher Lamb
edf0788758
Change the PointerType api for creating pointer types. The old functionality of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space.
...
llvm-svn: 45082
2007-12-17 01:12:55 +00:00
Bill Wendling
cb77f04e1f
Add flags to indicate that there are "never" side effects or that there "may be"
...
side effects for machine instructions.
llvm-svn: 45022
2007-12-14 01:48:59 +00:00
Evan Cheng
687567bca5
Oops. Forgot these.
...
llvm-svn: 44969
2007-12-13 00:42:35 +00:00
Duncan Sands
38ef3a8ec7
Rather than having special rules like "intrinsics cannot
...
throw exceptions", just mark intrinsics with the nounwind
attribute. Likewise, mark intrinsics as readnone/readonly
and get rid of special aliasing logic (which didn't use
anything more than this anyway).
llvm-svn: 44544
2007-12-03 20:06:50 +00:00
Chuck Rose III
084b0eb3ca
Add TGParser files to VStudio project files. Removed generated files section from TableGen project file as it is no longer needed. #Include <algorithm> directly from TGParser.cpp so it can see std::reverse.
...
llvm-svn: 44340
2007-11-26 23:19:59 +00:00
Chris Lattner
176d048901
add missing #include
...
llvm-svn: 44282
2007-11-22 23:19:05 +00:00
Chris Lattner
5241695dca
resolve the last fixme's in the new tblgen parser.
...
llvm-svn: 44277
2007-11-22 21:06:59 +00:00
Chris Lattner
695506c046
change the Init print methods to return strings, and implement
...
print in terms of that.
llvm-svn: 44276
2007-11-22 21:05:25 +00:00
Chris Lattner
1b1e96b8d7
eliminate a bunch of print methods that are duplicate with the getAsString() method.
...
llvm-svn: 44275
2007-11-22 20:51:34 +00:00
Chris Lattner
f4127dd48e
Rewrite the tblgen parser in a recursive descent style, eliminating the bison parser.
...
This makes the parser much easier to understand, eliminates a ton of global variables,
and gives tblgen nice caret diagnostics. It is also faster, but tblgen probably doesn't
care about performance.
There are a couple of FIXMEs which I will take care of next.
llvm-svn: 44274
2007-11-22 20:49:04 +00:00
Chuck Rose III
738fa17c4e
Switching back to strtoll. Including config.h. On VStudio builds, this overrides strtoll.
...
llvm-svn: 44264
2007-11-21 19:36:25 +00:00
Chuck Rose III
07b57d2626
This change does a couple of things. First it gets the Visual Studio builds working.
...
I added the lexing files to the VStudio projects and removed the .l files from the
VStudio projects. There was a problem with use of strtoll in TGLexer.cpp and Chris
suggested switching to strtol, so that's included here.
Additionally, this checkin adds minimal x64 builds to the VStudio builds. Build issues
related to x64 in the windows specific files for DynamicLibrary.inc and Singals.inc
are worked around, but not ultimately solved. Binaries used to be stored in
...\win32\{Debug|Release}
but are now kept in
...\win32\bin\{win32|x64}\{Debug|Release}
intermediate files will continue to be stored in the individual project directories under
win32.
Some names will likely change in the future to reflect that the vstudio projects
are no longer 32-bit only, but I wanted to get things up and running today so kept away
from bigger restructuring.
llvm-svn: 44260
2007-11-21 00:37:56 +00:00
Chris Lattner
8b9ecdad0c
Add the ability to convert a tblgen type to a string.
...
llvm-svn: 44257
2007-11-20 22:25:16 +00:00
Chris Lattner
4205d25f06
Record the start of the current token, for use in error reporting.
...
llvm-svn: 44227
2007-11-19 07:43:52 +00:00
Chris Lattner
1a26296453
Add carat diagnostics to tblgen lexer errors.
...
llvm-svn: 44226
2007-11-19 07:38:58 +00:00
Chris Lattner
6070028736
minor cleanups
...
llvm-svn: 44212
2007-11-18 05:48:46 +00:00
Chris Lattner
98c39513ab
ensure header is self contained.
...
llvm-svn: 44211
2007-11-18 05:25:45 +00:00
Chris Lattner
da4ab67127
reimplement the tblgen lexer with a simple hand-written lexer. This eliminates
...
one dependency on flex and gets rid of two ".cvs" files.
llvm-svn: 44210
2007-11-18 02:57:27 +00:00
Duncan Sands
e2287ed552
Eliminate the recently introduced CCAssignToStackABISizeAlign
...
in favour of teaching CCAssignToStack that size 0 and/or align
0 means to use the ABI values. This seems a neater solution.
It is safe since no legal value type has size 0.
llvm-svn: 44107
2007-11-14 08:29:13 +00:00
Dale Johannesen
7a7085f6d3
Add parameter to getDwarfRegNum to permit targets
...
to use different mappings for EH and debug info;
no functional change yet.
Fix warning in X86CodeEmitter.
llvm-svn: 44056
2007-11-13 19:13:01 +00:00
Owen Anderson
933b5b7e62
Add a flag for indirect branch instructions.
...
Target maintainers: please check that the instructions for your target are correctly marked.
llvm-svn: 44012
2007-11-12 07:39:39 +00:00
Owen Anderson
55f4e5d2dd
Fix on 64-bit machines.
...
llvm-svn: 44001
2007-11-12 00:56:04 +00:00
Anton Korobeynikov
4edfea438a
Use TableGen to emit information for dwarf register numbers.
...
This makes DwarfRegNum to accept list of numbers instead.
Added three different "flavours", but only slightly tested on x86-32/linux.
Please check another subtargets if possible,
llvm-svn: 43997
2007-11-11 19:50:10 +00:00
Anton Korobeynikov
a468a11d80
Add convenient helper to obtain list of ints
...
llvm-svn: 43993
2007-11-11 11:19:37 +00:00
Dale Johannesen
b988e7e8cd
Add CCAssignToStackABISizeAlign for convenience in
...
dealing with types whose size & alignment are
different on different subtargets. Use it for x86 f80.
llvm-svn: 43988
2007-11-10 22:07:15 +00:00
Dale Johannesen
fbe69d2cd6
Interchange Dwarf numbers of ESP and EBP on x86 Darwin.
...
Much improvement in exception handling.
llvm-svn: 43794
2007-11-07 00:25:05 +00:00
Neil Booth
758d0fd736
Remove some unnecessary C-style statics.
...
Restore an assertion that arithmetic can be performed on this format.
llvm-svn: 43638
2007-11-02 15:10:05 +00:00
Chris Lattner
0083d8f38d
switch some calls to SelectionDAG::getTargetNode to use
...
the one that takes an operand list instead of explicit
operands. There is one left though, the more interesting
one :)
llvm-svn: 43290
2007-10-24 06:25:09 +00:00
Chris Lattner
604b2314c8
tblgen uses dynamic_cast heavily, so it needs rtti info
...
llvm-svn: 43126
2007-10-18 15:54:45 +00:00
Gordon Henriksen
0ab3d27641
Reverting unnecessary commit of generated files.
...
llvm-svn: 43095
2007-10-17 21:36:08 +00:00
Gordon Henriksen
ef5d08f4ea
Switching TargetMachineRegistry to use the new generic Registry.
...
llvm-svn: 43094
2007-10-17 21:28:48 +00:00
Hartmut Kaiser
ec8a8d1f51
Updated VC++ build system.
...
Silenced some VC warnings.
I'm getting linker errors, though: unresolved externals:
llvm::Split<class llvm::BasicBlock *,struct llvm::GraphTraits<class llvm::BasicBlock *> >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)
and
llvm::Split<struct llvm::Inverse<class llvm::BasicBlock *>,struct llvm::GraphTraits<struct llvm::Inverse<class llvm::BasicBlock *> > >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)
Where are these defined?
llvm-svn: 43073
2007-10-17 14:56:40 +00:00
Chris Lattner
3cfb56d489
One mundane change: Change ReplaceAllUsesOfValueWith to *optionally*
...
take a deleted nodes vector, instead of requiring it.
One more significant change: Implement the start of a legalizer that
just works on types. This legalizer is designed to run before the
operation legalizer and ensure just that the input dag is transformed
into an output dag whose operand and result types are all legal, even
if the operations on those types are not.
This design/impl has the following advantages:
1. When finished, this will *significantly* reduce the amount of code in
LegalizeDAG.cpp. It will remove all the code related to promotion and
expansion as well as splitting and scalarizing vectors.
2. The new code is very simple, idiomatic, and modular: unlike
LegalizeDAG.cpp, it has no 3000 line long functions. :)
3. The implementation is completely iterative instead of recursive, good
for hacking on large dags without blowing out your stack.
4. The implementation updates nodes in place when possible instead of
deallocating and reallocating the entire graph that points to some
mutated node.
5. The code nicely separates out handling of operations with invalid
results from operations with invalid operands, making some cases
simpler and easier to understand.
6. The new -debug-only=legalize-types option is very very handy :),
allowing you to easily understand what legalize types is doing.
This is not yet done. Until the ifdef added to SelectionDAGISel.cpp is
enabled, this does nothing. However, this code is sufficient to legalize
all of the code in 186.crafty, olden and freebench on an x86 machine. The
biggest issues are:
1. Vectors aren't implemented at all yet
2. SoftFP is a mess, I need to talk to Evan about it.
3. No lowering to libcalls is implemented yet.
4. Various operations are missing etc.
5. There are FIXME's for stuff I hax0r'd out, like softfp.
Hey, at least it is a step in the right direction :). If you'd like to help,
just enable the #ifdef in SelectionDAGISel.cpp and compile code with it. If
this explodes it will tell you what needs to be implemented. Help is
certainly appreciated.
Once this goes in, we can do three things:
1. Add a new pass of dag combine between the "type legalizer" and "operation
legalizer" passes. This will let us catch some long-standing isel issues
that we miss because operation legalization often obfuscates the dag with
target-specific nodes.
2. We can rip out all of the type legalization code from LegalizeDAG.cpp,
making it much smaller and simpler. When that happens we can then
reimplement the core functionality left in it in a much more efficient and
non-recursive way.
3. Once the whole legalizer is non-recursive, we can implement whole-function
selectiondags maybe...
llvm-svn: 42981
2007-10-15 06:10:22 +00:00
Evan Cheng
2e3d609da6
Fix typos.
...
llvm-svn: 42896
2007-10-12 08:39:02 +00:00
Dale Johannesen
25a00a63eb
Add sqrt and powi intrinsics for long double.
...
llvm-svn: 42423
2007-09-28 01:08:20 +00:00
Evan Cheng
43686dad3d
Rename keyword "modify" -> "implicit".
...
llvm-svn: 42282
2007-09-25 01:48:59 +00:00
Evan Cheng
f73fb6261b
Add CopyCost to TargetRegisterClass. This specifies the cost of copying a value
...
between two registers in the specific class.
llvm-svn: 42123
2007-09-19 01:35:01 +00:00
Evan Cheng
ffd6995cc7
Bug fix and minor clean up of generated code.
...
llvm-svn: 42069
2007-09-17 22:26:41 +00:00
Chris Lattner
1406f7143b
regenerate
...
llvm-svn: 42036
2007-09-17 17:40:48 +00:00
Dan Gohman
58c468fb09
Remove spurious consts. This fixes warnings with compilers that
...
are strict about such things.
llvm-svn: 41956
2007-09-14 20:08:19 +00:00
Evan Cheng
59c39dc197
Initial support for multi-result patterns:
...
1.
[(set GR32:$dst, (add GR32:$src1, GR32:$src2)),
(modify EFLAGS)]
This indicates the source pattern expects the instruction would produce 2 values. The first is the result of the addition. The second is an implicit definition in register EFLAGS.
2.
def : Pat<(parallel (addc GR32:$src1, GR32:$src2), (modify EFLAGS)), ()>
Similar to #1 except this is used for def : Pat patterns.
llvm-svn: 41897
2007-09-12 23:30:14 +00:00
Evan Cheng
c7852a689a
Allow set operators with multiple destinations, i.e. (set x, y, (op a, b)).
...
llvm-svn: 41861
2007-09-11 19:52:18 +00:00
Evan Cheng
cef2c0efcc
TableGen no longer emit CopyFromReg nodes for implicit results in physical
...
registers. The scheduler is now responsible for emitting them.
llvm-svn: 41781
2007-09-07 23:59:02 +00:00
Evan Cheng
20711a8b9a
Always check the type of node. This prevents situations such as selecting 32-bit rotate target instruction for a 64-bit node when 64-bit pattern is missing.
...
llvm-svn: 41710
2007-09-04 20:18:28 +00:00
Dan Gohman
febf946ea7
Add MVT::fAny for overloading intrinsics on floating-point types.
...
llvm-svn: 41128
2007-08-16 21:57:19 +00:00
Rafael Espindola
66011c17d5
propagate struct size and alignment of byval arguments to the DAG
...
llvm-svn: 40986
2007-08-10 14:44:42 +00:00
Chandler Carruth
bebc3bb2e3
This resolves a regression of BasicAA which failed to find any memory information for overloaded intrinsics (PR1600). This resolves that issue, and improves the matching scheme to use a BitVector rather than a binary search.
...
llvm-svn: 40872
2007-08-06 20:57:16 +00:00
Chandler Carruth
7132e00de7
This is the patch to provide clean intrinsic function overloading support in LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future.
...
This also changes the syntax for llvm.bswap, llvm.part.set, llvm.part.select, and llvm.ct* intrinsics. They are automatically upgraded by both the LLVM ASM reader and the bitcode reader. The test cases have been updated, with special tests added to ensure the automatic upgrading is supported.
llvm-svn: 40807
2007-08-04 01:51:18 +00:00
Evan Cheng
c9de9cec18
Added TargetInstrDescriptor::numDefs - num of results.
...
llvm-svn: 40709
2007-08-02 00:20:17 +00:00
Dan Gohman
e379f08b19
More explicit keywords.
...
llvm-svn: 40589
2007-07-30 14:51:59 +00:00
Chuck Rose III
1a39a2d13d
VStudio compiler errors and placing Function*->ExFunc map under ManagedStatic control.
...
This commit fixes two things. One is a pair of VStudio compiler errors stemming from variables
which defined within the for loop statement and also within the body of the for loop. I fixed these
by renaming one of the two variables. Additionally, I've made the Function*->ExFunc map in
ExternalFunctions.cpp a ManagedStatic object, so that cleanup will be done on llvm_shutdown. In repeated
uses of the interpreter, where the same Function* address may get used for completely differnet functions,
this was causing a crash.
llvm-svn: 40558
2007-07-27 18:26:35 +00:00
Dan Gohman
336718dd5c
Fix a pasto in a comment.
...
llvm-svn: 40527
2007-07-26 15:11:00 +00:00
Christopher Lamb
2f3becc49c
Have register info provide the inverse mapping of register->superregisters. PR1350
...
llvm-svn: 40519
2007-07-26 08:01:58 +00:00
Christopher Lamb
cde0ee5221
Add target independent MachineInstr's to represent subreg insert/extract in MBB's. PR1350
...
llvm-svn: 40518
2007-07-26 07:48:21 +00:00
Christopher Lamb
c9ea29456a
Teach TableGen about the new vector types.
...
llvm-svn: 40513
2007-07-26 06:41:18 +00:00
Dan Gohman
5a629d4cee
A minor simplication in the generated code.
...
llvm-svn: 40479
2007-07-24 22:58:00 +00:00
Evan Cheng
869852b03e
No need for noResults anymore.
...
llvm-svn: 40075
2007-07-20 00:21:23 +00:00
Evan Cheng
94b5a80b93
Change instruction description to split OperandList into OutOperandList and
...
InOperandList. This gives one piece of important information: # of results
produced by an instruction.
An example of the change:
def ADD32rr : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
=>
def ADD32rr : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
llvm-svn: 40033
2007-07-19 01:14:50 +00:00
Chris Lattner
6cc9a08734
Work around a bogus gcc 4.2 warning.
...
llvm-svn: 39993
2007-07-18 04:51:57 +00:00
Dan Gohman
10835d9c67
Eliminate an unused parameter.
...
llvm-svn: 39828
2007-07-13 20:16:50 +00:00
Evan Cheng
6e3c705d74
Try committing again. Add OptionalDefOperand. Remove clobbersPred.
...
llvm-svn: 38498
2007-07-10 18:05:01 +00:00
Evan Cheng
9835db562f
ImmutablePredicateOperand is no more.
...
llvm-svn: 37963
2007-07-06 23:23:38 +00:00
Rafael Espindola
b567e3ffb0
Add the byval attribute
...
llvm-svn: 37940
2007-07-06 10:57:03 +00:00
Evan Cheng
a7d41aad4f
Refactor code to add initial support for OptionalDefOperand.
...
llvm-svn: 37933
2007-07-06 01:05:26 +00:00
Evan Cheng
ffabff11c0
Teach DAGISelEmitter about zero_reg.
...
llvm-svn: 37900
2007-07-05 07:19:45 +00:00
Evan Cheng
e32e7fb40d
Instructions with ImmutablePredicateOperand aren't really predicable since their predicates are fixed at isel time.
...
llvm-svn: 37899
2007-07-05 07:19:29 +00:00
John Criswell
2660cef6d7
Convert .cvsignore files
...
llvm-svn: 37801
2007-06-29 16:35:07 +00:00
Evan Cheng
59e5e118ac
One additional field in TargetRegisterDesc.
...
llvm-svn: 37760
2007-06-27 17:09:34 +00:00
Evan Cheng
2e887c0b84
Add immediate sub-registers.
...
llvm-svn: 37738
2007-06-26 20:59:16 +00:00
Dan Gohman
e8c1e428f2
Revert the earlier change that removed the M_REMATERIALIZABLE machine
...
instruction flag, and use the flag along with a virtual member function
hook for targets to override if there are instructions that are only
trivially rematerializable with specific operands (i.e. constant pool
loads).
llvm-svn: 37728
2007-06-26 00:48:07 +00:00
Dan Gohman
02d1a7844a
Fix a typo in a comment.
...
llvm-svn: 37727
2007-06-26 00:43:18 +00:00
Chris Lattner
b4777f087a
silence warning when assertions are disabled.
...
llvm-svn: 37654
2007-06-19 06:40:46 +00:00
Dan Gohman
9e82064924
Replace M_REMATERIALIZIBLE and the newly-added isOtherReMaterializableLoad
...
with a general target hook to identify rematerializable instructions. Some
instructions are only rematerializable with specific operands, such as loads
from constant pools, while others are always rematerializable. This hook
allows both to be identified as being rematerializable with the same
mechanism.
llvm-svn: 37644
2007-06-19 01:48:05 +00:00
Evan Cheng
a7ca624028
Replace TargetInstrInfo::CanBeDuplicated() with a M_NOT_DUPLICABLE bit.
...
llvm-svn: 37643
2007-06-19 01:26:51 +00:00
Christopher Lamb
f274efef9f
Add support to tablegen for specifying subregister classes on a per register class basis.
...
llvm-svn: 37572
2007-06-13 22:20:15 +00:00
Evan Cheng
452a818c6a
Add clobbersPred - instruction that clobbers condition code / register which are used to predicate instructions.
...
llvm-svn: 37465
2007-06-06 10:14:55 +00:00
Bill Wendling
6357bf20fa
Patches by Chuck Rose to unbreak V Studio builds.
...
Thanks Chuck!
llvm-svn: 37428
2007-06-04 23:52:59 +00:00
Dan Gohman
a23ef8a8f2
Remove the operator<< for MVT::ValueType in preparation for MVT::ValueType
...
being changed from an enum to an integer type, which can't have a custom
operator<< overload.
llvm-svn: 37412
2007-06-04 16:11:03 +00:00
Reid Spencer
c23c9fce34
The Intrinsic::getDeclaration function's Tys parameter only contains the
...
types of the iAny types involved in the overloaded intrinsic. Thus, we
can't use the argument number as the index but have to count them separately
in order to index Tys correctly. This patch rectifies this situation.
llvm-svn: 37296
2007-05-22 19:30:31 +00:00
Evan Cheng
b99726d7a0
Rename M_PREDICATED to M_PREDICABLE; opcode can be specified isPredicable without having a PredicateOperand.
...
llvm-svn: 37116
2007-05-16 20:45:24 +00:00
Chris Lattner
2b5badc0e1
Fix CodeGen/PowerPC/2007-05-14-InlineAsmSelectCrash.ll, the other recent
...
patches are also needed.
llvm-svn: 37070
2007-05-15 01:36:44 +00:00
Evan Cheng
a32dee205f
Added \!con(a,b) syntax to concatnate two dag fragments.
...
llvm-svn: 37063
2007-05-15 01:23:24 +00:00
Evan Cheng
c0fb94596a
Mark all (not just the first) predicate operand M_PREDICATE_OPERAND.
...
llvm-svn: 37061
2007-05-15 01:20:36 +00:00
Evan Cheng
b0925c0e49
PredicateOperand related bug fix.
...
llvm-svn: 37060
2007-05-15 01:19:51 +00:00
Evan Cheng
5162f584c7
If a PredicateOperand has an empty ExecuteAlways field, treat it as if a normal operand for isel.
...
llvm-svn: 36946
2007-05-08 21:04:07 +00:00
Bill Wendling
e6182267d7
Add an "implies" field to features. This indicates that, if the current
...
feature is set, then the features in the implied list should be set also.
The opposite is also enforced: if a feature in the implied list isn't set,
then the feature that owns that implies list shouldn't be set either.
llvm-svn: 36756
2007-05-04 20:38:40 +00:00
Nate Begeman
fd788aafba
A bit of feedback from Chris that I missed; error rather than asserting.
...
llvm-svn: 36619
2007-05-01 06:08:36 +00:00
Nate Begeman
27a625a74b
llvm bug #1350 , parts 1, 2, and 3.
...
llvm-svn: 36618
2007-05-01 05:57:02 +00:00
Dan Gohman
2966c9072b
Update a comment to reflect recent changes in the type system.
...
llvm-svn: 36486
2007-04-26 19:43:14 +00:00
Lauro Ramos Venancio
83fc4f3c3c
bugfix: remember that ResNode was declared.
...
llvm-svn: 36477
2007-04-26 17:03:22 +00:00
Christopher Lamb
8996dce6ec
Fix generation of certain scheduler itineraries.
...
llvm-svn: 36338
2007-04-22 09:04:24 +00:00
Evan Cheng
f0c955b4dc
Bug fix; add super-registers sets.
...
llvm-svn: 36296
2007-04-21 00:55:29 +00:00
Lauro Ramos Venancio
2518889872
Implement "general dynamic", "initial exec" and "local exec" TLS models for
...
X86 32 bits.
llvm-svn: 36283
2007-04-20 21:38:10 +00:00
Evan Cheng
ac9fdde7f4
Add sub-registers sets.
...
llvm-svn: 36278
2007-04-20 21:13:46 +00:00
Reid Spencer
9c2eec377e
For PR1328:
...
Don't assert everytime an intrinsic name isn't recognized. Instead, make
the assert optional when callin getIntrinsicID(). This allows the assembler
to handle invalid intrinsic names gracefully.
llvm-svn: 36120
2007-04-16 06:54:34 +00:00
Reid Spencer
e67d0c226d
For PR1297:
...
Implement code generation for overloaded intrinsic functions. The basic
difference is that "actual" argument types must be provided when
constructing intrinsic names and types. Also, for recognition, only the
prefix is examined. If it matches, the suffix is assumed to match. The
suffix is checked by the Verifier, however.
llvm-svn: 35539
2007-04-01 07:20:02 +00:00
Bill Wendling
98d2104c6f
Add support for the v1i64 type. This makes better code for this:
...
#include <mmintrin.h>
extern __m64 C;
void baz(__v2si *A, __v2si *B)
{
*A = C;
_mm_empty();
}
We get this:
_baz:
call "L1$pb"
"L1$pb":
popl %eax
movl L_C$non_lazy_ptr-"L1$pb"(%eax), %eax
movq (%eax), %mm0
movl 4(%esp), %eax
movq %mm0, (%eax)
emms
ret
GCC gives us this:
_baz:
pushl %ebx
call L3
"L00000000001$pb":
L3:
popl %ebx
subl $8, %esp
movl L_C$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
movl (%eax), %edx
movl 4(%eax), %ecx
movl 16(%esp), %eax
movl %edx, (%eax)
movl %ecx, 4(%eax)
emms
addl $8, %esp
popl %ebx
ret
llvm-svn: 35351
2007-03-26 07:53:08 +00:00
Evan Cheng
9d7d130835
Recognize target instruction flag 'isReMaterializable'.
...
llvm-svn: 35159
2007-03-19 06:20:37 +00:00
Anton Korobeynikov
ed4b303c10
Refactoring of formal parameter flags. Enable properly use of
...
zext/sext/aext stuff.
llvm-svn: 35008
2007-03-07 16:25:09 +00:00
Anton Korobeynikov
e7ec3bc7bc
Use new SDIselParamAttr enumeration. This removes "magick" constants
...
from formal attributes' flags processing.
llvm-svn: 34963
2007-03-06 08:12:33 +00:00
Chris Lattner
7fb0823a7b
rename some CCActions
...
llvm-svn: 34724
2007-02-28 05:29:06 +00:00
Chris Lattner
22778a3d1c
implement CCPromoteToType
...
llvm-svn: 34720
2007-02-28 04:43:48 +00:00
Chris Lattner
cbebe4600f
reapply
...
llvm-svn: 34697
2007-02-27 22:08:27 +00:00
Chris Lattner
bf5f3945fd
*** empty log message ***
...
llvm-svn: 34696
2007-02-27 22:05:51 +00:00
Evan Cheng
116ec30e4f
Backing out
...
CodeGenTarget.cpp updated: 1.82 -> 1.83
Record.cpp updated: 1.55 -> 1.56
Record.h updated: 1.59 -> 1.60
TableGen.cpp updated: 1.47 -> 1.48
It's missing CallingConvEmitter.h
llvm-svn: 34693
2007-02-27 21:44:08 +00:00
Chris Lattner
fa024e1ad1
initial support for calling convention generation, still unfinished.
...
llvm-svn: 34682
2007-02-27 20:43:37 +00:00
Chris Lattner
68a8bcce99
emit an enum value for the # of target registers.
...
llvm-svn: 34624
2007-02-26 03:34:38 +00:00
Chris Lattner
49e58cfe42
the lengths of the strings are known, just use memcmp
...
llvm-svn: 34321
2007-02-15 19:26:16 +00:00
Chris Lattner
1e92e06779
Implement Function::getIntrinsicID without it needing to call Value::getName,
...
which allocates a string. This speeds up instcombine on 447.dealII by 5%.
llvm-svn: 34318
2007-02-15 19:17:16 +00:00
Reid Spencer
09575bac2e
For PR1195:
...
Change use of "packed" term to "vector" in comments, strings, variable
names, etc.
llvm-svn: 34300
2007-02-15 03:39:18 +00:00
Reid Spencer
d84d35ba70
For PR1195:
...
Rename PackedType -> VectorType, ConstantPacked -> ConstantVector, and
PackedTyID -> VectorTyID. No functional changes.
llvm-svn: 34293
2007-02-15 02:26:10 +00:00
Jim Laskey
2682ea616f
Automatically generating intrinsic declarations from Dan Gohman. Modified
...
to construct FunctionType in separate function, and, have getDeclaration
return a Function instead of a Constant.
llvm-svn: 34008
2007-02-07 20:38:26 +00:00
Reid Spencer
008e65ff96
Set the new NO_INSTALL flag for build-only tools.
...
llvm-svn: 33967
2007-02-06 18:51:28 +00:00
Jim Laskey
132fb185ee
Error check and eliminate unnecessary value.
...
llvm-svn: 33966
2007-02-06 18:30:58 +00:00
Jim Laskey
207230b984
Regenerate.
...
llvm-svn: 33965
2007-02-06 18:20:07 +00:00
Jim Laskey
a9e7064774
Deemed too cute to live.
...
llvm-svn: 33964
2007-02-06 18:19:44 +00:00
Jim Laskey
f4163f9bbc
Regenerate.
...
llvm-svn: 33963
2007-02-06 18:03:31 +00:00
Jim Laskey
5aed30d5cf
Support var arg intrinsics.
...
llvm-svn: 33962
2007-02-06 18:02:54 +00:00
Jim Laskey
73e79b5a43
Make the constant honest.
...
llvm-svn: 33557
2007-01-26 23:00:54 +00:00
Jim Laskey
214c582002
Files missing from LABEL check in.
...
llvm-svn: 33539
2007-01-26 17:29:20 +00:00
Chris Lattner
100602d756
Make tblgen error more useful. Patch by B. Scott Michel
...
llvm-svn: 33295
2007-01-17 07:45:12 +00:00
Reid Spencer
7a9c62baa6
For PR1064:
...
Implement the arbitrary bit-width integer feature. The feature allows
integers of any bitwidth (up to 64) to be defined instead of just 1, 8,
16, 32, and 64 bit integers.
This change does several things:
1. Introduces a new Derived Type, IntegerType, to represent the number of
bits in an integer. The Type classes SubclassData field is used to
store the number of bits. This allows 2^23 bits in an integer type.
2. Removes the five integer Type::TypeID values for the 1, 8, 16, 32 and
64-bit integers. These are replaced with just IntegerType which is not
a primitive any more.
3. Adjust the rest of LLVM to account for this change.
Note that while this incremental change lays the foundation for arbitrary
bit-width integers, LLVM has not yet been converted to actually deal with
them in any significant way. Most optimization passes, for example, will
still only deal with the byte-width integer types. Future increments
will rectify this situation.
llvm-svn: 33113
2007-01-12 07:05:14 +00:00
Reid Spencer
bc013ba367
For PR950:
...
Convert signed integer types to signless.
llvm-svn: 32786
2006-12-31 05:50:28 +00:00
Jim Laskey
3f7d047a14
Ignore entries with blank names.
...
llvm-svn: 32491
2006-12-12 20:55:58 +00:00
Jim Laskey
8171e58bd9
Rollback changes to take a different tack.
...
llvm-svn: 32488
2006-12-12 19:26:50 +00:00
Jim Laskey
7c3cab9ddc
Honor the command line specification for machine type.
...
llvm-svn: 32483
2006-12-12 16:07:33 +00:00
Bill Wendling
9bfb1e1f29
What should be the last unnecessary <iostream>s in the library.
...
llvm-svn: 32333
2006-12-07 22:21:48 +00:00
Evan Cheng
8e94078483
Match TargetInstrInfo changes.
...
llvm-svn: 32107
2006-12-01 22:57:41 +00:00
Chris Lattner
55b8683d24
Fix PR1001, patch by Nikhil Patil!
...
llvm-svn: 31880
2006-11-20 18:54:33 +00:00
Evan Cheng
71adba6dce
Add opcode to TargetInstrDescriptor.
...
llvm-svn: 31804
2006-11-17 01:46:27 +00:00
Chris Lattner
78a403f90e
Remove the isTwoAddress property from the CodeGenInstruction class. It should
...
not be used for anything other than backwards compat constraint handling.
Add support for a new DisableEncoding property which contains a list of
registers that should not be encoded by the generated code emitter. Convert
the codeemitter generator to use this, fixing some PPC JIT regressions.
llvm-svn: 31769
2006-11-15 23:23:02 +00:00
Chris Lattner
c94f214d22
ADd support for adding constraints to suboperands
...
llvm-svn: 31748
2006-11-15 02:38:17 +00:00
Chris Lattner
c75081b7a8
restore some 'magic' code that I removed: it is needed. Add comments explaining
...
why.
llvm-svn: 31743
2006-11-14 22:17:10 +00:00
Chris Lattner
c5dd5b11a4
minimal hack to get patterns whose result type is iPTR to be selected.
...
llvm-svn: 31742
2006-11-14 21:50:27 +00:00
Chris Lattner
75165d07a0
remove some dead code
...
llvm-svn: 31740
2006-11-14 21:41:35 +00:00
Chris Lattner
7c9f48cefb
Add support for nodes that return iPTR.
...
llvm-svn: 31739
2006-11-14 21:32:01 +00:00
Chris Lattner
110c777f2c
changes to get ptr_rc to be accepted in patterns. This is needed for ppc preinc
...
stores.
llvm-svn: 31738
2006-11-14 21:18:40 +00:00
Chris Lattner
f8c06b335d
Fix a bug handling nodes with variable arguments. The code was fixed to assume
...
that there were two input operands before the variable operand portion. This
*happened* to be true for all call instructions, which took a chain and a
destination, but was not true for the PPC BCTRL instruction, whose destination
is implicit.
Making this code more general allows elimination of the custom selection logic
for BCTRL.
llvm-svn: 31732
2006-11-14 18:41:38 +00:00
Chris Lattner
ba7b3673f9
allow ptr_rc to explicitly appear in an instructions operand list, it doesn't
...
have to be a subpart of a complex operand.
llvm-svn: 31618
2006-11-10 02:01:40 +00:00
Evan Cheng
1698c2999c
Remove M_2_ADDR_FLAG.
...
llvm-svn: 31583
2006-11-09 02:22:54 +00:00
Evan Cheng
7120b9e9c7
Divide select methods into groups by SelectionDAG node opcodes (ISD::ADD,
...
X86ISD::CMP, etc.) instead of SDNode names (add, x86cmp, etc). We now allow
multiple SDNodes to map to the same SelectionDAG node (e.g. store, indexed
store).
llvm-svn: 31575
2006-11-08 23:01:03 +00:00
Evan Cheng
d715a2cbfb
Always pass the root node to ComplexPattern isel matching function.
...
llvm-svn: 31570
2006-11-08 20:31:10 +00:00
Chris Lattner
5d14eac21d
emit TIED_TO correctly
...
llvm-svn: 31484
2006-11-07 01:27:55 +00:00
Chris Lattner
f62138e792
Mark predicate operands as such in operand info.
...
llvm-svn: 31483
2006-11-06 23:53:31 +00:00
Chris Lattner
33f5a51020
simplify the way operand flags and constraints are handled, making it easier
...
to extend.
llvm-svn: 31481
2006-11-06 23:49:51 +00:00
Chris Lattner
8a9c91de33
recognize ppc's blr instruction as predicated
...
llvm-svn: 31480
2006-11-06 21:44:54 +00:00
Chris Lattner
698c900b0c
regenerate
...
llvm-svn: 31472
2006-11-05 23:28:58 +00:00
Jeff Cohen
7d6f3db3e2
Unbreak VC++ build.
...
llvm-svn: 31464
2006-11-05 19:31:28 +00:00
Evan Cheng
3cb5bf721c
Clean up some code.
...
llvm-svn: 31451
2006-11-04 09:40:23 +00:00
Chris Lattner
ed07f23c52
Parse PredicateOperand's. When an instruction takes one, have the generated
...
isel fill in the instruction operands with the 'execute always' value
automatically.
llvm-svn: 31448
2006-11-04 05:12:02 +00:00
Chris Lattner
1faa9097c7
First steps to getting PredicateOperand's to work. This handles instruction
...
and pat pattern definitions. Codegen is not right for them yet.
llvm-svn: 31444
2006-11-04 01:35:50 +00:00
Chris Lattner
7982de167f
eliminate need for the NumMIOperands field in Operand.
...
llvm-svn: 31432
2006-11-03 23:45:17 +00:00
Reid Spencer
03c6038226
Remove an unused variable.
...
llvm-svn: 31403
2006-11-03 01:48:30 +00:00
Reid Spencer
5314f04de5
Don't write out variables that are never used.
...
llvm-svn: 31396
2006-11-03 01:28:12 +00:00
Chris Lattner
71f55131d4
silence warnings
...
llvm-svn: 31392
2006-11-03 01:11:05 +00:00
Reid Spencer
6152ad000c
Revert last patch which causes tblgen to segfault (why, I'm not sure).
...
llvm-svn: 31383
2006-11-02 21:07:40 +00:00
Reid Spencer
2a82686563
For PR786:
...
Remove unused variables.
llvm-svn: 31381
2006-11-02 20:46:16 +00:00
Evan Cheng
3557a39494
Tied-to constraint must be op_with_larger_idx = op_with_smaller_idx or else throw an exception.
...
llvm-svn: 31361
2006-11-01 23:03:11 +00:00
Evan Cheng
23654935f4
Not meant to be checked in.
...
llvm-svn: 31334
2006-11-01 00:27:59 +00:00
Evan Cheng
ac79c7c4c0
Add operand constraints to TargetInstrInfo.
...
llvm-svn: 31333
2006-11-01 00:27:05 +00:00
Evan Cheng
a74965f15a
Passing isel root and use operands to ComplexPattern functions, these should do the usual load folding checks as well.
...
llvm-svn: 30972
2006-10-16 06:33:44 +00:00
Evan Cheng
cfb9526d61
When checking if a load can be folded, we check if there is any non-direct
...
way to reach the load via any nodes that would be folded. Start from the
root of the matched sub-tree.
llvm-svn: 30956
2006-10-14 08:30:15 +00:00
Evan Cheng
1d04dd3aac
Really remove dead nodes from isel queue.
...
llvm-svn: 30923
2006-10-12 23:18:52 +00:00
Evan Cheng
8e770f5589
Use RemoveDeadNode to kill dead node.
...
llvm-svn: 30917
2006-10-12 20:35:19 +00:00
Evan Cheng
d7125583f7
Prior load folding check on chain operand was too strict. It requires the
...
chain operand to point to the load being folded. Now we relax this, traversing
up the chain, if it doesn't reach the load, then it's ok. We will create a
TokenFactor (of all the chain operands and the load's chain) to capture all
the control flow dependencies.
llvm-svn: 30897
2006-10-12 02:08:53 +00:00
Evan Cheng
2022c79d7f
Added properties such as SDNPHasChain to ComplexPattern.
...
llvm-svn: 30890
2006-10-11 21:02:01 +00:00
Chris Lattner
c52dab5894
regenerate
...
llvm-svn: 30888
2006-10-11 18:13:09 +00:00
Chris Lattner
9d9de698b5
Add support for let expressions around an mdef. This implements a new part
...
of Regression/TableGen/MultiClass.td.
llvm-svn: 30887
2006-10-11 18:12:44 +00:00
Chris Lattner
f405928e86
Special case tblgen generated code for patterns like (and X, 255) or (or X, 42).
...
The dag/inst combiners often 'simplify' the masked value based on whether
or not the bits are live or known zero/one. This is good and dandy, but
often causes special case patterns to fail, such as alpha's CMPBGE pattern,
which looks like "(set GPRC:$RC, (setuge (and GPRC:$RA, 255), (and GPRC:$RB, 255)))".
Here the pattern for (and X, 255) should match actual dags like (and X, 254) if
the dag combiner proved that the missing bits are already zero (one for 'or').
For CodeGen/Alpha/cmpbge.ll:test2 for example, this results in:
sll $16,1,$0
cmpbge $0,$17,$0
ret $31,($26),1
instead of:
sll $16,1,$0
and $0,254,$0
and $17,255,$1
cmpule $1,$0,$0
ret $31,($26),1
... and requires no target-specific code.
llvm-svn: 30871
2006-10-11 04:05:55 +00:00
Chris Lattner
66fbbca1e7
Split some code out into a new method. The generated code is exactly
...
identical, this is just a refactoring.
llvm-svn: 30868
2006-10-11 03:35:34 +00:00
Evan Cheng
75a1b70da8
Predicate function on the node should be matched before its childrean' matching
...
code. This is especially important now matching ISD::LOAD also requires a
Predicate_Load call.
llvm-svn: 30845
2006-10-09 21:02:17 +00:00
Chris Lattner
560804cc50
regenerate
...
llvm-svn: 30799
2006-10-07 07:15:19 +00:00
Chris Lattner
dfbda3598d
Bugfix: this allows multiclasses to have default arguments.
...
llvm-svn: 30798
2006-10-07 07:14:48 +00:00
Chris Lattner
8111c59279
Fix more static dtor issues
...
llvm-svn: 30725
2006-10-04 21:52:35 +00:00
Chris Lattner
5d751b4a3a
This:
...
AggregateString += "\0\0";
Doesn't add two nuls to the AggregateString (for obvious reasons), which
broke the asmprinter when the first character of an asm string was not
literal text.
llvm-svn: 30625
2006-09-27 16:44:09 +00:00
Chris Lattner
8d21485660
Actually, name the method PrintSpecial to match other stuff in AsmPrinter.h
...
llvm-svn: 30618
2006-09-26 23:47:10 +00:00
Chris Lattner
5fd0154523
Add support for ${:foo} syntax, where "foo" is passed into "printSpecial" and
...
has no associated operand. This is useful for portably encoding stuff like
the comment character into an asm string.
llvm-svn: 30617
2006-09-26 23:45:08 +00:00
Chris Lattner
7d3fd4f888
don't allow 'imm' or specific imms, like '1' on the LHS of a binop.
...
This shrinks X86GenDAGISel by ~330 lines.
llvm-svn: 30574
2006-09-21 20:46:13 +00:00
Chris Lattner
99ae714459
Fit to 80 columns.
...
llvm-svn: 30572
2006-09-21 18:28:27 +00:00
Evan Cheng
9de003670f
Allow PatFrag to be a leaf node.
...
llvm-svn: 30498
2006-09-19 19:08:04 +00:00
Evan Cheng
00b2848adb
Add result of a Xform to isel queue.
...
llvm-svn: 30497
2006-09-19 18:40:15 +00:00
Chris Lattner
bea5f91946
If multiple predicates are listed, they must all pass
...
llvm-svn: 30476
2006-09-19 00:41:36 +00:00
Chris Lattner
bba17b9913
There!
...
llvm-svn: 30473
2006-09-18 22:41:07 +00:00
Chris Lattner
82a73a1989
Fix Regression/TableGen/2006-09-18-LargeInt.td
...
llvm-svn: 30472
2006-09-18 22:28:27 +00:00
Chris Lattner
3ffda067e3
Relax this check.
...
llvm-svn: 30381
2006-09-14 23:54:24 +00:00
Evan Cheng
1ec61ba00a
1) With X86 lowering change, the following can no longer happen since
...
the branch's chain is also produced by cmp.
[ch, r : ld]
^ ^
| |
[XX]--/ \- [flag : cmp]
^ ^
| |
\---[br flag]-
Remove an isel check which prevents loads from being folded into cmp / test
instructions.
2) Whenever possible, delete a selected node to allow more load folding
opportunities. Note not all nodes can be deleted after it has been
selected. Some may have simply morphed; some have not changed at all (e.g.
EntryToken).
llvm-svn: 30242
2006-09-11 02:24:43 +00:00
Evan Cheng
5a798b0648
Generated isel should favors explicit constant operand (+2) over an operand with a predicate (+1).
...
llvm-svn: 30180
2006-09-08 07:26:39 +00:00
Chris Lattner
a2d7d1c4fa
Fix JIT encoding of two-addr instructions.
...
llvm-svn: 30111
2006-09-05 03:01:52 +00:00
Chris Lattner
13a5dcddce
Fix a long-standing wart in the code generator: two-address instruction lowering
...
actually *removes* one of the operands, instead of just assigning both operands
the same register. This make reasoning about instructions unnecessarily complex,
because you need to know if you are before or after register allocation to match
up operand #'s with the target description file.
Changing this also gets rid of a bunch of hacky code in various places.
This patch also includes changes to fold loads into cmp/test instructions in
the X86 backend, along with a significant simplification to the X86 spill
folding code.
llvm-svn: 30108
2006-09-05 02:12:02 +00:00
Chris Lattner
70fd01a1b8
Make sure to clear CurDefmPrefix = 0, otherwise stuff after a defm won't
...
parse right. This fixes TableGen/MultiClass.td
llvm-svn: 30037
2006-09-01 22:07:27 +00:00
Chris Lattner
c05fac8b83
fix an assertion with multidefs. Def inside of multiclasses don't need to
...
be complete.
llvm-svn: 30034
2006-09-01 21:59:03 +00:00
Chris Lattner
aec1af2239
regenerate
...
llvm-svn: 30029
2006-09-01 21:14:42 +00:00
Chris Lattner
66b7235877
Add often-requested support for defining "multiclasses" which can be instantiated.
...
This allows you to define multiple definitions with one line, encouraging
more .td file factoring.
llvm-svn: 30027
2006-09-01 21:13:49 +00:00
Reid Spencer
97c598083e
Add virtual methods to all subclasses so they are not overloaded.
...
llvm-svn: 29930
2006-08-28 00:12:25 +00:00
Chris Lattner
251468e9d0
Use compiler.h instead of hand rolling our own macro
...
llvm-svn: 29913
2006-08-27 13:16:24 +00:00
Evan Cheng
44ce57d5c2
Do not emit getTargetNode() and SelectNodeTo() which takes more than 3
...
SDOperand arguments. Use the variants which take an array and number instead.
llvm-svn: 29906
2006-08-27 08:11:28 +00:00
Evan Cheng
34b70eea5c
SelectNodeTo now returns a SDNode*.
...
llvm-svn: 29901
2006-08-26 08:00:10 +00:00
Evan Cheng
b7b5ba5aaf
Minor getCopyToReg() call change.
...
llvm-svn: 29900
2006-08-26 07:39:28 +00:00
Evan Cheng
61413a3d72
Select() no longer require Result operand by reference.
...
llvm-svn: 29898
2006-08-26 05:34:46 +00:00
Evan Cheng
a8b2b6c7ff
Remove dead code.
...
llvm-svn: 29897
2006-08-26 01:34:15 +00:00
Evan Cheng
eaf9fba2ff
A bit more clean up.
...
llvm-svn: 29893
2006-08-26 01:02:19 +00:00
Evan Cheng
548bd0dc95
- Clean up tablegen dag isel generator code.
...
- Clean up the code generated by tablegen:
* AddToISelQueue now takes one argument.
* ComplexPattern matching condition can now be shared.
* Eliminate passing unnecessary arguments to emit routines.
* Eliminate some unneeded SDOperand declarations in select routines.
* Other minor clean ups.
- This reduces foot print slightly: X86ISelDAGToDAG.o is reduced from 971k
to 823k.
llvm-svn: 29892
2006-08-26 00:59:04 +00:00
Evan Cheng
63d178f473
SelectNodeTo() may return a SDOperand that is different from the input.
...
llvm-svn: 29726
2006-08-16 07:30:09 +00:00
Chris Lattner
d16696d115
The generated runloop shouldn't require Select to update 'Result'. In fact
...
we'd like to remove result entirely.
llvm-svn: 29713
2006-08-15 23:42:26 +00:00
Chris Lattner
72608b5387
allow Select to return the node being selected if RAU isn't needed.
...
llvm-svn: 29712
2006-08-15 23:27:50 +00:00
Evan Cheng
962752dcea
Use SmallVector instead.
...
llvm-svn: 29619
2006-08-11 18:33:41 +00:00
Evan Cheng
0d3a754ae8
- Prevent some functions from being inlined to eliminate the code size bloat
...
introduced by previous commit.
- SelectCode now returns a SDNode*. If it is not null, the selected node
produces the same number of results as the input node. The seletion loop
is responsible for calling ReplaceAllUsesWith() to replace the input node
with the output target node. For other cases, e.g. when load is folded,
the selection code is responsible for calling ReplaceAllUsesOfValueWith()
and SelectCode returns NULL.
- Other clean ups.
llvm-svn: 29602
2006-08-11 08:59:35 +00:00
Chris Lattner
f9cab8c965
Revert previous patch
...
llvm-svn: 29585
2006-08-09 16:44:44 +00:00
Tanya Lattner
7f935ba0ae
Reverting back to original 1.8 version so I can manually merge in patch.
...
llvm-svn: 29584
2006-08-09 16:41:21 +00:00
Chris Lattner
c24a1d3093
Start eliminating temporary vectors used to create DAG nodes. Instead, pass
...
in the start of an array and a count of operands where applicable. In many
cases, the number of operands is known, so this static array can be allocated
on the stack, avoiding the heap. In many other cases, a SmallVector can be
used, which has the same benefit in the common cases.
I updated a lot of code calling getNode that takes a vector, but ran out of
time. The rest of the code should be updated, and these methods should be
removed.
We should also do the same thing to eliminate the methods that take a
vector of MVT::ValueTypes.
It would be extra nice to convert the dagiselemitter to avoid creating vectors
for operands when calling getTargetNode.
llvm-svn: 29566
2006-08-08 02:23:42 +00:00
Evan Cheng
97d5cc165a
Making TableGen'd instruction selection code non-recursive. This fixes PR805.
...
llvm-svn: 29548
2006-08-07 22:17:58 +00:00
Chris Lattner
b359a7a69c
Remove some extraneous newlines.
...
llvm-svn: 29492
2006-08-03 00:42:26 +00:00
Chris Lattner
6379c96c07
Really add support for compilers without noinline
...
llvm-svn: 29491
2006-08-03 00:26:13 +00:00
Evan Cheng
70c4ae4bda
Pass N by reference to select functions to prevent gcc from allocating more stack.
...
llvm-svn: 29423
2006-08-01 01:07:48 +00:00
Evan Cheng
c1163d2fa7
Remove an unneeded match condition: the type check for root node has been
...
moved to outside the actual select routine.
llvm-svn: 29415
2006-07-31 19:01:58 +00:00
Evan Cheng
149130ad6b
Split each select function for a particular opcode into multiple ones. One
...
per possible ValueType of the node. e.g. Select_add is split into Select_add_i8,
Select_add_i16, etc.
For opcodes which do not produce a non-chain result, it is split on the
ValueType of its first non-chain operand. e.g. Select_store.
On X86 / Mac OS X, Select_store used to be the largest function. It had a stack
frame size of 8.5k. Now the largest one is Store_i32 with a frame size of 3.1k.
llvm-svn: 29404
2006-07-28 22:51:01 +00:00
Evan Cheng
75a22216f7
Clean up.
...
llvm-svn: 29378
2006-07-28 01:19:22 +00:00
Evan Cheng
e2a3f7014d
Rename IsFoldableBy to CanBeFoldedleBy
...
llvm-svn: 29376
2006-07-28 01:03:48 +00:00
Evan Cheng
b572401bea
Remove InFlightSet hack. No longer needed.
...
llvm-svn: 29373
2006-07-28 00:47:19 +00:00
Evan Cheng
7b0ed57543
Remove dead code.
...
llvm-svn: 29359
2006-07-27 19:59:34 +00:00
Evan Cheng
061aba35c1
Let each target specific isel provide routine to check if a chain producing node is foldable by another.
...
llvm-svn: 29335
2006-07-27 06:36:49 +00:00
Evan Cheng
9384400d83
Fix for bug 840. Only use noinline attribute if gcc version >= 3.4
...
llvm-svn: 29311
2006-07-26 23:06:27 +00:00
Evan Cheng
774d8fd1ef
Removed a hack intended to allow (store (op (load))) folding. Will handle this with preprocessing.
...
llvm-svn: 29258
2006-07-21 22:19:51 +00:00
Jim Laskey
4b49c23571
Eliminate data relocations by using NULL instead of global empty list.
...
llvm-svn: 29250
2006-07-21 21:15:20 +00:00
Jim Laskey
4e153f1b91
Use an enumeration to eliminate data relocations.
...
llvm-svn: 29249
2006-07-21 20:57:35 +00:00
Evan Cheng
c62c697955
Also checks for noResults field.
...
llvm-svn: 29235
2006-07-20 23:36:20 +00:00
Evan Cheng
2884b5cc93
Make sub- and super- register classes const.
...
llvm-svn: 29200
2006-07-19 05:58:18 +00:00
Chris Lattner
3650465273
Fix a bug handling instructions, like blr, which just consist of a text
...
string. The return value of printInstruction should be true for these.
llvm-svn: 29196
2006-07-19 01:39:06 +00:00
Evan Cheng
c767acd25a
Add code size to target instruction use it as the 3rd isel sorting tie-breaker.
...
llvm-svn: 29193
2006-07-19 00:24:41 +00:00
Evan Cheng
aeccc6e676
Make sub- super- reg-class tables static.
...
llvm-svn: 29190
2006-07-18 22:18:31 +00:00
Chris Lattner
68ee5cfe10
Fix case where identical cases were not detected across case #0 , because
...
instructions not handled would have a case value of #0 , throwing things off.
This marginally shrinks the X86 asmprinter, but shrinks the sparc asmwriter
by 25 lines.
llvm-svn: 29187
2006-07-18 19:27:30 +00:00
Chris Lattner
6e17208dff
Fix an accidentally duplicated line that caused tblgen to crash on itanium.
...
Add an assert that catches the real problem earlier.
llvm-svn: 29185
2006-07-18 19:06:01 +00:00
Chris Lattner
edee52570c
Maximally group commands. When all instructions within a command set have a
...
series of identical commands, handle them all with one switch. In the case
of the x86 at&t asm printer, only 3 switches are needed for all instructions.
llvm-svn: 29184
2006-07-18 18:28:27 +00:00
Chris Lattner
cb0c848d34
Change generator to remove operands as it processes them. No change in
...
generated file.
llvm-svn: 29183
2006-07-18 17:56:07 +00:00
Chris Lattner
9d250696b7
Handle the last operand more intelligently. When emitting the \n, also
...
return from the asmprinter to make the generated asmprinter both more
efficient and smaller.
llvm-svn: 29182
2006-07-18 17:50:22 +00:00
Chris Lattner
75dcf6cbd8
Emit switches with 1/2 cases as unconditional code or an if/then/else for
...
tidyness.
llvm-svn: 29181
2006-07-18 17:43:54 +00:00
Chris Lattner
66e288bec3
Steal bits from the asm string index to use for operand information. On both
...
x86 and ppc, this gets us 4 more bits to play with, since the string indices
both only use 12 bits.
llvm-svn: 29180
2006-07-18 17:38:46 +00:00
Chris Lattner
1ac0eb7f8b
Merge operand info and asmstr idx into a single 32-bit field. No other change.
...
llvm-svn: 29179
2006-07-18 17:32:27 +00:00
Chris Lattner
692374c748
Completely change the structure of the generated asmprinter to be more table
...
based and less switch-statements-with-hundreds-of-cases based. This shrinks
the x86 asmprinters to about 1/3 their previous size.
Other improvements coming.
llvm-svn: 29177
2006-07-18 17:18:03 +00:00
Evan Cheng
95454e7a2f
Use __attribute__((noinline)) only if compiled by gcc.
...
llvm-svn: 29161
2006-07-16 06:14:37 +00:00
Evan Cheng
87b2fe9474
Parameterize target node ValueType to allow more sharing of emit functions.
...
Also reduce the number of arguments passed to emit functions and removed a
hack.
llvm-svn: 29160
2006-07-16 06:12:52 +00:00
Evan Cheng
69367fedd2
Reduce instruction selection code size and stack frame size by factoring
...
code that emit target specific nodes into emit functions that are uniquified
and shared among selection routines.
e.g. This reduces X86ISelDAGToDAG.o (release) from ~2M to ~1.5M. Stack frame
size of Select_store from ~13k down to ~8k.
This is the first step. Further work to enable more sharing will follow.
llvm-svn: 29158
2006-07-15 08:45:20 +00:00
Chris Lattner
45fcadc9f0
The generated index array should be const.
...
llvm-svn: 29155
2006-07-14 23:14:02 +00:00
Chris Lattner
e32982cc52
Emit the string information for the asm writer as a single large string
...
and index into it, instead of emitting it like this:
static const char * const OpStrs[] = {
"PHINODE\n", // PHI
0, // INLINEASM
"adc ", // ADC32mi
"adc ", // ADC32mi8
...
The old way required thousands of relocations that slows down link time and
dynamic load times.
This also cuts about 10K off each of the X86 asmprinters, and should shrink
the others as well.
llvm-svn: 29152
2006-07-14 22:59:11 +00:00
Jim Laskey
10d4b040ac
Clean up.
...
llvm-svn: 29137
2006-07-13 22:17:08 +00:00
Jim Laskey
a44f6269bf
1. Simplfy bit operations.
...
2. Coalesce instruction cases.
llvm-svn: 29135
2006-07-13 21:02:53 +00:00
Jim Laskey
23bd480cea
Move base value of instruction to lookup table to prepare for case reduction.
...
llvm-svn: 29122
2006-07-12 19:15:43 +00:00
Jim Laskey
f7300b2706
It was pointed out that DEBUG() is only available with -debug.
...
llvm-svn: 29106
2006-07-11 18:25:13 +00:00
Jim Laskey
c3d341ea98
Ensure that dump calls that are associated with asserts are removed from
...
non-debug build.
llvm-svn: 29105
2006-07-11 17:58:07 +00:00
Jim Laskey
57e4363171
Reduce bloat in target libraries by removing per machine instruction assertion
...
from code emitter generation.
llvm-svn: 29097
2006-07-11 01:25:59 +00:00
Chris Lattner
f0858cb910
tblgen uses EH
...
llvm-svn: 29034
2006-07-07 00:21:17 +00:00
Evan Cheng
d19938834b
Ugly hack! Add helper functions InsertInFlightSetEntry and
...
RemoveInFlightSetEntry. They are used in place of direct set operators to
reduce instruction selection function stack size.
llvm-svn: 28987
2006-06-29 23:57:05 +00:00
Chris Lattner
3c71a13e06
Fix an error message regression. Print:
...
LI8: (LI8:i64 (imm:i64):$imm)
instead of:
LI8: (LI8:MVT::i64 (imm:MVT::i64):$imm)
llvm-svn: 28868
2006-06-20 00:56:37 +00:00
Chris Lattner
c23e641055
Don't require src/dst patterns to be able to fully resolve their types,
...
because information about one can help refine the other. This allows us to
write:
def : Pat<(i32 (extload xaddr:$src, i8)),
(LBZX xaddr:$src)>;
as:
def : Pat<(extload xaddr:$src, i8),
(LBZX xaddr:$src)>;
because tblgen knows LBZX returns i32.
llvm-svn: 28865
2006-06-20 00:31:27 +00:00
Chris Lattner
9500b343db
Make sure to use the result of the pattern to infer the result type of the
...
instruction, and the result type of the instruction to refine the pattern.
This allows us to write things like this:
def : Pat<(v2i64 (bitconvert (v16i8 VR128:$src))), (v2i64 VR128:$src)>;
as:
def : Pat<(v2i64 (bitconvert (v16i8 VR128:$src))), (VR128:$src)>
and fixes a ppc64 issue.
llvm-svn: 28863
2006-06-20 00:18:02 +00:00
Chris Lattner
4b464768d1
Improve a comment.
...
llvm-svn: 28833
2006-06-16 18:25:06 +00:00
Evan Cheng
55772ccfd6
Instructions with variable operands (variable_ops) can have a number required
...
operands. e.g.
def CALL32r : I<0xFF, MRM2r, (ops GR32:$dst, variable_ops),
"call {*}$dst", [(X86call GR32:$dst)]>;
TableGen should emit operand informations for the "required" operands.
Added a target instruction info flag M_VARIABLE_OPS to indicate the target
instruction may have more operands in addition to the minimum required
operands.
llvm-svn: 28791
2006-06-15 07:22:16 +00:00
Evan Cheng
5d038cf802
Allow more use of iPTR in patterns.
...
llvm-svn: 28790
2006-06-15 00:16:37 +00:00
Evan Cheng
ff7c28dfdd
Added support for variable_ops.
...
llvm-svn: 28788
2006-06-14 22:22:20 +00:00
Evan Cheng
1ce02e4c49
Fix support for optional input flag.
...
llvm-svn: 28784
2006-06-14 19:27:50 +00:00
Evan Cheng
632ee8de55
getOperandNum(): error if specified operand number is out of range.
...
llvm-svn: 28775
2006-06-13 21:47:27 +00:00
Chris Lattner
deafba0325
Wrap to 80 cols
...
llvm-svn: 28743
2006-06-09 23:59:44 +00:00
Reid Spencer
5cb722f320
Don't build tblgen with -pedantic or -Wno-long-long
...
llvm-svn: 28638
2006-06-01 18:20:23 +00:00
Evan Cheng
cc8c0233b6
Can't trust NodeDepth when checking for possibility of load folding creating
...
a cycle. This increase the search space and will increase compile time (in
practice it appears to be small, e.g. 176.gcc goes from 62 sec to 65 sec)
that will be addressed later.
llvm-svn: 28476
2006-05-25 20:16:55 +00:00
Evan Cheng
07a4e5ceb1
Fixed a really ugly bug. The TableGen'd isel is not freeing the "inflight set"
...
correctly. That is causing non-deterministic behavior (and possibly preventing
some load folding from happening).
llvm-svn: 28458
2006-05-25 00:21:44 +00:00
Chris Lattner
e7549961cf
Don't make zero-sized static arrays
...
llvm-svn: 28448
2006-05-24 17:31:02 +00:00
Chris Lattner
aa2372562e
Patches to make the LLVM sources more -pedantic clean. Patch provided
...
by Anton Korobeynikov! This is a step towards closing PR786.
llvm-svn: 28447
2006-05-24 17:04:05 +00:00
Evan Cheng
886e8f35aa
Now that iPTR is a fully resolved type. We end up losing the type check for
...
patterns that look like this:
def : Pat<(i32 (X86Wrapper tconstpool :$dst)), (MOV32ri tconstpool :$dst)>;
InsertOneTypeCheck should copy the type from the resolved pattern to the
unresolved one as long as there types are different.
llvm-svn: 28389
2006-05-19 07:24:32 +00:00
Evan Cheng
d8e2f6ebc1
lib/Target/Target.td
...
llvm-svn: 28386
2006-05-18 20:42:07 +00:00
Evan Cheng
fe72285033
Don't generate getCalleeSaveReg and getCalleeSaveRegClasses anymore.
...
llvm-svn: 28376
2006-05-18 00:08:46 +00:00
Evan Cheng
318a68e1ee
Typo
...
llvm-svn: 28366
2006-05-17 20:55:51 +00:00
Evan Cheng
f5ef47fe74
Remove PointerType from target definition. Use abstract type MVT::iPTR to
...
represent pointer type.
llvm-svn: 28363
2006-05-17 20:37:59 +00:00
Evan Cheng
d985d66781
Allow patterns to refer to physical registers that belong to multiple
...
register classes.
llvm-svn: 28323
2006-05-16 07:05:30 +00:00
Evan Cheng
21c7c23d7e
Noop instruction
...
llvm-svn: 28241
2006-05-12 07:47:00 +00:00
Evan Cheng
e2c1aedc23
Unused instruction
...
llvm-svn: 28240
2006-05-12 07:42:01 +00:00
Evan Cheng
229a6d0026
Also add super- register classes info.
...
llvm-svn: 28221
2006-05-11 07:30:26 +00:00
Evan Cheng
32982836b6
Watch out for the following case:
...
1. Use expects a chain output.
2. Node is expanded into multiple target ops.
3. One of the inner node produces a chain, the outer most one doesn't.
llvm-svn: 28209
2006-05-10 02:47:57 +00:00
Evan Cheng
d2b8067748
Fix a load folding bug. It is exposed by a multi- resulting instructions
...
def : Pat<> pattern.
llvm-svn: 28208
2006-05-10 00:05:46 +00:00
Evan Cheng
5e7ba0b049
Add sub-register class information.
...
llvm-svn: 28195
2006-05-09 06:34:26 +00:00
Evan Cheng
386fb9b0fd
Set isStore of instructions with ISD::TRUNCSTORE root node.
...
llvm-svn: 28075
2006-05-03 02:08:34 +00:00
Chris Lattner
4b177f089e
Put instruction names into the first non TargetInstrInfo namespace found.
...
llvm-svn: 28043
2006-05-01 23:46:16 +00:00
Chris Lattner
017b93dd7c
instructions can be in different namespaces. Make sure to use the right
...
one for each instruction.
llvm-svn: 28038
2006-05-01 17:01:17 +00:00
Evan Cheng
8e63393bc3
Formating
...
llvm-svn: 28036
2006-05-01 09:30:17 +00:00
Evan Cheng
c2ef5e34a8
Mark instructions whose pattern is (store ...) isStore.
...
llvm-svn: 28032
2006-05-01 09:04:20 +00:00
Evan Cheng
c5e8ce8b8c
Remove the temporary option: -no-isel-fold-inflight
...
llvm-svn: 28012
2006-04-28 18:54:11 +00:00
Evan Cheng
54acf6eddc
When isel'ing a node, mark its operands "InFlight" before selecting them. These
...
nodes should not be folded into other nodes.
This fixes the miscompilation of PR 749.
Temporarily under flag control.
llvm-svn: 28002
2006-04-28 02:08:10 +00:00
Nate Begeman
4ca2ea5b43
JumpTable support! What this represents is working asm and jit support for
...
x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.
llvm-svn: 27947
2006-04-22 18:53:45 +00:00
Chris Lattner
778509c844
Don't fill in fields that no longer exist.
...
llvm-svn: 27898
2006-04-20 18:32:22 +00:00
Evan Cheng
9235d848b7
Rename AddedCost to AddedComplexity.
...
llvm-svn: 27841
2006-04-19 20:36:09 +00:00
Evan Cheng
aa3325e925
Allow "let AddedCost = n in" to increase pattern complexity.
...
llvm-svn: 27834
2006-04-19 18:07:24 +00:00
Reid Spencer
56fdf9ed40
Add missing things to the distribution.
...
llvm-svn: 27650
2006-04-13 06:27:20 +00:00
Chris Lattner
989b16e488
Fix a typo: Instr* -> Intr*
...
llvm-svn: 27568
2006-04-10 22:02:59 +00:00
Chris Lattner
726df0bb82
Infer element types for shuffle masks
...
llvm-svn: 27456
2006-04-06 20:36:51 +00:00
Chris Lattner
09575a9b0a
rename a method, to avoid confusion with llvm intrinsics.
...
llvm-svn: 27455
2006-04-06 20:19:52 +00:00
Chris Lattner
89df307b61
Adjust the Intrinsics.gen interface a little bit
...
llvm-svn: 27345
2006-04-02 03:35:30 +00:00
Chris Lattner
470d0181e9
regenerate
...
llvm-svn: 27313
2006-03-31 21:54:11 +00:00
Chris Lattner
51ffbf18f0
Generalize the previous binary operator support and add a string concatenation
...
operation. This implements Regression/TableGen/strconcat.td.
llvm-svn: 27312
2006-03-31 21:53:49 +00:00
Chris Lattner
6b7ccbe4d8
Allow bits init values to be used in patterns, turn them into ints.
...
llvm-svn: 27286
2006-03-31 05:25:56 +00:00
Chris Lattner
03dfc41ba2
Final bugfix for PR724. GCC won't inline varargs functions, so use one to
...
validate the prototype of intrinsic functions. This prevents GCC from going
crazy and inlining too much stuff, eventually running out of memory.
llvm-svn: 27283
2006-03-31 04:48:26 +00:00
Chris Lattner
3abe174165
When emitting code for the verifier, instead of emitting each case statement
...
independently, batch up checks so that identically typed intrinsics share
verifier code. This dramatically reduces the size of the verifier function,
which should help avoid GCC running out of memory compiling Verifier.cpp.
llvm-svn: 27281
2006-03-31 04:24:58 +00:00
Chris Lattner
bab91842ba
regenerate
...
llvm-svn: 27264
2006-03-30 22:51:12 +00:00
Chris Lattner
b59cf3cff4
Implement Regression/TableGen/DagDefSubst.ll
...
llvm-svn: 27263
2006-03-30 22:50:40 +00:00
Evan Cheng
c2c8b58cf6
Don't sort the names before outputing the intrinsic name table. It causes a
...
mismatch against the enum table.
This is a part of Sabre's master plan to drive me nuts with subtle bugs that
happens to only affect x86 be. :-)
llvm-svn: 27237
2006-03-28 22:25:56 +00:00
Chris Lattner
7c9740a9ed
Tblgen doesn't like multiple SDNode<> definitions that map to the sameenum value. Split them into separate enums.
...
Also, don't emit dynamic checks when we can compute them statically
llvm-svn: 27202
2006-03-28 00:41:33 +00:00
Chris Lattner
8a2ae8b766
Only compute intrinsic valuetypes when in a target .td file.
...
llvm-svn: 27197
2006-03-28 00:15:00 +00:00
Chris Lattner
ac2512a261
revert this, it breaks things.
...
llvm-svn: 27196
2006-03-28 00:03:08 +00:00
Chris Lattner
c92f688ef3
Add support for decoding iPTR to the right pointer type.
...
llvm-svn: 27188
2006-03-27 22:48:18 +00:00
Chris Lattner
5386598187
Print error messages like this:
...
tblgen: In STVEBX: Intrinsic 'llvm.ppc.altivec.stvebx' expects 3 operands, not 2 operands!
instead of like this:
tblgen: In STVEBX: Intrinsic 'intrinsic_void expects 3 operands, not 2 operands!
llvm-svn: 27185
2006-03-27 22:21:18 +00:00
Chris Lattner
8c46ff2d12
Add a missing check which cause an invalid .td file to crash tblgen
...
llvm-svn: 27126
2006-03-25 22:12:44 +00:00
Chris Lattner
23555e3947
When failing selection for an intrinsic, print this:
...
Cannot yet select: intrinsic %llvm.ppc.altivec.lvx
instead of this:
Cannot yet select: 0x9b047e0: v4i32,ch = INTRINSIC 0x9b04540:1, 0x9b04710, 0x9b04790, 0x9b04540
llvm-svn: 27110
2006-03-25 06:47:53 +00:00
Chris Lattner
c8565ed651
Change approach so that we get codegen for free for intrinsics. With this,
...
intrinsics that don't take pointer arguments now work. For example, we can
compile this:
int test3( __m128d *A) {
return _mm_movemask_pd(*A);
}
int test4( __m128 *A) {
return _mm_movemask_ps(*A);
}
to this:
_test3:
movl 4(%esp), %eax
movapd (%eax), %xmm0
movmskpd %xmm0, %eax
ret
_test4:
movl 4(%esp), %eax
movaps (%eax), %xmm0
movmskps %xmm0, %eax
ret
llvm-svn: 27090
2006-03-24 23:10:39 +00:00
Chris Lattner
85586baee7
fix 80 column violations
...
llvm-svn: 27084
2006-03-24 21:52:20 +00:00
Chris Lattner
e352e7aa85
Parse intrinsics correctly and perform type propagation. This doesn't currently
...
emit the code to select intrinsics, but that is next :)
llvm-svn: 27082
2006-03-24 21:48:51 +00:00
Jim Laskey
f0729b4067
Add dwarf register numbering to register data.
...
llvm-svn: 27081
2006-03-24 21:15:58 +00:00
Chris Lattner
bbba823706
Make sure to initialize the TheDef field!
...
llvm-svn: 27078
2006-03-24 20:25:01 +00:00
Chris Lattner
2c58141fd9
Move CodeGenIntrinsic implementation to CodeGenTarget.cpp with the rest of
...
the CodeGen* implementations.
Parse the MVT::ValueType for each operand of the intrinsics.
llvm-svn: 27075
2006-03-24 19:49:31 +00:00
Chris Lattner
97b0d99651
extract some more information from the intrinsic table
...
llvm-svn: 27022
2006-03-24 01:13:55 +00:00
Reid Spencer
1e0552f838
Add new generated files to be ignored.
...
llvm-svn: 27011
2006-03-23 23:45:32 +00:00
Evan Cheng
eb0ce0c547
Allow result node to be a simple leaf node. This enable bitconvert patterns
...
like this:
def : Pat<(v4i32 (bitconvert (v4f32 VR128:$src))), (v4i32 VR128:$src)>;
llvm-svn: 26968
2006-03-23 02:35:32 +00:00
Evan Cheng
c0af9c6478
Don't forget to promote xform function to an explicit node for def : Pat<>
...
patterns.
llvm-svn: 26929
2006-03-21 20:44:17 +00:00
Chris Lattner
02ad00ad93
minor code simplification
...
llvm-svn: 26918
2006-03-21 06:42:58 +00:00
Evan Cheng
af7de1fba8
The node wrapped in PatLeaf<> should be treated as a leaf even if it isn't
...
one, i.e. don't select it.
llvm-svn: 26909
2006-03-20 22:53:06 +00:00
Evan Cheng
5ece6fa3e0
It should be ok for a xform output type to be different from input type.
...
llvm-svn: 26899
2006-03-20 08:09:17 +00:00
Evan Cheng
a84bdebfd2
Copy matching pattern's output type info to instruction result pattern.
...
The instruction patterns do not contain enough information to resolve the
exact type of the destination if it of a generic vector type.
llvm-svn: 26892
2006-03-20 06:04:09 +00:00
Chris Lattner
c1b31d8a83
Add a new SDTCisIntVectorOfSameSize type constraint
...
llvm-svn: 26890
2006-03-20 05:39:48 +00:00
Evan Cheng
f9d75843f3
getEnumName() missed v8i8, v4i16, and v2i32 types
...
llvm-svn: 26869
2006-03-19 07:57:34 +00:00
Chris Lattner
f878f6aa54
Fix miscodegen of V_SET0 in PPC.
...
llvm-svn: 26836
2006-03-18 00:40:36 +00:00
Chris Lattner
09ffafcf54
allow the GCCBuiltinName field to be optional
...
llvm-svn: 26784
2006-03-15 19:15:26 +00:00
Jeff Cohen
c4e2468251
Fix VC++ build error.
...
llvm-svn: 26773
2006-03-15 02:51:05 +00:00
Chris Lattner
1c32e04b5f
remove typo
...
llvm-svn: 26772
2006-03-15 02:05:38 +00:00
Chris Lattner
da1a4cc6a4
Autogenerate a table of intrinsic names, so we can map from intrinsic ID to
...
LLVM intrinsic function name.
llvm-svn: 26771
2006-03-15 01:55:21 +00:00
Chris Lattner
402a573764
Autogenerate code to map from GCC builtin to LLVM intrinsic.
...
llvm-svn: 26770
2006-03-15 01:33:26 +00:00
Reid Spencer
3eb12e9a2a
Add a newline at the end to avoid gcc warnings.
...
llvm-svn: 26749
2006-03-14 05:59:52 +00:00
Chris Lattner
fea17a9901
emit a mapping from LLVM intrinsic -> GCC builtins.
...
llvm-svn: 26736
2006-03-13 23:08:44 +00:00
Chris Lattner
5b6ec4a5ea
Verify that packed type operands have the right size and base type.
...
llvm-svn: 26735
2006-03-13 22:38:57 +00:00
Chris Lattner
69035f00e3
fix pasto in generate assertion msg
...
llvm-svn: 26706
2006-03-11 00:20:47 +00:00
Chris Lattner
e3c2db3955
generate side-effect info
...
llvm-svn: 26672
2006-03-09 22:37:52 +00:00
Chris Lattner
06c7300bf1
Parse mod/ref properties, autogen mod/ref information
...
llvm-svn: 26669
2006-03-09 22:30:49 +00:00
Chris Lattner
6efe863a70
parse intrinsic types
...
autogenerate an intrinsic verifier
llvm-svn: 26666
2006-03-09 22:05:04 +00:00
Chris Lattner
6d8104efd2
autogenerate the function name recognizer
...
llvm-svn: 26663
2006-03-09 20:34:19 +00:00
Evan Cheng
c47620b5d8
Temporary hack to enable more (store (op (load ...))) folding. This makes
...
it possible when a TokenFactor is between the load and store. But is still
missing some cases due to ordering issue.
llvm-svn: 26638
2006-03-09 08:19:11 +00:00
Evan Cheng
0fab08eae3
Don't generate silly matching code like this:
...
if (N1.getOpcode() == ISD::ADD &&
...)
if (... &&
(N1.getNumOperands() == 1 || !isNonImmUse(N1.Val, N10.Val))) &&
...)
TableGen knows N1 must have more than one operand.
llvm-svn: 26592
2006-03-07 08:31:27 +00:00
Chris Lattner
ae0f1512c9
Silence a warning.
...
llvm-svn: 26508
2006-03-03 19:34:28 +00:00
Chris Lattner
f6e846eee8
Fix pasteo
...
llvm-svn: 26499
2006-03-03 06:13:41 +00:00
Chris Lattner
94f300d15c
remove a bunch of long-dead testing code
...
llvm-svn: 26497
2006-03-03 02:34:28 +00:00
Chris Lattner
c313d0b712
initial implementation of intrinsic parsing
...
llvm-svn: 26495
2006-03-03 02:32:46 +00:00
Chris Lattner
73fbe145fd
remove out of date comment
...
llvm-svn: 26492
2006-03-03 02:04:07 +00:00
Chris Lattner
1edf15e48e
Add support for "-Ifoo" in addition to "-I foo"
...
llvm-svn: 26487
2006-03-03 01:53:40 +00:00
Chris Lattner
d7f6b55afa
Regenerate
...
llvm-svn: 26486
2006-03-03 01:47:37 +00:00
Chris Lattner
e7b74c5da1
add support for multiple include directories
...
llvm-svn: 26485
2006-03-03 01:47:14 +00:00
Evan Cheng
53a2d60bca
New vector type v2f32.
...
llvm-svn: 26437
2006-03-01 01:10:52 +00:00
Chris Lattner
dc445eadc0
Select inline asm memory operands.
...
llvm-svn: 26349
2006-02-24 02:13:31 +00:00
Evan Cheng
43070b7541
Added x86 integer vector types: 64-bit packed byte integer (v16i8), 64-bit
...
packed word integer (v8i16), and 64-bit packed doubleword integer (v2i32).
llvm-svn: 26294
2006-02-20 22:34:53 +00:00
Jeff Cohen
0add83e969
Fix bugs identified by VC++.
...
llvm-svn: 26287
2006-02-18 03:20:33 +00:00
Evan Cheng
33f4156663
Bump up pattern cost if the resulting instruction is marked
...
usesCustomDAGSchedInserter.
llvm-svn: 26282
2006-02-18 02:33:09 +00:00
Chris Lattner
3e15eac81b
Check the new form for bison output into CVS
...
llvm-svn: 26208
2006-02-15 07:24:01 +00:00
Chris Lattner
ecd162d5cd
Adjust to new form of handling lexer dependencies, this way shouldn't have
...
the problems the old way did.
llvm-svn: 26161
2006-02-14 05:13:13 +00:00
Evan Cheng
5940bc210e
Call InsertISelMapEntry rather than map insertion operator to prevent overly
...
aggrssive inlining. This reduces Select_store frame size from 24k to 10k.
llvm-svn: 26095
2006-02-09 22:12:27 +00:00
Evan Cheng
9ce762d51f
Match getTargetNode() changes (now returns SDNode* instead of SDOperand).
...
llvm-svn: 26084
2006-02-09 07:16:09 +00:00
Evan Cheng
6dc90ca172
Change Select() from
...
SDOperand Select(SDOperand N);
to
void Select(SDOperand &Result, SDOperand N);
llvm-svn: 26067
2006-02-09 00:37:58 +00:00
Evan Cheng
1630c2848f
Hoist all SDOperand declarations within a Select_{opcode}() to the top level
...
to reduce stack memory usage. This is intended to work around the gcc bug.
llvm-svn: 26026
2006-02-07 00:37:41 +00:00
Chris Lattner
5c76b499aa
Add support for modifier strings in machine instr descriptions. This allows
...
us to avoid creating lots of "Operand" types with different printers, instead
we can fold several together and use modifiers. For example, we can now use:
${target:call} to say that the operand should be printed like a 'call' operand.
llvm-svn: 26024
2006-02-06 23:40:48 +00:00
Chris Lattner
033e32e5d9
Simplify the variant handling code, no functionality change.
...
llvm-svn: 26023
2006-02-06 22:43:28 +00:00
Evan Cheng
ebf05bea1b
At the end of isel, select a replacement node for each handle that does not
...
have one. This can happen if a load's real uses are dead (i.e. they do not
have uses themselves).
llvm-svn: 26014
2006-02-06 08:12:55 +00:00
Evan Cheng
308d0090e6
Name change.
...
llvm-svn: 26013
2006-02-06 06:03:35 +00:00
Evan Cheng
aa26555b25
Handle HANDLENODE: just return itself.
...
llvm-svn: 26011
2006-02-05 08:46:14 +00:00
Evan Cheng
368f20e53d
Allow more loads to be folded which were previously prevented from happening
...
due to ordering issue. i.e. they were selected for chain use first.
Now at load select time, check if it is being selected for a chain use and if
it has only a single real use. If so, return a HANDLENODE (with the load as
its operand) in its place and record it.
When it is folded or the load is selected for a real use, the isel records it
as the replacement for the HANDLENODE. The replacement is done when all nodes
are selected.
This scheme exposed a couple of problems where cycles can happen. (See comments
in EmitMatchCode() for descriptions of the problems and their workaround /
solutions.) These problems have been resolved with a small compile time
penality.
llvm-svn: 25995
2006-02-05 06:43:12 +00:00
Evan Cheng
7ab4579c68
Re-committing the last bit of change. It shouldn't break PPC this time.
...
llvm-svn: 25982
2006-02-05 05:22:18 +00:00
Chris Lattner
586b06281c
Temporarily revert the last change, which breaks PPC and other targets that
...
DO select things.
llvm-svn: 25970
2006-02-04 09:23:06 +00:00
Evan Cheng
ce87cac555
Complex pattern's custom matcher should not call Select() on any operands.
...
Select them afterwards if it returns true.
llvm-svn: 25968
2006-02-04 08:50:49 +00:00
Chris Lattner
2bcfc52af6
node predicates add to the complexity of a pattern. This ensures that the
...
X86 backend attempts to match small-immediate versions of instructions before
the full size immediate versions.
llvm-svn: 25937
2006-02-03 18:06:02 +00:00
Evan Cheng
717db484a5
(store (op (load ...))) folding problem. In the generated matching code,
...
Chain is initially set to the chain operand of store node, when it reaches
load, if it matches the load then Chain is set to the chain operand of the
load.
However, if the matching code that follows this fails, isel moves on to the
next pattern but it does not restore Chain to the chain operand of the store.
So when it tries to match the next store / op / load pattern it would fail on
the Chain == load.getOperand(0) test.
The solution is for each chain operand to get a unique name. e.g. Chain10.
llvm-svn: 25931
2006-02-03 06:22:41 +00:00
Chris Lattner
244e800c19
add a note, ya knoe
...
llvm-svn: 25880
2006-02-01 19:12:23 +00:00
Evan Cheng
88e616d803
If a pattern's root node is a constant, its size should be 3 rather than 2.
...
llvm-svn: 25870
2006-02-01 06:06:31 +00:00
Chris Lattner
0d3ef40656
implement test/Regression/TableGen/DagIntSubst.ll
...
llvm-svn: 25836
2006-01-31 06:02:35 +00:00
Chris Lattner
a8821624d4
simplify some code
...
llvm-svn: 25791
2006-01-29 20:01:35 +00:00
Andrew Lenharth
1af077c0c7
it is nice not to chop off bits for those blessed with lots of bits
...
llvm-svn: 25766
2006-01-29 05:22:37 +00:00
Andrew Lenharth
49f323a90e
make the casts actually cast to the variable type
...
llvm-svn: 25765
2006-01-29 05:17:22 +00:00
Andrew Lenharth
c438c51e82
start of the 64bit safety cleanup
...
llvm-svn: 25764
2006-01-29 05:07:04 +00:00
Chris Lattner
0e352963fd
Emit series of conditionals with &&, emitting stuff like this:
...
if (N1.getOpcode() == ISD::LOAD &&
N1.hasOneUse() &&
!CodeGenMap.count(N1.getValue(0)) &&
!CodeGenMap.count(N1.getValue(1))) {
instead of this:
if (N1.getOpcode() == ISD::LOAD) {
if (N1.hasOneUse()) {
if (!CodeGenMap.count(N1.getValue(0))) {
if (!CodeGenMap.count(N1.getValue(1))) {
llvm-svn: 25763
2006-01-29 04:41:05 +00:00
Chris Lattner
7c0149d1d6
Factor matching code that is common between patterns. This works around
...
GCC not jump-threading across this common code, and produces far nicer
output.
llvm-svn: 25762
2006-01-29 04:25:26 +00:00
Chris Lattner
d3a63de91e
Split out code generation from analysis from emission
...
llvm-svn: 25759
2006-01-29 02:57:39 +00:00
Chris Lattner
afe9baeb69
move some code around, no change in the generated code
...
llvm-svn: 25758
2006-01-29 02:43:35 +00:00
Chris Lattner
5255c6c627
now that we have control over emission of the code, emit the code using nested
...
"if" statements (indenting it appropriately, of course) instead of using goto's.
This inverts the logic for all of the if statements, which makes things simpler
to understand in addition to making the generated code easier to read.
llvm-svn: 25757
2006-01-28 20:43:52 +00:00
Chris Lattner
4c4da201bf
Change PatternCodeEmitter to emit code into a buffer instead of emitting it
...
directly to the output file. This makes things simple because the code doesn't
have to worry about indentation or the case when there is no goto. It also
allows us to indent the code better without touching everything :)
llvm-svn: 25756
2006-01-28 20:31:24 +00:00
Chris Lattner
a7d6bbff00
Fit to 80 columns, no functionality change
...
llvm-svn: 25752
2006-01-28 19:06:51 +00:00
Jeff Cohen
e251e92c23
Teach tablegen to generate code that is VC++ warning-free.
...
llvm-svn: 25709
2006-01-27 22:22:28 +00:00
Evan Cheng
e555a92c8d
(store (op (load ...)), ...)
...
If store's chain operand is load, then use load's chain operand instead. If
it isn't (likely a TokenFactor), then do not allow the folding.
llvm-svn: 25708
2006-01-27 22:13:45 +00:00
Evan Cheng
d98701c639
Subtarget feature can now set any variable to any value
...
llvm-svn: 25678
2006-01-27 08:09:42 +00:00
Chris Lattner
4d5a93ed28
Use printInlineAsm to, well, print inline asm's.
...
llvm-svn: 25677
2006-01-27 02:10:50 +00:00
Chris Lattner
543fe4b6aa
PHI and INLINEASM are now builtin instructions provided by Target.td
...
llvm-svn: 25673
2006-01-27 01:45:06 +00:00
Chris Lattner
db2a5f09f1
If we want to emit things in enum order, use getInstructionsByEnumValue to
...
get the order, don't compute it ourselves.
Don't emit stuff like (14<<0), emit 14 instead.
Don't attempt to get target properties for builtin instructions.
llvm-svn: 25672
2006-01-27 01:44:09 +00:00
Chris Lattner
ac8b13b32b
There is at least a 'noitinerary' itinerary now
...
llvm-svn: 25671
2006-01-27 01:41:55 +00:00
Chris Lattner
ec249a3d30
Don't emit JIT code for these instructions
...
llvm-svn: 25669
2006-01-27 01:39:38 +00:00
Chris Lattner
5815669251
Teach the dag selectors to select InlineAsm nodes.
...
Aren't we happy the pattern selectors are almost all gone?
llvm-svn: 25666
2006-01-26 23:08:55 +00:00
Evan Cheng
e9025f1f3b
Another folding problem: if a node r/w chain or flag, don't fold it if it
...
has already been selected. The number of use check is not strong enough since
a node can be replaced with newly created target node. e.g. If the original
node has two uses, when it is selected for one of the uses it is replaced with
another. Each node now has a single use but isel still should not fold it.
llvm-svn: 25651
2006-01-26 19:13:45 +00:00
Evan Cheng
dc8365d4f3
Add a FIXME comment.
...
llvm-svn: 25635
2006-01-26 02:13:31 +00:00
Evan Cheng
ecfaa0a1c9
Incoming (and optional) flag bugs. They may be embedded inside a inner node of
...
a pattern. Also, nodes which take incoming flag should not be folded if it has
more than one use.
llvm-svn: 25627
2006-01-26 00:22:25 +00:00
Evan Cheng
c5c228fa59
Fix an optional in flag bug.
...
llvm-svn: 25590
2006-01-24 20:46:50 +00:00
Evan Cheng
295e196558
Optional InFlag was not being included in node.
...
llvm-svn: 25588
2006-01-24 20:07:38 +00:00
Evan Cheng
e272b4ec17
Prevent folding of a node with multiple uses if the node already folds a load!
...
Here is an example where the load ended up being done twice:
%A = global uint 0
uint %test(uint %B, ubyte %C) {
%tmp = load uint *%A;
%X = shl uint %tmp, ubyte %C
%Cv = sub ubyte 32, %C
%Y = shr uint %B, ubyte %Cv
%Z = or uint %Y, %X
store uint %Z, uint* %A
ret uint %Z
}
==>
subl $4, %esp
movl %ebx, (%esp)
movl 8(%esp), %edx
movl A, %eax
movb 12(%esp), %bl
movb %bl, %cl
shldl %cl, %edx, %eax
movb %bl, %cl
shldl %cl, %edx, A
movl (%esp), %ebx
addl $4, %esp
ret
llvm-svn: 25471
2006-01-20 01:11:03 +00:00
Evan Cheng
9e7fb7b2fc
Bug fix. Flag operand number may be calculated incorrectly.
...
llvm-svn: 25465
2006-01-19 21:57:10 +00:00
Evan Cheng
a15731cd50
Use pattern information to determine whether the use expects this
...
instruction to produce a result. e.g MUL8m, the instruction does not
produce a explicit result. However it produces an implicit result in
AL which would be copied to a temp. The root operator of the matching
pattern is a mul so the use would expect it to produce a result.
llvm-svn: 25458
2006-01-19 10:12:58 +00:00
Evan Cheng
acec02ebf5
Prevent unnecessary CopyToReg when the same HW register appears in two spots
...
in the pattern.
llvm-svn: 25437
2006-01-19 01:55:45 +00:00
Chris Lattner
dce31c8d70
fix a broken comment
...
llvm-svn: 25411
2006-01-17 21:31:18 +00:00
John Criswell
5ed803256d
Regenerated the Lex and Yacc output files on Linux. It seems that our
...
Linux machines don't like the source code generated on MacOS X for some
reason.
llvm-svn: 25394
2006-01-17 17:01:34 +00:00
Evan Cheng
61864ec3fe
Emit a type matching check for ComplexPatterns.
...
llvm-svn: 25392
2006-01-17 07:36:41 +00:00
Evan Cheng
a039d439dc
Type inferencing bug
...
llvm-svn: 25337
2006-01-15 10:04:45 +00:00
Evan Cheng
bd1de84121
Allow transformation from GlobalAddress to TargetGlobalAddress and
...
ExternalSymbol to TargetExternalSymbol.
llvm-svn: 25252
2006-01-12 19:35:54 +00:00
Evan Cheng
e6300aaabc
GlobalAddress -> TargetGlobalAddress; ExternalSymbol -> TargetExternalSymbol
...
llvm-svn: 25245
2006-01-12 07:54:57 +00:00
Evan Cheng
31686087cd
Some minor fixes.
...
llvm-svn: 25227
2006-01-11 22:16:13 +00:00
Chris Lattner
e18ad392d3
Always select target registers to themselves
...
llvm-svn: 25218
2006-01-11 19:52:27 +00:00
Chris Lattner
3857f6d067
Emit an error instead of an assertion if trying to do bogus things in result patterns.
...
llvm-svn: 25194
2006-01-11 01:33:49 +00:00
Robert Bocchino
230044839d
Added support for the extractelement operation.
...
llvm-svn: 25181
2006-01-10 19:05:34 +00:00
Evan Cheng
4b0623e141
* Remove instruction fields hasInFlag / hasOutFlag and added SNDPInFlag and
...
SNDPOutFlag to DAG nodes. These properties do not belong to target specific
instructions.
* Added DAG node property SNDPOptInFlag. It's same as SNDPInFlag except it's
optional. Used by ret / call, etc.
llvm-svn: 25154
2006-01-09 18:27:06 +00:00
Evan Cheng
482ef91d26
Pattern complexity calculation fix.
...
llvm-svn: 25133
2006-01-06 22:19:44 +00:00
Evan Cheng
46634d21e3
Tweak pattern complexity calc.
...
llvm-svn: 25122
2006-01-06 02:30:23 +00:00
Evan Cheng
6b037909ff
Bug fix wrt chain operand.
...
llvm-svn: 25115
2006-01-06 00:41:12 +00:00
Jeff Cohen
a69bb989f1
Replace fix with one less disruptive to the original code.
...
Also note that GCC 4.1 also correctly flags the syntax error.
llvm-svn: 25076
2006-01-04 03:23:30 +00:00
Jeff Cohen
7d17a6bc86
Tblgen was generating syntactically illegal C++ code like:
...
SDOperand Tmp0,Tmp1,Tmp2,Tmp3,;
GCC has a bug (24907) in which is fails to catch this, but VC++ correctly
notes its illegality, so tblgen must be taught to only generate legal C++.
llvm-svn: 25075
2006-01-04 03:15:19 +00:00
Chris Lattner
3d38031bef
Remove obsolete comment, make things look a bit nicer
...
llvm-svn: 25070
2006-01-04 00:32:01 +00:00
Chris Lattner
c29793a077
reduce stack usage of the recursive SelectCode function by out-lining each
...
case of the switch statement into its own method.
llvm-svn: 25069
2006-01-04 00:25:00 +00:00
Chris Lattner
81e4dbc6a1
Remove my previous ugly hack that tries to reduce the stack space usage
...
of SelectCode to make way for a better solution.
llvm-svn: 25068
2006-01-03 22:55:16 +00:00
Duraid Madina
def44bec82
HP-UX DVDs are crunchy and good to eat
...
llvm-svn: 25052
2005-12-30 16:41:48 +00:00
Duraid Madina
018da4f5ef
almost got the HP-UX tester up.. :)
...
llvm-svn: 25051
2005-12-30 14:56:37 +00:00
Nate Begeman
336dba6fb1
Add support for generating v4i32 altivec code
...
llvm-svn: 25046
2005-12-30 00:12:56 +00:00
Duraid Madina
ccb1aebcd3
This gets most of the backends building with HP HappyC++.
...
llvm-svn: 25029
2005-12-27 10:56:22 +00:00
Evan Cheng
14c53b45f5
Added field noResults to Instruction.
...
Currently tblgen cannot tell which operands in the operand list are results so
it assumes the first one is a result. This is bad. Ideally we would fix this
by separating results from inputs, e.g. (res R32:$dst),
(ops R32:$src1, R32:$src2). But that's a more distruptive change. Adding
'let noResults = 1' is the workaround to tell tblgen that the instruction does
not produces a result. It works for now since tblgen does not support
instructions which produce multiple results.
llvm-svn: 25017
2005-12-26 09:11:45 +00:00
Duraid Madina
14492afc23
more standards-compliance stuff
...
llvm-svn: 25014
2005-12-26 05:08:55 +00:00
Andrew Lenharth
0dc12c38e5
support targetexternalsym
...
llvm-svn: 25005
2005-12-24 23:36:59 +00:00
Evan Cheng
72aaf8e374
* Support for hasInFlag and hasOutFlag (on instructions). Remove nameless FLAG
...
support which is fragile.
* Fixed a number of bugs.
llvm-svn: 24996
2005-12-23 22:11:47 +00:00
Chris Lattner
d834d495b2
silence some bogus gcc warnings
...
llvm-svn: 24962
2005-12-22 20:37:36 +00:00
Evan Cheng
a87d743912
Attempt to fix a crash on WIN32.
...
llvm-svn: 24936
2005-12-22 02:35:21 +00:00
Evan Cheng
991bc6d6ba
* Added support for FLAG - a special nameless flag register. Can be used as
...
either an operand or a result.
* Fixed some more flag / chain bugs.
llvm-svn: 24933
2005-12-22 02:24:50 +00:00
Evan Cheng
f646926ecf
Allows instructions which no explicit operands. e.g. X86 RET which has but
...
an implicit flag operand.
llvm-svn: 24916
2005-12-21 20:20:49 +00:00
Chris Lattner
812a56e888
Eliminate some GCC warnings from the generated code
...
llvm-svn: 24897
2005-12-21 05:31:05 +00:00
Evan Cheng
4bf64a8ba4
Fix the semantic of Requires<[cond]> to mean if (!cond) goto PXXFail;
...
llvm-svn: 24883
2005-12-20 20:08:01 +00:00
Chris Lattner
777bb6eb45
This ugly patch works around a GCC bug where it is compiling SelectCode to
...
use too much stack space, overflowing the stack for large functions. Instead
of emitting new SDOperands in each match block, we emit some common ones at
the top of SelectCode then reuse them when possible.
This reduces the stack size of SelectCode from 28K to 21K. Note that GCC
compiles it to 512 bytes :-/
I've filed GCC PR 25505 to track this.
llvm-svn: 24882
2005-12-20 19:41:03 +00:00
Evan Cheng
9696f63d3e
Now support instructions with implicit write to non-flag registers.
...
llvm-svn: 24878
2005-12-20 07:37:41 +00:00
Evan Cheng
fe90b604a4
Lefted out a fix in the previous check in.
...
llvm-svn: 24873
2005-12-20 00:06:17 +00:00
Evan Cheng
19b9f15377
Fix another bug related to chain / flag.
...
llvm-svn: 24868
2005-12-19 22:40:04 +00:00
Evan Cheng
9bd85c2f19
Fixes for a number of bugs: save flag results in CodeGenMap, folded chains
...
may not all have ResNo == 0.
llvm-svn: 24858
2005-12-19 07:18:51 +00:00
Chris Lattner
f7ae0a95fe
Handle basic block nodes
...
llvm-svn: 24833
2005-12-18 21:05:44 +00:00
Chris Lattner
abb11cc83e
More fixes for Selection of copyto/fromreg with a flag
...
llvm-svn: 24829
2005-12-18 15:45:51 +00:00
Chris Lattner
fc3d4f8fd8
Select copytoreg and copyfromreg nodes that have flag operands correctly.
...
llvm-svn: 24827
2005-12-18 15:28:25 +00:00
Evan Cheng
e22f9181f7
Support for read / write from explicit registers with FlagVT type.
...
llvm-svn: 24753
2005-12-17 01:19:28 +00:00
Evan Cheng
d296a43f96
Added support to specify predicates.
...
llvm-svn: 24715
2005-12-14 22:02:59 +00:00
Evan Cheng
6a31777c8e
Skip over srcvalue nodes when generating ISEL code.
...
llvm-svn: 24704
2005-12-14 02:21:57 +00:00
Evan Cheng
6148153230
Bug fix: CodeGenMap[N] = ... -> CodeGenMap[N.getValue(0)] = ...
...
llvm-svn: 24680
2005-12-12 23:45:21 +00:00
Evan Cheng
7e4c01eee3
At top of generated isel SelectCode() is this:
...
if (!N.Val->hasOneUse()) {
std::map<SDOperand, SDOperand>::iterator CGMI = CodeGenMap.find(N);
if (CGMI != CodeGenMap.end()) return CGMI->second;
}
Suppose a DAG like this:
X
^ ^
/ \
USE1 USE2
Suppose USE1 is being selected first and during which X is selected and
returned a new node. After this, USE1 is no longer an use of X. During USE2
selection, X will be selected again since it has only one use!
The fix is to always query CodeGenMap.
llvm-svn: 24679
2005-12-12 23:22:48 +00:00
Evan Cheng
cdb16ef6f3
Bug fix: finding the correct incoming chain for pattern with nested src operand. And a minor change to make output code slightly more readible.
...
llvm-svn: 24669
2005-12-12 19:37:43 +00:00
Nate Begeman
4e56db674c
Add support for TargetConstantPool nodes to the dag isel emitter, and use
...
them in the PPC backend, to simplify some logic out of Select and
SelectAddr.
llvm-svn: 24657
2005-12-10 02:36:00 +00:00
Evan Cheng
0da396ffe2
Stop emitting a redudant type check for complex pattern node.
...
llvm-svn: 24655
2005-12-10 01:57:33 +00:00
Evan Cheng
bac252c289
For instructions which produce no result, e.g. store, chain's Resno == 0.
...
llvm-svn: 24652
2005-12-10 00:09:17 +00:00
Chris Lattner
433573f4c6
Add a new SDTCisPtrTy constraint, which indicates that an operand must have
...
the same type as the pointer type for a target.
llvm-svn: 24649
2005-12-09 22:57:42 +00:00
Evan Cheng
499ab2a9fa
* Do not allow nodes which produce chain results (e.g. loads) to be folded if
...
it has more than one real use (non-chain uses).
* Record folded chain producing node in CodeGenMap.
* Do not fold a chain producing node if it has already been selected as an
operand of a chain use.
llvm-svn: 24647
2005-12-09 22:45:35 +00:00
Evan Cheng
c1f911a238
Prevent folding of instructions which produce chains that have more than 1 real use
...
llvm-svn: 24643
2005-12-09 06:06:08 +00:00
Evan Cheng
f423a17e33
* Make sure complex pattern operands are selected first since their select
...
functions can return false and causing the instruction pattern match to fail.
* Code clean up.
llvm-svn: 24642
2005-12-09 00:48:42 +00:00
Evan Cheng
c9a620060b
* Added an explicit type field to ComplexPattern.
...
* Renamed MatchingNodes to RootNodes.
llvm-svn: 24636
2005-12-08 02:14:08 +00:00
Evan Cheng
9b9567bfb5
Added support for ComplexPattern. These are patterns that require C++ pattern
...
matching code that is not currently auto-generated by tblgen, e.g. X86
addressing mode. Selection routines for complex patterns can return multiple operands, e.g. X86 addressing mode returns 4.
llvm-svn: 24634
2005-12-08 02:00:36 +00:00
Evan Cheng
0fe76d1585
* Infer instruction property hasCtrlDep from pattern if it has one.
...
* Fixed a bug related to hasCtrlDep property use.
llvm-svn: 24610
2005-12-05 23:08:55 +00:00
Chris Lattner
ba369ae8f1
Implement PR673: for explicit register references, use type information
...
if available
llvm-svn: 24597
2005-12-05 02:36:37 +00:00
Chris Lattner
3717b4c830
Add some methods
...
llvm-svn: 24596
2005-12-05 02:35:08 +00:00
Chris Lattner
d49489f01e
Generate code to silence bogus GCC warnings.
...
llvm-svn: 24593
2005-12-05 00:48:51 +00:00
Evan Cheng
f02bb9af8b
* Commit the fix (by Chris) for a tblgen type inferencing bug.
...
* Enhanced tblgen to handle instructions which have chain operand and writes a
chain result.
* Enhanced tblgen to handle instructions which produces no results. Part of
the change is a temporary hack which relies on instruction property (e.g.
isReturn, isBranch). The proper fix would be to change the .td syntax to
separate results dag from ops dag.
llvm-svn: 24587
2005-12-04 08:18:16 +00:00
Nate Begeman
006bb04f3a
Support multiple ValueTypes per RegisterClass, needed for upcoming vector
...
work. This change has no effect on generated code.
llvm-svn: 24563
2005-12-01 04:51:06 +00:00
Evan Cheng
fed83adbe3
Teach tblgen to accept register source operands in patterns, e.g.
...
def SHL8rCL : I<0xD2, MRM4r, (ops R8 :$dst, R8 :$src),
"shl{b} {%cl, $dst|$dst, %CL}",
[(set R8:$dst, (shl R8:$src, CL))]>, Imp<[CL],[]>;
This generates a CopyToReg operand and added its 2nd result to the shl as
a flag operand.
llvm-svn: 24557
2005-12-01 00:18:45 +00:00
Nate Begeman
faad542d24
Nuke CodeGenInstruction's ValueType member, it is no longer used.
...
llvm-svn: 24556
2005-12-01 00:12:04 +00:00
Nate Begeman
cdf2c67888
Stop checking the ValueType of the CodeGenInstruction. Instead, use the
...
ValueType from the RegisterClass or Operands. This step is necessary to
allow RegisterClasses to have multiple ValueTypes.
llvm-svn: 24555
2005-12-01 00:06:14 +00:00
Nate Begeman
e479ccb27b
fit into 80 columns
...
llvm-svn: 24554
2005-11-30 23:58:18 +00:00
Chris Lattner
3e63dc00da
Make the code generated by tblgen return the result of SelectNodeTo, to
...
permit future changes.
llvm-svn: 24553
2005-11-30 23:08:45 +00:00
Nate Begeman
6f8c1ace6e
No longer track value types for asm printer operands, and remove them as
...
an argument to every operand printing function. Requires some slight
tweaks to x86, the only user.
llvm-svn: 24541
2005-11-30 18:54:35 +00:00
Nate Begeman
f621b333f3
Fix some copy and paste typos.
...
llvm-svn: 24540
2005-11-30 18:37:14 +00:00
Evan Cheng
c8af0cb893
Better error message when unrecognized opcode is seen.
...
llvm-svn: 24519
2005-11-29 18:44:58 +00:00
Nate Begeman
4d0251ad55
Add the new vector types to tablegen
...
llvm-svn: 24514
2005-11-29 06:19:38 +00:00
Chris Lattner
f2807be3da
Initialize this variable on all paths, fixing a crasher in windows. Thanks
...
to JeffC for pointing this out.
llvm-svn: 24426
2005-11-19 07:48:33 +00:00
Chris Lattner
6bc0304c91
Teach tblgen about instruction operands that have multiple MachineInstr
...
operands, digging into them to find register values (used on X86). Patch
by Evan Cheng!
llvm-svn: 24424
2005-11-19 07:05:57 +00:00
Chris Lattner
a70c7dff2e
Validate that the input to 'Pat' patterns is sane.
...
llvm-svn: 24393
2005-11-17 17:43:52 +00:00
Chris Lattner
2a230e1c1a
teach tblgen to be smart enough to handle tglobaladdr nodes
...
llvm-svn: 24391
2005-11-17 07:39:45 +00:00
Chris Lattner
b22950df6c
fix a tblgen bug that Evan ran into, where we would lose the '$src' name
...
on patterns like "(set R32:$dst, (i32 imm:$src))"
llvm-svn: 24383
2005-11-16 23:14:54 +00:00
Jim Laskey
d6d3afb05e
1. Remove ranges from itinerary data.
...
2. Tidy up the subtarget emittined code.
llvm-svn: 24172
2005-11-03 22:47:41 +00:00
Chris Lattner
64209fd14b
Reject integer literals that are out of range for their type.
...
llvm-svn: 24162
2005-11-03 05:46:11 +00:00
Chris Lattner
590176be16
Add support for immediates directly in the pattern, this allows itanium to
...
define:
def : Pat<(i1 1), (CMPEQ r0, r0)>;
llvm-svn: 24149
2005-11-02 06:49:14 +00:00
Jim Laskey
802748cd61
Allow itineraries to be passed through the Target Machine.
...
llvm-svn: 24139
2005-11-01 20:06:59 +00:00
Jeff Cohen
9e1784d738
Keep VC++ happy.
...
llvm-svn: 24137
2005-11-01 18:04:06 +00:00
Jim Laskey
0433df136f
Emit itinerary class in instruction info.
...
llvm-svn: 24122
2005-10-31 17:16:46 +00:00
Jim Laskey
3763a50d82
Generate cpu to itinerary map.
...
llvm-svn: 24121
2005-10-31 17:16:01 +00:00
Chris Lattner
d91df9d941
Make negative immediates in patterns work correctly, silence some warnings
...
building the itanium backend.
llvm-svn: 24095
2005-10-29 16:39:40 +00:00
Chris Lattner
742606ad30
Switch more code over to using getValueAsListOfDefs. Look at all the -'s. :)
...
llvm-svn: 24074
2005-10-28 22:59:53 +00:00
Chris Lattner
7ad0bed89f
Rename Record::getValueAsListDef to getValueAsListOfDefs, to more accurately
...
reflect what it is.
Convert some more code over to use it.
llvm-svn: 24072
2005-10-28 22:49:02 +00:00
Chris Lattner
802bd8d94f
Use the new interface Jim added
...
llvm-svn: 24071
2005-10-28 22:43:25 +00:00
Jim Laskey
dffe5978a3
Removed Mr. Smith from the code.
...
llvm-svn: 24070
2005-10-28 21:47:29 +00:00
Jim Laskey
b04feb633f
Added method to return a vector of records for a ListInit of Def field. This
...
simplifies using list of records.
llvm-svn: 24069
2005-10-28 21:46:31 +00:00
Jim Laskey
1959575208
Add some commentary.
...
llvm-svn: 24055
2005-10-28 15:20:43 +00:00
Jeff Cohen
b0aa47b043
Keep Visual Studio happy.
...
llvm-svn: 24052
2005-10-28 01:43:09 +00:00
Jim Laskey
86f002cc32
Now generating instruction itineraries for scheduling. Not my best work, but...
...
llvm-svn: 24050
2005-10-27 19:47:21 +00:00
Jim Laskey
777a26efc3
Simplify.
...
llvm-svn: 24015
2005-10-26 17:49:21 +00:00
Jim Laskey
a2b5235fac
Give full control of subtarget features over to table generated code.
...
llvm-svn: 24013
2005-10-26 17:30:34 +00:00
Chris Lattner
f277ac7caa
Condcodes are in the ISD namespace
...
llvm-svn: 24010
2005-10-26 17:02:02 +00:00
Chris Lattner
611b0c634c
Add support for CondCode's
...
llvm-svn: 24008
2005-10-26 16:59:37 +00:00
Chris Lattner
d980c46f52
Emit some boilerplate for targets
...
llvm-svn: 23983
2005-10-25 20:35:14 +00:00
Jim Laskey
1b7369b1ae
Refactored to make room for more stuff (scheduling info.)
...
llvm-svn: 23975
2005-10-25 15:16:36 +00:00
Chris Lattner
fc9f5773d0
Fix an incompatibility with GCC 4.1, thanks to Vladimir Merzliakov
...
for pointing this out!
llvm-svn: 23963
2005-10-24 15:04:15 +00:00
Chris Lattner
4f48e67c6c
Add the needed #include, emit enums with the sizes of tables, remove
...
definitions from the LLVM namespace, since they are all static.
llvm-svn: 23907
2005-10-23 22:33:08 +00:00
Chris Lattner
49f7b69997
Remove the obsolete instr selector emitter
...
llvm-svn: 23894
2005-10-23 05:47:52 +00:00
Jim Laskey
a1beea6c7d
Sort the features and processor lists for the sake of search (and maintainers.)
...
llvm-svn: 23879
2005-10-22 07:59:56 +00:00
Jim Laskey
9ed9032e22
Plugin new subtarget backend into the build.
...
llvm-svn: 23870
2005-10-21 19:05:19 +00:00
Jim Laskey
cfda85ad91
New TableGen backends for subtarget information. Only command line stuff
...
active now. Scheduling itinerary next.
llvm-svn: 23869
2005-10-21 19:00:04 +00:00
Chris Lattner
8bda5afd91
Make tblgen emit:
...
tblgen: In ZAPNOTi: Cannot use 'IZAPX' in an input pattern!
for a bad pattern, instead of an ugly assertion.
llvm-svn: 23854
2005-10-21 01:19:59 +00:00
Chris Lattner
c9ad735e78
add support for literal immediates in patterns to match, allowing us to
...
write things like this:
def : Pat<(add GPRC:$in, 12),
(ADD12 GPRC:$in)>;
Andrew: if this isn't enough or doesn't work for you, please lemme know.
llvm-svn: 23819
2005-10-19 04:41:05 +00:00
Chris Lattner
7f6f565846
Add basic support for integer constants in pattern results.
...
llvm-svn: 23817
2005-10-19 04:30:56 +00:00
Chris Lattner
2ae2f99326
Fix some checking that was causing duraid to get a perplexing assertion
...
instead of a happy error message
llvm-svn: 23816
2005-10-19 04:12:14 +00:00
Chris Lattner
b8014e10ae
Add support for patterns that have physical registers in them. Testcase:
...
def : Pat<(trunc G8RC:$in),
(OR8To4 G8RC:$in, X0)>;
Even though this doesn't make any sense on PPC :)
llvm-svn: 23815
2005-10-19 02:07:26 +00:00
Chris Lattner
c8f899f98d
Asserting here is to violent
...
llvm-svn: 23814
2005-10-19 01:55:23 +00:00
Chris Lattner
8baf5043a8
Nate wants to define 'Pat's which turn into instructions that don't have
...
patterns. Certainly a logical request.
llvm-svn: 23810
2005-10-19 01:27:22 +00:00
Chris Lattner
ed653cbe43
Duraid pointed out that it is impolite to emit PPC:: into the IA64 backend
...
llvm-svn: 23780
2005-10-18 04:41:01 +00:00
Chris Lattner
825298b060
Make the generated code significantly more memory efficient, by using
...
SelectNodeTo instead of getTargetNode when possible.
llvm-svn: 23758
2005-10-16 01:41:58 +00:00
Chris Lattner
6b22d2554a
Implement the last major missing piece in the DAG isel generator: when emitting
...
a pattern match, make sure to emit the (minimal number of) type checks that
verify the pattern matches this specific instruction. This allows FMA32
patterns to not match double expressions for example.
llvm-svn: 23748
2005-10-15 21:34:21 +00:00
Chris Lattner
c4db8f4163
Now that we have int/fp lattice values, implement the SDTCisOpSmallerThanOp
...
type constraint. This lets tblgen realize that it doesn't need any dynamic
type checks for fextend/fround on PPC (and many other targets), because there
are only two fp types.
llvm-svn: 23730
2005-10-14 06:25:00 +00:00
Chris Lattner
ecaf56b21a
Fairly serious rework of the typing code to add new int/fp lattice values.
...
Overall, no functionality change yet though.
llvm-svn: 23729
2005-10-14 06:12:03 +00:00
Chris Lattner
cdf483556f
simplify the code a bit
...
llvm-svn: 23728
2005-10-14 05:08:37 +00:00
Chris Lattner
4892df38f3
Add basic support for recognizing a new SDTCisOpSmallerThanOp type constraint
...
llvm-svn: 23725
2005-10-14 04:53:53 +00:00
Chris Lattner
7b0275ba8c
Implement a couple of new (important) features.
...
1. If an operation has to be int or fp and the target only supports one
int or fp type, relize that the op has to have that type.
2. If a target has operations on multiple types, do not emit matching code
for patterns involving those operators, since we do not emit the code to
check for them yet. This prevents PPC from generating FP ops currently.
Also move some code around into more logical places.
llvm-svn: 23724
2005-10-14 04:11:13 +00:00
Chris Lattner
90c5b9c83c
Do not let getLegalValueTypes return a list with duplicates in it
...
llvm-svn: 23723
2005-10-14 03:54:49 +00:00
Chris Lattner
d4ff3c1324
Emit the value type for each register class.
...
llvm-svn: 23584
2005-10-02 06:23:37 +00:00
Chris Lattner
c9f4219cfc
Rename MRegisterDesc -> TargetRegisterDesc for consistency
...
llvm-svn: 23564
2005-09-30 17:49:27 +00:00
Chris Lattner
3e020bb619
remove some more initializers
...
llvm-svn: 23562
2005-09-30 17:41:05 +00:00
Chris Lattner
ddc69bbbba
trim down the target info structs now that we have a preferred spill register class for each callee save register
...
llvm-svn: 23560
2005-09-30 17:35:22 +00:00
Chris Lattner
da6fcc9f49
Compute a preferred spill register class for each callee-save register
...
llvm-svn: 23553
2005-09-30 06:44:45 +00:00
Chris Lattner
26f5fb1277
Fix a warning
...
llvm-svn: 23550
2005-09-30 06:09:50 +00:00
Chris Lattner
1916ef75cf
Regenerate
...
llvm-svn: 23549
2005-09-30 04:53:25 +00:00
Chris Lattner
b509577605
Refactor this a bit to move ParsingTemplateArgs to only apply to classes,
...
not defs.
Implement support for forward definitions of classes. This implements
TableGen/ForwardRef.td.
llvm-svn: 23548
2005-09-30 04:53:04 +00:00
Chris Lattner
20b0e3cee4
Regenerate
...
llvm-svn: 23546
2005-09-30 04:42:56 +00:00
Chris Lattner
ad61925e27
Generate a parse error instead of a checked exception if template args are
...
used on a def.
llvm-svn: 23545
2005-09-30 04:42:31 +00:00
Chris Lattner
6e60c8fe05
regenerate
...
llvm-svn: 23543
2005-09-30 04:11:27 +00:00
Chris Lattner
e04e1384fc
Refactor the grammar a bit to implement TableGen/ForwardRef.td
...
llvm-svn: 23542
2005-09-30 04:10:49 +00:00
Chris Lattner
2a6fd61dfc
allow regs to be in multiple reg classes
...
llvm-svn: 23540
2005-09-30 01:33:48 +00:00
Chris Lattner
366fe04301
Teach tablegen to reassociate operators when possible. This allows it to
...
find all of teh pattern matches for EQV from one definition
llvm-svn: 23529
2005-09-29 22:36:54 +00:00
Chris Lattner
e86824e57a
Teach tblgen to build permutations of instructions, so that the target author
...
doesn't have to specify them manually. It currently handles associativity,
e.g. knowing that (X*Y)+Z also matches X+(Y*Z) and will be extended in
the future.
It is smart enough to not introduce duplicate patterns or patterns that can
never match.
llvm-svn: 23526
2005-09-29 19:28:10 +00:00
Chris Lattner
492e70f4ec
add support for an associative marker
...
llvm-svn: 23502
2005-09-28 20:58:06 +00:00
Chris Lattner
8bb25cd68a
Emit an error if instructions or patterns are defined but can never match.
...
Currently we check that immediate values live on the RHS of commutative
operators. Defining ORI like this, for example:
def ORI : DForm_4<24, (ops GPRC:$dst, GPRC:$src1, u16imm:$src2),
"ori $dst, $src1, $src2",
[(set GPRC:$dst, (or immZExt16:$src2, GPRC:$src1))]>;
results in:
tblgen: In ORI: Instruction can never match: Immediate values must be on the RHS of commutative operators!
llvm-svn: 23501
2005-09-28 19:27:25 +00:00
Chris Lattner
f74c30c281
collect commutativity information
...
llvm-svn: 23499
2005-09-28 18:28:29 +00:00
Chris Lattner
3622f15491
Prefer cheaper patterns to more expensive ones. Print the costs to the generated
...
file
llvm-svn: 23492
2005-09-28 17:57:56 +00:00
Chris Lattner
75b4c5d868
Select Constant nodes to TargetConstant nodes
...
llvm-svn: 23488
2005-09-28 16:58:06 +00:00
Chris Lattner
d455c36c91
memoize the assert results
...
llvm-svn: 23457
2005-09-26 22:10:24 +00:00
Chris Lattner
c9153266c6
Emit the switch stmt cases in alphabetical order instead of pointer order,
...
which is not stable.
llvm-svn: 23456
2005-09-26 21:59:35 +00:00
Chris Lattner
d5de8544f8
implement a fixme: only select values once, even if used multiple times.
...
llvm-svn: 23454
2005-09-26 21:53:26 +00:00
Jeff Cohen
23b1d28e69
Fix VC++ build errors.
...
llvm-svn: 23431
2005-09-25 19:04:43 +00:00
Chris Lattner
cc1d38160d
memoize translations
...
llvm-svn: 23419
2005-09-24 00:50:51 +00:00
Chris Lattner
0afb14cade
Teach the DAG isel generator to emit code that creates nodes.
...
Fix a few corner cases parsing things like (i32 imm:$foo)
llvm-svn: 23417
2005-09-24 00:40:24 +00:00
Chris Lattner
cd093e868e
Emit better code (no more copies for var references), and support DAG patterns
...
(e.g. things like rotates).
llvm-svn: 23416
2005-09-23 23:16:51 +00:00
Chris Lattner
8ffb99b4fe
Fix a fixme by passing around SDOperand's instead of SDNode*'s
...
llvm-svn: 23415
2005-09-23 21:53:45 +00:00
Chris Lattner
cc8a564cb1
Emit code that matches the incoming DAG pattern and checks predicates.
...
This does not check that types match yet, but PPC only has one integer type
;-).
This also doesn't have the code to build the resultant dag.
llvm-svn: 23414
2005-09-23 21:33:23 +00:00
Chris Lattner
323a47970e
emit information about the order patterns are to be matched.
...
llvm-svn: 23413
2005-09-23 20:52:47 +00:00
Chris Lattner
abb430bad2
start filling in the switch stmt
...
llvm-svn: 23412
2005-09-23 19:36:15 +00:00
Chris Lattner
7884fffb00
Fix a minor bug, add comments
...
llvm-svn: 23370
2005-09-16 00:29:46 +00:00
Chris Lattner
59e96143a2
teach the type inference code how to infer types for instructions and node
...
xforms. Run type inference on result patterns, so we always have fully typed
results (and to catch errors in .td files).
llvm-svn: 23369
2005-09-15 22:23:50 +00:00
Chris Lattner
fedd9a5e1d
put instructions into a map instead of a vector for quick lookup
...
llvm-svn: 23368
2005-09-15 21:57:35 +00:00
Chris Lattner
f38ce8f756
when parsing instructions remember information about the types taken and
...
returned.
llvm-svn: 23367
2005-09-15 21:51:12 +00:00
Chris Lattner
a0a986c9ae
Start parsing "Pattern" nodes
...
llvm-svn: 23365
2005-09-15 21:42:00 +00:00
Chris Lattner
f79ad4cb32
rename a couple of methods, add structure for pattern parsing
...
llvm-svn: 23364
2005-09-15 02:38:02 +00:00
Chris Lattner
a155256a71
Verify that xform functions only occur in logical places
...
llvm-svn: 23363
2005-09-14 23:05:13 +00:00
Chris Lattner
991c7c973a
Promote xform fns to be explicit nodes in result patterns, and clean off
...
predicates since they will have already matched at this point.
llvm-svn: 23362
2005-09-14 23:01:59 +00:00
Chris Lattner
bc7aabce12
start building the instruction dest pattern correctly. Change the xform
...
functions to preserve the Record for the xform instead of making it into a
function name.
llvm-svn: 23361
2005-09-14 22:55:26 +00:00
Chris Lattner
e389c6154e
catch unnamed inputs
...
llvm-svn: 23360
2005-09-14 22:06:36 +00:00
Chris Lattner
030f876cf2
check that there are no unexpected operands
...
llvm-svn: 23359
2005-09-14 21:59:34 +00:00
Chris Lattner
3ced3f8b82
force all instruction operands to be named.
...
llvm-svn: 23358
2005-09-14 21:13:50 +00:00
Chris Lattner
f02994d782
Check that operands have unique names. REJECT instructions with broken operand
...
lists: only don't parse them if they are entirely missing (sparcv9).
llvm-svn: 23355
2005-09-14 21:05:02 +00:00
Chris Lattner
24ae3494f0
fix a broke range check
...
llvm-svn: 23354
2005-09-14 21:04:12 +00:00
Chris Lattner
3ba60bf644
Parse significantly more of the instruction pattern, now collecting and
...
verifying information about the operands.
llvm-svn: 23353
2005-09-14 20:53:42 +00:00
Chris Lattner
22e60c99ce
Verify that set destinations occur first in the instruction operand list.
...
llvm-svn: 23351
2005-09-14 18:19:25 +00:00
Chris Lattner
fcffc98b05
add an accessor
...
llvm-svn: 23349
2005-09-14 18:02:53 +00:00
Chris Lattner
1c8d6ce015
remove some code that isn't ready for prime time
...
llvm-svn: 23346
2005-09-14 06:03:10 +00:00
Chris Lattner
3361eab530
Switch to a slightly more structured representation for instructions
...
llvm-svn: 23345
2005-09-14 04:03:16 +00:00
Chris Lattner
4cfcb544bf
Add some more checking/verification code
...
llvm-svn: 23344
2005-09-14 02:11:12 +00:00
Chris Lattner
4c7b604091
start parsing instructions into patterns, start doing many more checks of
...
'set's.
llvm-svn: 23343
2005-09-14 00:09:24 +00:00
Chris Lattner
bb9b01644e
don't emit the namespace inside the class!
...
llvm-svn: 23341
2005-09-13 22:05:02 +00:00
Chris Lattner
70a7234111
Emit code suitable for emission into the ISel class, allowing us to use/define
...
methods.
llvm-svn: 23340
2005-09-13 22:03:37 +00:00
Chris Lattner
3556d849da
continue xform function parsing
...
llvm-svn: 23338
2005-09-13 21:59:15 +00:00
Chris Lattner
2617de498d
Start parsing node transformation information
...
llvm-svn: 23337
2005-09-13 21:51:00 +00:00
Chris Lattner
ae939eb6bb
Add a new Record::getValueAsCode method to mirror the other getValueAs*
...
methods. Use it to simplify some code.
llvm-svn: 23336
2005-09-13 21:44:28 +00:00
Chris Lattner
f365e25a5c
completely eliminate TreePattern::PatternType
...
llvm-svn: 23335
2005-09-13 21:20:49 +00:00
Chris Lattner
d0c7a5eeb7
Regenerate
...
llvm-svn: 23311
2005-09-12 05:30:06 +00:00
Chris Lattner
564d240799
Rearrange two rules, which apparently makes some versions of bison happier.
...
llvm-svn: 23310
2005-09-12 05:29:43 +00:00
Jeff Cohen
0dce12dd90
Fix miscellaneous Visual Studio build problems.
...
llvm-svn: 23307
2005-09-10 02:00:02 +00:00
Chris Lattner
ce2173d098
add an accessor to provide more checking
...
llvm-svn: 23289
2005-09-09 01:15:01 +00:00
Chris Lattner
7a82c06f34
use new accessors to simplify code. Add checking to make sure top-level instr
...
definitions are void
llvm-svn: 23288
2005-09-09 01:11:44 +00:00
Chris Lattner
91d8672be1
add some accessors
...
llvm-svn: 23287
2005-09-09 01:11:17 +00:00
Chris Lattner
debd6e95ab
Fix incorrect comment
...
llvm-svn: 23285
2005-09-08 23:26:30 +00:00
Chris Lattner
d7d31f3b06
Implement a complete type inference system for dag patterns, based on the
...
constraints defined in the DAG node definitions in the .td files. This
allows us to infer (and check!) the types for all nodes in the current
ppc .td file. For example, instead of:
Inst pattern EQV: (set GPRC:i32:$rT, (xor (xor GPRC:i32:$rA, GPRC:i32:$rB), (imm)<<Predicate_immAllOnes>>))
we now fully infer:
Inst pattern EQV: (set:void GPRC:i32:$rT, (xor:i32 (xor:i32 GPRC:i32:$rA, GPRC:i32:$rB), (imm:i32)<<Predicate_immAllOnes>>))
from: (set GPRC:$rT, (not (xor GPRC:$rA, GPRC:$rB)))
llvm-svn: 23284
2005-09-08 23:22:48 +00:00
Chris Lattner
cee994b464
Compute the value types that are natively supported by a target.
...
llvm-svn: 23282
2005-09-08 21:43:21 +00:00
Chris Lattner
1c33104010
Parse information about type constraints on SDNodes
...
llvm-svn: 23281
2005-09-08 21:27:15 +00:00
Chris Lattner
a3b89dfcef
use node info in the one place we currently use it
...
llvm-svn: 23280
2005-09-08 21:04:46 +00:00
Chris Lattner
35bcd1488a
start parsing SDNode info records
...
llvm-svn: 23279
2005-09-08 21:03:01 +00:00
Chris Lattner
07f1e4597e
Fix indentation
...
llvm-svn: 23276
2005-09-08 19:47:28 +00:00
Chris Lattner
bd6b164965
regenerate
...
llvm-svn: 23275
2005-09-08 18:48:47 +00:00
Chris Lattner
972cccd77a
Add support for automatically created anonymous definitions.
...
This implements Regression/TableGen/AnonDefinitionOnDemand.td
llvm-svn: 23274
2005-09-08 18:48:23 +00:00
Chris Lattner
5a699e621f
regenerate
...
llvm-svn: 23271
2005-09-08 18:22:57 +00:00
Chris Lattner
8a41b214b3
Tabs to spaces.
...
llvm-svn: 23270
2005-09-08 18:22:35 +00:00
Chris Lattner
399f59f643
Keep names even when inlining. This allows us to realize that ADDI is:
...
(set GPRC:i32:$rD, (add GPRC:i32:$rA, (imm)<<Predicate_immSExt16>>:$imm))
not:
(set GPRC:i32:$rD, (add GPRC:i32:$rA, (imm)<<Predicate_immSExt16>>))
(we keep the ":$imm")
llvm-svn: 23269
2005-09-08 17:45:12 +00:00
Chris Lattner
d2a5b366f5
Initial cut of the dag isel generator. This is still very much a work in
...
progress. It correctly parses instructions and pattern fragments and glues
together pattern fragments into instructions.
The only code it generates currently is some boilerplate code for things
like the EntryNode.
llvm-svn: 23261
2005-09-07 23:44:43 +00:00
Chris Lattner
c59a1dbce2
Rename a class. These files are being migrated to the new isel and I want to
...
reuse the names
llvm-svn: 23252
2005-09-06 22:51:34 +00:00
Chris Lattner
784e44443d
regenerate
...
llvm-svn: 23249
2005-09-06 21:23:27 +00:00
Chris Lattner
ab9eba1014
Tighten up the specification to allow TableGen/nested-comment.td to pass
...
(fixing a bug where / in a /* */ comment would cause it to not close).
llvm-svn: 23248
2005-09-06 21:23:09 +00:00
Chris Lattner
90d000417f
Add an option and stuff implementation of a dag isel emitter
...
llvm-svn: 23236
2005-09-03 01:14:03 +00:00
Reid Spencer
dfb3fb4a25
Implement PR614:
...
These changes modify the makefiles so that the output of flex and bison are
placed in the SRC directory, not the OBJ directory. It is intended that they
be checked in as any other LLVM source so that platforms without convenient
access to flex/bison can be compiled. From now on, if you change a .y or
.l file you *must* also commit the generated .cpp and .h files.
llvm-svn: 23115
2005-08-27 18:50:39 +00:00
Chris Lattner
c6a0338c04
spell this right
...
llvm-svn: 23099
2005-08-26 20:55:40 +00:00
Chris Lattner
63dc7f569a
spell this variable right
...
llvm-svn: 23095
2005-08-26 20:42:52 +00:00
Chris Lattner
3d9fbefbf7
Expose a new flag to TargetInstrInfo
...
llvm-svn: 23094
2005-08-26 20:40:46 +00:00
Chris Lattner
c36c9bdb5d
add a marker at the end of the instruction enum list
...
llvm-svn: 23090
2005-08-26 20:17:00 +00:00
Chris Lattner
96d0234845
Emit this:
...
static const TargetOperandInfo OperandInfo6[] = { { &PPC32::CRRCRegClass }, { 0 }, };
instead of this:
static const TargetOperandInfo OperandInfo6[] = { { PPC32::CRRCRegisterClass }, { 0 }, };
For operand information, which does not require dynamic (startup-time)
initialization.
llvm-svn: 22931
2005-08-19 20:29:14 +00:00
Chris Lattner
8ed3d0a0ce
Expose the derived register classes to the public header, allowing them
...
to be accessed.
llvm-svn: 22930
2005-08-19 20:23:42 +00:00
Chris Lattner
73ec2cb0f5
Split register class "Methods" into MethodProtos and MethodBodies
...
llvm-svn: 22928
2005-08-19 19:12:51 +00:00
Chris Lattner
74f60c306d
Refactor to use Target.getRegisterClasses consistently, which provides
...
anonymous regclass definition renaming.
Change the generated code to emit register classes as properly namespace
qualified entities like everything else.
expose the actual class definition as an object, though this isn't quite
usable yet.
llvm-svn: 22920
2005-08-19 18:47:59 +00:00
Chris Lattner
d02bd5bb05
Emit real operand info for instructions. This currently works but is bad
...
in one way: the generated tables require dynamic initialization for the
register classes. This will be fixed in a future patch.
llvm-svn: 22919
2005-08-19 18:46:26 +00:00
Chris Lattner
418d8cfcfe
Read the namespace field from register classes
...
llvm-svn: 22918
2005-08-19 18:45:20 +00:00
Chris Lattner
f9b2edb91f
add a setName method to record
...
llvm-svn: 22912
2005-08-19 17:58:49 +00:00
Chris Lattner
ac284259ac
Add a setName method to Record.
...
llvm-svn: 22911
2005-08-19 17:58:11 +00:00
Chris Lattner
220d00109b
For now, just emit empty operand info structures.
...
llvm-svn: 22910
2005-08-19 16:57:28 +00:00
Chris Lattner
0899614152
Fix a problem jeffc noticed
...
llvm-svn: 22903
2005-08-19 06:16:04 +00:00
Chris Lattner
04a5ae3f71
The code emitter generator only supports targets with 32-bit instruction
...
words. There is no way for one of these targets to have a > 32-bit immediate!
llvm-svn: 22897
2005-08-19 01:04:33 +00:00
Chris Lattner
511ee687e5
now that all of the targets are clean w.r.t. the number of operands for each
...
instruction defined, actually emit this to the InstrInfoDescriptor, which
allows an assert in the machineinstrbuilder to do some checking for us,
and is required by the dag->dag emitter
llvm-svn: 22895
2005-08-19 00:59:49 +00:00
Chris Lattner
17727bad02
Figure out how many operands each instruction has, keep track of whether
...
or not it's variable.
llvm-svn: 22885
2005-08-18 23:38:41 +00:00
Chris Lattner
b015303c5e
revert this change, which causes breakage, temporarily
...
llvm-svn: 22880
2005-08-18 22:12:31 +00:00
Chris Lattner
99df668f48
When emitting implicit use/def lists, only emit each unique list once. Though
...
LLVM is able to merge identical static const globals, GCC isn't, and this caused
some bloat in the generated data. This has a marginal effect on PPC, shrinking
the implicit sets from 10->4, but shrinks X86 from 179 to 23, a much bigger
reduction.
This should speed up the register allocator as well by reducing the dcache
footprint for this static data.
llvm-svn: 22879
2005-08-18 21:36:47 +00:00
Chris Lattner
6f52a04fc7
Fill in the numOperands field of the TargetInstrDescriptor struct from the
...
.td file.
llvm-svn: 22873
2005-08-18 19:45:37 +00:00
Jeff Cohen
5f4ef3c5a8
Eliminate all remaining tabs and trailing spaces.
...
llvm-svn: 22523
2005-07-27 06:12:32 +00:00
Chris Lattner
3a6a4d3707
Fix PR595: These error messages should not be looking at CGI.Name, they
...
should be looking at CGI.TheDef->getName().
llvm-svn: 22445
2005-07-15 22:43:04 +00:00
Nate Begeman
4f229d5197
Add support for a TODO; instructions in .td files can now have arguments
...
printed as part of the opcode. This allows something like
cmp${cc}ss in the x86 backed to be printed as cmpltss, cmpless, etc.
depending on what the value of $cc is.
llvm-svn: 22439
2005-07-14 22:50:30 +00:00
Jeff Cohen
88e7b7288a
Eliminate tabs and trailing spaces
...
llvm-svn: 21441
2005-04-22 04:13:13 +00:00
Misha Brukman
650ba8eb56
Remove trailing whitespace
...
llvm-svn: 21428
2005-04-22 00:00:37 +00:00
Chris Lattner
14db4a2895
ignore generated files
...
llvm-svn: 21362
2005-04-19 15:34:36 +00:00
Chris Lattner
b17483028f
fix bogus warning
...
llvm-svn: 21361
2005-04-19 15:32:30 +00:00
Chris Lattner
ef94374a1c
Major change to tblgen: instead of resolving values every time a class is
...
finished up, only resolve fully when the def is defined. This allows things
to be changed and all uses to be propagated through. This implements
TableGen/LazyChange.td and fixes TemplateArgRename.td in the process.
None of the .td files used in LLVM backends are changed at all by this
patch.
llvm-svn: 21344
2005-04-19 03:36:21 +00:00
Chris Lattner
3ff0e11294
implementing shifting of literal integers
...
llvm-svn: 21336
2005-04-19 01:17:35 +00:00
Chris Lattner
101fc501d0
Add initial lexer and parser support for shifting values. Every use of this
...
will lead to it being rejected though.
llvm-svn: 21335
2005-04-19 01:11:03 +00:00
Chris Lattner
97cf8fd4a9
Minor fix.
...
llvm-svn: 19761
2005-01-22 20:59:38 +00:00
Chris Lattner
59a7f5c2f3
This is the final big of factoring. This shares cases in suboperand
...
differences, which means that identical instructions (after stripping off
the first literal string) do not run any different code at all. On the X86,
this turns this code:
switch (MI->getOpcode()) {
case X86::ADC32mi: printOperand(MI, 4, MVT::i32); break;
case X86::ADC32mi8: printOperand(MI, 4, MVT::i8); break;
case X86::ADC32mr: printOperand(MI, 4, MVT::i32); break;
case X86::ADD32mi: printOperand(MI, 4, MVT::i32); break;
case X86::ADD32mi8: printOperand(MI, 4, MVT::i8); break;
case X86::ADD32mr: printOperand(MI, 4, MVT::i32); break;
case X86::AND32mi: printOperand(MI, 4, MVT::i32); break;
case X86::AND32mi8: printOperand(MI, 4, MVT::i8); break;
case X86::AND32mr: printOperand(MI, 4, MVT::i32); break;
case X86::CMP32mi: printOperand(MI, 4, MVT::i32); break;
case X86::CMP32mr: printOperand(MI, 4, MVT::i32); break;
case X86::MOV32mi: printOperand(MI, 4, MVT::i32); break;
case X86::MOV32mr: printOperand(MI, 4, MVT::i32); break;
case X86::OR32mi: printOperand(MI, 4, MVT::i32); break;
case X86::OR32mi8: printOperand(MI, 4, MVT::i8); break;
case X86::OR32mr: printOperand(MI, 4, MVT::i32); break;
case X86::ROL32mi: printOperand(MI, 4, MVT::i8); break;
case X86::ROR32mi: printOperand(MI, 4, MVT::i8); break;
case X86::SAR32mi: printOperand(MI, 4, MVT::i8); break;
case X86::SBB32mi: printOperand(MI, 4, MVT::i32); break;
case X86::SBB32mi8: printOperand(MI, 4, MVT::i8); break;
case X86::SBB32mr: printOperand(MI, 4, MVT::i32); break;
case X86::SHL32mi: printOperand(MI, 4, MVT::i8); break;
case X86::SHLD32mrCL: printOperand(MI, 4, MVT::i32); break;
case X86::SHR32mi: printOperand(MI, 4, MVT::i8); break;
case X86::SHRD32mrCL: printOperand(MI, 4, MVT::i32); break;
case X86::SUB32mi: printOperand(MI, 4, MVT::i32); break;
case X86::SUB32mi8: printOperand(MI, 4, MVT::i8); break;
case X86::SUB32mr: printOperand(MI, 4, MVT::i32); break;
case X86::TEST32mi: printOperand(MI, 4, MVT::i32); break;
case X86::TEST32mr: printOperand(MI, 4, MVT::i32); break;
case X86::TEST8mi: printOperand(MI, 4, MVT::i8); break;
case X86::XCHG32mr: printOperand(MI, 4, MVT::i32); break;
case X86::XOR32mi: printOperand(MI, 4, MVT::i32); break;
case X86::XOR32mi8: printOperand(MI, 4, MVT::i8); break;
case X86::XOR32mr: printOperand(MI, 4, MVT::i32); break;
}
into this:
switch (MI->getOpcode()) {
case X86::ADC32mi:
case X86::ADC32mr:
case X86::ADD32mi:
case X86::ADD32mr:
case X86::AND32mi:
case X86::AND32mr:
case X86::CMP32mi:
case X86::CMP32mr:
case X86::MOV32mi:
case X86::MOV32mr:
case X86::OR32mi:
case X86::OR32mr:
case X86::SBB32mi:
case X86::SBB32mr:
case X86::SHLD32mrCL:
case X86::SHRD32mrCL:
case X86::SUB32mi:
case X86::SUB32mr:
case X86::TEST32mi:
case X86::TEST32mr:
case X86::XCHG32mr:
case X86::XOR32mi:
case X86::XOR32mr: printOperand(MI, 4, MVT::i32); break;
case X86::ADC32mi8:
case X86::ADD32mi8:
case X86::AND32mi8:
case X86::OR32mi8:
case X86::ROL32mi:
case X86::ROR32mi:
case X86::SAR32mi:
case X86::SBB32mi8:
case X86::SHL32mi:
case X86::SHR32mi:
case X86::SUB32mi8:
case X86::TEST8mi:
case X86::XOR32mi8: printOperand(MI, 4, MVT::i8); break;
}
After this, the generated asmwriters look pretty much as though they were
generated by hand. This shrinks the X86 asmwriter.inc files from 55101->39669
and 55429->39551 bytes each, and PPC from 16766->12859 bytes.
llvm-svn: 19760
2005-01-22 20:31:17 +00:00
Chris Lattner
92275bb6bb
Implement *even more* factoring. In particular, if all of the instruction
...
strings starts out with a constant string, we emit the string first, using
a table lookup (instead of a switch statement).
Because this is usually the opcode portion of the asm string, the differences
between the instructions have now been greatly reduced. This allows many
more case statements to be grouped together.
This patch also allows instruction cases to be grouped together when the
instruction patterns are exactly identical (common after the opcode string
has been ripped off), and when the differing operand is a MachineInstr
operand that needs to be formatted.
The end result of this is a mean and lean generated AsmPrinter!
llvm-svn: 19759
2005-01-22 19:22:23 +00:00
Chris Lattner
945e8655dd
Refactor code for numbering instructions into CodeGenTarget.
...
llvm-svn: 19758
2005-01-22 18:58:51 +00:00
Jeff Cohen
da636b3783
Fix VC++ compilation error
...
llvm-svn: 19757
2005-01-22 18:50:10 +00:00
Chris Lattner
9ceb7c8f23
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
llvm-svn: 19755
2005-01-22 18:38:13 +00:00
Chris Lattner
b6f5d9a82a
Fix the ::: problem
...
llvm-svn: 19754
2005-01-22 18:18:59 +00:00
Chris Lattner
3baf682110
Minor refactoring, no functionality change.
...
llvm-svn: 19753
2005-01-22 17:40:38 +00:00
Chris Lattner
0c23ba5c0f
Seperate asmstring parsing from emission. This allows the code to be simpler
...
and more understandable. It also allows us to do simple things like fold
consequtive literal strings together. For example, instead of emitting this
for the X86 backend:
O << "adc" << "l" << " ";
we now generate this:
O << "adcl ";
*whoa* :)
This shrinks the X86 asmwriters from 62729->58267 and 65176->58644 bytes
for the intel/att asm writers respectively.
llvm-svn: 19749
2005-01-22 17:32:42 +00:00
Andrew Lenharth
67e2e21353
make double-dollar properly escape asmstrings
...
llvm-svn: 19740
2005-01-22 00:35:22 +00:00
Chris Lattner
733c82bfbf
Expose isConvertibleToThreeAddress and isCommutable bits to the code generator.
...
llvm-svn: 19243
2005-01-02 02:29:04 +00:00
Reid Spencer
1c48c2deee
For PR387:
...
Make this compile without warning when -Woverloaded-virtual is used.
llvm-svn: 18588
2004-12-06 23:42:37 +00:00
Reid Spencer
b2d0fa0823
Fix usage of changed function prototype
...
llvm-svn: 17798
2004-11-14 22:30:54 +00:00
Chris Lattner
429aaa5855
Quiet VC++ warnings
...
llvm-svn: 17484
2004-11-05 04:50:59 +00:00
Reid Spencer
f88808ae43
Internalize variable names to prevent recursive assignment. Cleanup docs.
...
llvm-svn: 17359
2004-10-30 09:19:36 +00:00
Reid Spencer
57cbe39d1e
Change Library Names Not To Conflict With Others When Installed
...
llvm-svn: 17286
2004-10-27 23:18:45 +00:00
Chris Lattner
7dfc2d29ac
Convert 'struct' to 'class' in various places to adhere to the coding standards
...
and work better with VC++. Patch contributed by Morten Ofstad!
llvm-svn: 17281
2004-10-27 16:14:51 +00:00
Chris Lattner
87a1061559
Make VC happier, patch contributed by Morten Ofstad
...
llvm-svn: 17179
2004-10-23 04:58:50 +00:00
Reid Spencer
5fd95ce095
We're not doing automake any more
...
llvm-svn: 17168
2004-10-22 21:02:23 +00:00
Reid Spencer
c1c320c335
We won't use automake
...
llvm-svn: 17155
2004-10-22 03:35:04 +00:00
Reid Spencer
6a11a75f31
Initial automake generated Makefile template
...
llvm-svn: 17136
2004-10-18 23:55:41 +00:00
Misha Brukman
8393c15b28
* Factor out (into new fn) a loop emitting operand shifts into the instruction
...
* Reverse instruction bit components for a LittleEndian-style encoding
* Fix some comments and spacing
llvm-svn: 16975
2004-10-14 05:53:01 +00:00
Misha Brukman
243ded5e1a
* Add option to read isLittleEndianEncoding for InstrInfo classes
...
* Doxygen-ify some function comments
llvm-svn: 16974
2004-10-14 05:50:43 +00:00
Chris Lattner
ac1a547a38
Patch to make VS happier, thanks to Morten Ofstad for pointing this out.
...
llvm-svn: 16956
2004-10-13 15:25:46 +00:00
Reid Spencer
26bfe011f8
Updates for changes in Makefile rules.
...
llvm-svn: 16951
2004-10-13 11:48:50 +00:00
Chris Lattner
5499551206
Don't emit the method into the llvm namespace, let the #includer decide where it goes
...
llvm-svn: 16934
2004-10-12 16:21:18 +00:00
Reid Spencer
b84cbf2725
Initial version of automake Makefile.am file.
...
llvm-svn: 16885
2004-10-10 20:43:57 +00:00
Misha Brukman
41f9f29996
Properly `quote' names, and don't forget to add the ending quote!
...
llvm-svn: 16838
2004-10-08 14:59:05 +00:00
Chris Lattner
72770f5877
Correctly parse variant notation
...
llvm-svn: 16637
2004-10-03 20:19:02 +00:00
Chris Lattner
91c538f2a1
Add initial support for variants. This just parses the new format, no
...
functionality is added
llvm-svn: 16636
2004-10-03 19:34:31 +00:00
Misha Brukman
46cee7da73
#include DataTypes.h to compile on MinGW, patch by Henrik Bach.
...
llvm-svn: 16616
2004-09-30 18:27:39 +00:00
Nate Begeman
996ddbc98e
Add support for the isLoad and isStore flags, needed by the instruction scheduler
...
llvm-svn: 16554
2004-09-28 21:01:45 +00:00
Chris Lattner
9b0dfa3c0d
Turn the hasDelaySlot flag into the M_DELAY_SLOT_FLAG
...
llvm-svn: 16553
2004-09-28 18:38:01 +00:00
Chris Lattner
e8e81a2941
Revamp the Register class, and allow the use of the RegisterGroup class to
...
specify aliases directly in register definitions.
Patch contributed by Jason Eckhardt!
llvm-svn: 16330
2004-09-14 04:17:02 +00:00
Reid Spencer
0ded30aec4
Clean up some "clean:" targets so they use $(VERB) and don't print anything
...
by default, like every other "clean" target in LLVM.
llvm-svn: 16161
2004-09-03 23:19:53 +00:00
Reid Spencer
c8ec13388b
Make tblgen's exception handling a little more robust by printing the
...
program name and also catching ...
llvm-svn: 16160
2004-09-03 23:17:54 +00:00
Reid Spencer
7c16caa336
Changes For Bug 352
...
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137
2004-09-01 22:55:40 +00:00
Reid Spencer
811c3c0edb
Link with LLVMsystem.a for operating system independence.
...
llvm-svn: 16094
2004-08-29 19:31:19 +00:00
Reid Spencer
9b129bea2e
RemoveFileOnErrorSignal is now in the llvm::sys namespace. Adjust
...
accordingly.
llvm-svn: 16093
2004-08-29 19:30:41 +00:00
Chris Lattner
8eab62ee0d
Alignment is now in bits.
...
llvm-svn: 15976
2004-08-21 20:15:25 +00:00
Chris Lattner
beadefde19
Make alignment be in bits, just like size is
...
llvm-svn: 15969
2004-08-21 20:00:36 +00:00
Chris Lattner
a6d34d9e19
Infer the spillsize/alignment of a register based on the register classes
...
it is embedded into.
llvm-svn: 15966
2004-08-21 19:42:03 +00:00
Chris Lattner
d3244d9cec
Support "Methods" in register classes in CodgeGenRegisterClass
...
llvm-svn: 15965
2004-08-21 19:21:21 +00:00
Chris Lattner
2a86fab933
Start parsing register classes into a more structured form
...
llvm-svn: 15961
2004-08-21 04:05:00 +00:00
Chris Lattner
e34ae99942
Read in declared reg sizes
...
llvm-svn: 15960
2004-08-21 02:24:57 +00:00
Chris Lattner
c9d99efdd3
Do not #include files into the llvm namespace
...
llvm-svn: 15849
2004-08-17 03:08:28 +00:00
Chris Lattner
8af61ddb96
Use CodeGenRegister class to make reading in of register information more
...
systematic.
llvm-svn: 15805
2004-08-16 01:10:21 +00:00
Chris Lattner
b7b70480e1
Add initial support for register and register class representation.
...
Obviously this is not done.
llvm-svn: 15804
2004-08-16 01:09:52 +00:00
Chris Lattner
0bbf7005f5
Remove awareness of isDummyClass
...
llvm-svn: 15789
2004-08-15 23:04:13 +00:00
Chris Lattner
6ffa501d9f
Make the AsmWriter a first-class tblgen object. Allow targets to specify
...
name of the generated asmwriter class, and the name of the format string.
llvm-svn: 15747
2004-08-14 22:50:53 +00:00
Chris Lattner
baa2ecb798
Fix minor bug in previous checkin
...
llvm-svn: 15649
2004-08-11 04:08:36 +00:00
Chris Lattner
c1904dd38f
change how we invoke the printer. Instead of passing in the MO directly,
...
pass in the MI, operand number, and the type of the operand.
llvm-svn: 15645
2004-08-11 02:23:23 +00:00
Chris Lattner
3bc477a237
Start parsing more information from the Operand information
...
llvm-svn: 15644
2004-08-11 02:22:39 +00:00
Chris Lattner
101f3fea82
Remove special case hacks
...
llvm-svn: 15643
2004-08-11 01:53:58 +00:00
Misha Brukman
422d0fadf1
Deleted commented-out code as we now get namespace directly, add comments
...
llvm-svn: 15627
2004-08-10 20:54:58 +00:00
Misha Brukman
59978333a3
Use the target name instead of hard-coding SparcV9.
...
llvm-svn: 15616
2004-08-10 18:31:01 +00:00
Chris Lattner
79db057a3b
This was a good idea, but until this does not break the build of
...
lib/Target/Sparc, we should not use it.
llvm-svn: 15603
2004-08-10 15:05:18 +00:00
Misha Brukman
920ae9524d
Use the current target name instead of a ClassPrefix.
...
llvm-svn: 15585
2004-08-09 19:10:43 +00:00
Misha Brukman
18d27dc342
* Use Classname and ClassPrefix instead of hard-coded V9 values
...
* Simplify code and shorten lines by not recomputing values
llvm-svn: 15582
2004-08-09 17:47:45 +00:00
Misha Brukman
8e5492e350
* Added documentation in the file header
...
* Shorten assert() text to make it fit within 80 cols
llvm-svn: 15508
2004-08-04 22:07:54 +00:00
Chris Lattner
f40e4ebf19
Be picky
...
llvm-svn: 15400
2004-08-01 08:55:34 +00:00
Chris Lattner
29d8ac77e1
Instructions no longer need to have names.
...
llvm-svn: 15399
2004-08-01 08:38:17 +00:00
Chris Lattner
65512a0c49
Add support for asm printing machine instructions that have operands.
...
llvm-svn: 15391
2004-08-01 07:43:02 +00:00
Chris Lattner
5572682faa
Parse the operand list of the instruction. We currently support register and immediate operands.
...
llvm-svn: 15390
2004-08-01 07:42:39 +00:00
Chris Lattner
1c4ae85035
Initial cut at an asm writer emitter. So far, this only handles emission of
...
instructions, and only instructions that take no operands at that!
llvm-svn: 15386
2004-08-01 05:59:33 +00:00
Chris Lattner
c860ecafe1
Add, and start using, the CodeGenInstruction class. This class represents
...
an instance of the Instruction tablegen class.
llvm-svn: 15385
2004-08-01 05:04:00 +00:00
Chris Lattner
fce9603387
Rename CodeGenWrappers.(cpp|h) -> CodeGenTarget.(cpp|h)
...
llvm-svn: 15382
2004-08-01 04:04:35 +00:00
Chris Lattner
6847866400
Finegrainify namespacification
...
llvm-svn: 15381
2004-08-01 03:55:39 +00:00
Chris Lattner
fd4558862c
Support new flag
...
llvm-svn: 15355
2004-07-31 02:07:26 +00:00
Chris Lattner
577fc3f576
Implement test/Regression/TableGen/ListSlices.td
...
llvm-svn: 15249
2004-07-27 01:01:21 +00:00
Chris Lattner
8bf9e06ddd
Add initial support for list slices. This currently allows you to do stuff
...
like this:
def B {
list<int> X = [10, 20, 30, 4, 1, 1231, 20] [2-4,2,2,0-6];
}
... which isn't particularly useful, but more is to come.
llvm-svn: 15247
2004-07-26 23:21:34 +00:00
Chris Lattner
87bf918bc0
Remove some abandoned code that was never finished. If needed in the future
...
it can be ressurected from CVS.
llvm-svn: 15113
2004-07-22 21:32:38 +00:00
Chris Lattner
89ae115aa5
Passing integer 0 in for a pointer value doesn't work on IA64. Fix this
...
by using a new macro.
llvm-svn: 14863
2004-07-16 00:02:21 +00:00
Chris Lattner
8e30a4dfc5
Make tblgen not try to be smart. This is better handled in makefiles if
...
at all. Patch contributed by Vladimir Prus!
llvm-svn: 14784
2004-07-13 06:11:46 +00:00
Misha Brukman
6752fb58b6
Handle shifts >= 32 bits.
...
llvm-svn: 14291
2004-06-21 18:01:47 +00:00
Chris Lattner
bcdadf3765
Move the IntrinsicLowering header into the CodeGen directory, as per PR346
...
llvm-svn: 14266
2004-06-20 07:49:54 +00:00
Misha Brukman
b8561ebf21
Make header comment fit within 80 cols.
...
llvm-svn: 14198
2004-06-17 15:49:36 +00:00
Misha Brukman
aff10d0461
Emit a more sensible error message if no subclasses of Target are defined.
...
Patch contributed by Vladimir Prus.
llvm-svn: 14010
2004-06-04 14:59:42 +00:00
Chris Lattner
1f4e545a89
Add support for dos style files.
...
llvm-svn: 13836
2004-05-27 17:44:18 +00:00
Chris Lattner
278f5152d3
Header file moved
...
llvm-svn: 13813
2004-05-27 05:41:36 +00:00
Misha Brukman
b4f20ea496
The "best" of both worlds: readable C++ comments and valid HTML For doxygen.
...
llvm-svn: 12964
2004-04-15 15:30:15 +00:00
Jakub Staszak
68a9025f50
Tablegen backend for really simple instruction selector
...
llvm-svn: 12713
2004-04-06 19:31:31 +00:00
Jakub Staszak
f9bfc7f927
add tablgen backend for really simple instruction selector
...
llvm-svn: 12712
2004-04-06 19:30:56 +00:00
Chris Lattner
36326de312
Do not remove an active template argument even if the superclass had one of the
...
same name
llvm-svn: 11950
2004-02-28 17:41:48 +00:00
Chris Lattner
994f2d1406
Ignore X = X assignments that was causing Alkis's rewrite of X86.td to crash
...
tblgen.
llvm-svn: 11948
2004-02-28 17:31:28 +00:00
Chris Lattner
d959ab9208
Assert instead of going into an infinite loop!
...
llvm-svn: 11946
2004-02-28 16:31:53 +00:00
Chris Lattner
564251ed5e
exit(1) instead of abort()'ing on error
...
llvm-svn: 11380
2004-02-13 16:37:43 +00:00
Chris Lattner
a80e9f0a19
Fix buggy error message problem
...
llvm-svn: 11379
2004-02-13 16:33:56 +00:00
Misha Brukman
e10e2b12dd
Ooops, top-level C++-comments aren't recognized by flex.
...
llvm-svn: 11337
2004-02-12 00:03:08 +00:00
Misha Brukman
a01b30bbaa
* Convert C comments to C++ style (why are some one way, some another?!)
...
* Delete extra space, extra blank comment lines
* Convert function comments to doxygen
llvm-svn: 11336
2004-02-12 00:00:46 +00:00
Chris Lattner
e6540165b3
Print the record NAME not the record ADDRESS
...
llvm-svn: 11144
2004-02-06 03:19:17 +00:00
Brian Gaeke
666aaf715f
Fix a couple of places I noticed where "X86" was hard-coded.
...
llvm-svn: 10974
2004-01-24 09:23:46 +00:00
Chris Lattner
95c13c92ff
Stop laughing Misha
...
llvm-svn: 10393
2003-12-11 00:58:34 +00:00
Brian Gaeke
960707c335
Put all LLVM code into the llvm namespace, as per bug 109.
...
llvm-svn: 9903
2003-11-11 22:41:34 +00:00
John Criswell
9583cfafc5
Added LLVM copyright notice.
...
llvm-svn: 9324
2003-10-21 15:29:18 +00:00
John Criswell
abe5cdcf21
Added LLVM copyright to Makefiles.
...
llvm-svn: 9314
2003-10-20 22:29:16 +00:00
John Criswell
d3032037f1
Added LLVM copyright header.
...
llvm-svn: 9305
2003-10-20 20:20:30 +00:00
John Criswell
38a47ab007
Removed the .PRECIOUS of Lex and Yacc output files.
...
They are already marked precious in llvm/Makefile.rules, and removing
this line seems to fix the Makefile so that the Yacc output is placed
into the object tree and not the source tree.
llvm-svn: 9179
2003-10-16 20:38:16 +00:00
Chris Lattner
44d2c3514a
Regularize header file comments
...
llvm-svn: 9071
2003-10-13 03:32:08 +00:00
Brian Gaeke
969378468e
This seems to work around some unobvious bug in gcc on sparc which was
...
causing the build of lib/Target/X86 to fail.
llvm-svn: 9042
2003-10-10 21:55:29 +00:00
Alkis Evlogimenos
5f1f337d95
Change MRegisterDesc::AliasSet, TargetInstrDescriptor::ImplicitDefs
...
and TargetInstrDescriptor::ImplicitUses to always point to a null
terminated array and never be null. So there is no need to check for
pointer validity when iterating over those sets. Code that looked
like:
if (const unsigned* AS = TID.ImplicitDefs) {
for (int i = 0; AS[i]; ++i) {
// use AS[i]
}
}
was changed to:
for (const unsigned* AS = TID.ImplicitDefs; *AS; ++AS) {
// use *AS
}
llvm-svn: 8960
2003-10-08 05:20:08 +00:00
Chris Lattner
f5bd1b7a8e
Move support/tools/* back into utils
...
llvm-svn: 8875
2003-10-05 19:27:59 +00:00