Commit Graph

1884 Commits

Author SHA1 Message Date
Daniel Dunbar
53a7f16dcc 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").


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78099 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-04 20:36:45 +00:00
Anton Korobeynikov
4ab15535e7 Add 'Indirect' LocInfo class and use to pass __m128 on win64. Also minore fixes here and there (mostly __m64).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77964 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-03 08:13:56 +00:00
Daniel Dunbar
cdcb388a58 Change MCOperand to use Create style instead of Make style for constructing
operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77837 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-02 00:09:22 +00:00
David Greene
bef8768bd0 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77740 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-31 21:57:10 +00:00
Daniel Dunbar
a027d222e1 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77657 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-31 02:32:59 +00:00
Daniel Dunbar
7212f80966 Remove unintended changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77616 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-30 18:29:44 +00:00
Daniel Dunbar
bd17a295c1 Remove itohexstr, which only had one user.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77613 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-30 18:18:54 +00:00
Daniel Dunbar
fe09b2098a Twines: Don't allow implicit conversion from integers, this is too tricky.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77605 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-30 17:37:43 +00:00
Dan Gohman
2395f01198 Minor whitespace tidiness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77564 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-30 01:33:17 +00:00
Owen Anderson
debcb01b0f Move types back to the 2.5 API.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77516 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29 22:17:13 +00:00
Chris Lattner
cb778a8634 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77504 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29 21:10:12 +00:00
Chris Lattner
a938ac6223 make ptr_rc derive from a new PointerLikeRegClass tblgen class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77503 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29 20:43:05 +00:00
David Greene
c8d0605036 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77499 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29 20:10:24 +00:00
Bob Wilson
09b1366f3f 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77467 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29 16:35:59 +00:00
Evan Cheng
636bef1f35 Revert AsmWriterEmitter.cpp to 74742. The recent changes are causing serious compile time regression.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77431 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29 05:06:11 +00:00
Daniel Dunbar
0e2771f4c4 Match X86 register names to number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77404 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29 00:02:19 +00:00
Owen Anderson
e922c02019 Get rid of the Pass+Context magic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-22 00:24:57 +00:00
David Greene
8f6353fb2f Make a bunch of changes suggested by Chris and others to improve
efficiency.  Fix a few formatting bugs along the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76601 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-21 18:16:24 +00:00
David Greene
76081c4ef7 Re-apply 75490, 75806 and 76177 with fixes and tests. Efficiency comes
next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76486 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-20 22:02:59 +00:00
Evan Cheng
ba8dc03935 Restore AsmWriterEmitter.cpp back to 74742. The recent changes broke Thumb.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76398 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-20 06:10:07 +00:00
Evan Cheng
3837b64f41 Revert 76177 for now. It's messing up ARM asm printing. Also this significant debate about its efficiency.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76279 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18 01:43:53 +00:00
Daniel Dunbar
22be5225ff tblgen/AsmMatcher: Emit simple matcher for register names.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76212 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-17 18:51:11 +00:00
David Greene
ab9238e876 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76177 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-17 14:24:46 +00:00
David Greene
fe7b16fe65 Get rid of postInstructionAction and call EmitComments directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75806 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15 18:24:03 +00:00
Dan Gohman
a1bdcedc38 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75801 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15 17:29:42 +00:00
Duncan Sands
a4b0486684 Remove the v3i32 and v3f32 value types: they are not
native for any supported targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75785 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15 15:28:52 +00:00
Bob Wilson
ab5a5a6a76 Revert 75308.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75565 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14 00:16:03 +00:00
David Greene
014700c1a8 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75490 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13 20:25:48 +00:00
Daniel Dunbar
7cab893331 Update CMakeLists.txt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75389 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11 21:53:14 +00:00
Daniel Dunbar
d51ffcf303 Stub out assembly matcher (.s -> MCInst) tblgen backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75378 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11 19:39:44 +00:00
Bob Wilson
28eff96ee6 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75308 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10 23:05:09 +00:00
Bob Wilson
bbf1caa46b Refactor TableGen's llvm::getName to share code with llvm::getEnumName,
since names are the same for almost all the types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75302 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10 22:25:24 +00:00
Owen Anderson
d1474d09cb Thread LLVMContext through MVT and related parts of SDISel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75153 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-09 17:57:24 +00:00
Torok Edwin
804e0fea40 Convert more abort() calls to llvm_report_error().
Also remove trailing semicolon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75027 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-08 19:04:27 +00:00
Chris Lattner
81cb8caa3e Add a new little "FileCheck" utility for regression testing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75022 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-08 18:44:05 +00:00
Mikhail Glushenkov
8fe4447a0f Add an 'init' option property.
Makes possible to provide default values for options defined in plugins (same as
cl::init).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74905 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-07 16:08:41 +00:00
Mikhail Glushenkov
cbc360d567 Refactoring.
Make isList(), isSwitch() and isParameter() member functions of
OptionDescription.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74904 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-07 16:08:11 +00:00
Mikhail Glushenkov
b797000820 Comment fix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74903 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-07 16:07:36 +00:00
Devang Patel
bee9e35ba2 Add new ValueType for metadata.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74882 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-06 23:44:32 +00:00
Daniel Dunbar
1a55180238 Replace std::iostreams with raw_ostream in TableGen.
- Sorry, I can't help myself.

 - No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74742 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-03 00:10:29 +00:00
Chris Lattner
0fd38069cb 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!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74584 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-01 04:13:31 +00:00
Daniel Dunbar
3fb7683bec 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): ...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74489 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-30 00:49:23 +00:00
David Greene
2bfa06d8cd Remove commented code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74471 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-29 22:55:52 +00:00
David Greene
2c0266202d Implement !cast<string>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74444 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-29 20:05:29 +00:00
David Greene
67acdf2977 Improve TableGen error reporting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74443 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-29 19:59:52 +00:00
David Greene
9b9838dbd4 Add more vector ValueTypes for AVX and other extended vector instruction
sets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74427 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-29 16:47:10 +00:00
Evan Cheng
c0ad80fd9e Fix a CodeGenDAGPatterns bug. Check if top level predicates match when it's looking for duplicates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74276 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-26 05:59:16 +00:00
Mikhail Glushenkov
7bba2333fb Better error message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74193 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-25 18:21:34 +00:00
Mikhail Glushenkov
d80d8690af 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74000 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-23 20:46:48 +00:00
Mikhail Glushenkov
0cbb59089b A little bit nicer formatting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73998 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-23 20:45:31 +00:00
Mikhail Glushenkov
7c8deb3818 Typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73997 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-23 20:45:07 +00:00
Chris Lattner
14ee48a5ba rename SourceMgr::PrintError to PrintMessage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73861 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-21 21:22:11 +00:00
Chris Lattner
4226bb02fb simplify some error recovery stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73856 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-21 19:22:49 +00:00
Chris Lattner
d926e048c1 prune #include, fix warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73847 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-21 05:33:06 +00:00
Chris Lattner
7ee5d5f97b move include searching logic from TGLexer to SourceMgr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73845 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-21 05:06:04 +00:00
Chris Lattner
8070ea3f06 Rename TGSourceMgr -> SourceMgr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73844 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-21 03:41:50 +00:00
Chris Lattner
1e3a8a4924 rename TGLoc -> SMLoc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73843 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-21 03:39:35 +00:00
Chris Lattner
099e198ae8 move TGSourceMgr class out of TableGen into libsupport.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73842 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-21 03:36:54 +00:00
Chris Lattner
5b842c3690 allow clients of the asmprinter to opt-out of the boilerplate with a #define.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73798 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-19 23:57:53 +00:00
Nick Lewycky
fc4c255304 Fix grammaro, and bad indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73602 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 04:23:52 +00:00
Douglas Gregor
956244b337 Add output of the SFINAE bit for Clang's diagnostics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73331 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-14 07:24:49 +00:00
Bill Wendling
ee1f6b0fc5 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!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73139 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-09 18:49:42 +00:00
David Greene
ffc0ab6037 Revert 73074 and 73099 because Windows doesn't have POSIX
regular expressions.  We will add an OpenBSD implementation
and re-apply ASAP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73138 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-09 18:31:17 +00:00
David Greene
0d973999f3 Add a !patsubst operator. Use on string types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73099 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08 23:05:37 +00:00
David Greene
e1b469170b 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73078 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08 20:23:18 +00:00
David Greene
77c489dcae Make !if short-circuit when possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73076 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08 19:16:56 +00:00
David Greene
938c8ab0a0 Add a !regmatch operator to do pattern matching in TableGen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73074 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08 17:00:34 +00:00
Dale Johannesen
874ae251c3 Revert 72707 and 72709, for the moment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72712 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-02 03:12:52 +00:00
Dale Johannesen
4150d83abe 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72707 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-01 23:27:20 +00:00
Anton Korobeynikov
41a024385f Propagate CPU string out of SubtargetFeatures
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72335 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-23 19:50:50 +00:00
Oscar Fuentes
a2ac75d547 CMake: Use libpthread in tblgen when needed. Updated list of source
files for PIC16 target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72277 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22 20:55:15 +00:00
Dale Johannesen
edc8774a73 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).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72232 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21 22:25:49 +00:00
Nick Lewycky
c98a77d078 Fix warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71834 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-15 03:07:14 +00:00
Nick Lewycky
aa0b3df5a0 Add extra parenthesis around || statements to pacify compiler.
Also fix up some 80col violations while I'm there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71833 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-15 03:03:14 +00:00
David Greene
9bea7c85d7 Implement !if, analogous to $(if) in GNU make.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71815 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-14 23:26:46 +00:00
David Greene
5f9f9ba00b 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71805 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-14 22:38:31 +00:00
David Greene
beb31a51f6 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."))>;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71803 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-14 22:23:47 +00:00
David Greene
4afc509b7f 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>;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71801 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-14 21:54:42 +00:00
David Greene
e6c27de069 Implement !cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71794 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-14 21:22:49 +00:00
David Greene
d418c1b768 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71789 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-14 20:54:48 +00:00
David Greene
ccf85ded58 Fix PR4207.
If we're resolving a list element access and we're given a VarInit,
return a new VarListElementInit referencing the VarInit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71787 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-14 20:38:52 +00:00
Dale Johannesen
3b895cfac9 Slightly improve generated code in a degenerate case.
Should remove a warning from MSVC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71603 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-12 22:32:29 +00:00
Duncan Sands
777d2306b3 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71349 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-09 07:06:46 +00:00
Chris Lattner
c89146587a Change 'make install' to install tblgen, for better support of out-of-tree targets,
patch by Mikael Lepistö!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71226 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-08 17:32:47 +00:00
Argyrios Kyrtzidis
cd76240f3d Move the tablegen-produced DebugLoc handling into a AsmWriter::processDebugLoc function.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71156 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-07 13:55:51 +00:00
Mikhail Glushenkov
e031e4bcb9 A better error message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71068 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-06 04:54:23 +00:00
Mikhail Glushenkov
e89331b93d The 'forward_as' property did not use its second argument.
See PR4159 for details. Patch by Martin Nowack!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71054 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-06 01:41:19 +00:00
David Greene
065f259ff5 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70979 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-05 16:28:25 +00:00
Mikhail Glushenkov
f868156820 Fix incorrect code generation with ENV.
See PR4157 for details. Patch by Martin Nowack!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70973 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-05 12:34:34 +00:00
Mike Stump
fe095f39e7 Restore minor deletion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70892 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-04 18:40:41 +00:00
Argyrios Kyrtzidis
a26eae64dd 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.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70520 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30 23:22:31 +00:00
Jakob Stoklund Olesen
7afcc6aa27 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70511 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30 21:22:44 +00:00
Bob Wilson
440548dd1f 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70502 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30 18:26:19 +00:00
Bob Wilson
1d512df4a9 Remove unnecessary "class" keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70499 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30 17:46:20 +00:00
Bob Wilson
293b13350c Change forward declaration of MultiClass to use the "struct" keyword instead
of "class", so that it matches the subsequent definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70498 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30 17:35:11 +00:00
Bill Wendling
98a366d547 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70440 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29 23:29:43 +00:00
Bill Wendling
be8cc2a3de 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70343 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29 00:15:41 +00:00
Bob Wilson
32558650ae Fix trailing whitespace and 80-col. violations in recent TableGen changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70319 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-28 19:41:44 +00:00
Bill Wendling
c69d56f115 r70270 isn't ready yet. Back this out. Sorry for the noise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70275 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-28 01:04:53 +00:00
Bill Wendling
2e9d5f912a 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...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70270 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-28 00:21:31 +00:00
Nate Begeman
9008ca6b6b 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70225 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-27 18:41:29 +00:00
David Greene
d34a73b3b7 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69974 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-24 16:55:41 +00:00
Rafael Espindola
15684b2955 Revert 69952. Causes testsuite failures on linux x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69967 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-24 12:40:33 +00:00
Nate Begeman
b706d29f9c 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69952 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-24 03:42:54 +00:00
David Greene
e8cf21e8e3 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69921 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-23 21:25:15 +00:00
David Greene
5654613a01 Allow defm to inherit from multiple multiclasses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69832 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-22 22:17:51 +00:00
David Greene
c7cafcd815 Implement !nameconcat to concatenate strings and look up the resulting
name in the symbol table, returning an object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69822 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-22 20:18:10 +00:00
David Greene
de444af6bb Implement multiclass inheritance.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69810 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-22 16:42:54 +00:00
Mikhail Glushenkov
0941b0f655 Add some assertions.
Fixes segfaults in some corner cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69494 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-19 00:22:35 +00:00
Bob Wilson
1f595bb429 Use CallConvLower.h and TableGen descriptions of the calling conventions
for ARM.  Patch by Sandeep Patel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69371 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-17 19:07:39 +00:00
Bob Wilson
d305e707a6 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69316 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16 21:51:05 +00:00
Chris Lattner
bfc0104c76 prove diagnostic -> group mapping information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69270 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16 05:52:18 +00:00
Chris Lattner
9efac568f0 encode subgroups into the clang .inc file. -Wall now works!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69257 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16 03:16:12 +00:00
Chris Lattner
d0d3494b2f start producing subgroup info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69249 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16 00:53:25 +00:00
Chris Lattner
a0ed8ca233 make sure that empty diag groups get known by clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69235 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15 22:33:02 +00:00
Chris Lattner
2f8c1d5fbc implement support for writing out diagnostic group tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69219 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15 20:55:08 +00:00
Chris Lattner
9371c33611 use UppercaseString instead of EmitAllCaps
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69213 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15 20:16:12 +00:00
Chris Lattner
457cde4d45 use escape string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69212 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15 20:13:18 +00:00
Chris Lattner
ac9e7da69c rename -gen-clang-diags-options -> -gen-clang-diag-groups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69208 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15 20:02:32 +00:00
Chris Lattner
a71c494cd8 don't infer diag class from parenting relations, make it an explicit field
in the record.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69176 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15 16:55:46 +00:00
Chris Lattner
5b66c04f33 include the default mapping in the clang diagnostic .inc files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69173 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15 16:43:18 +00:00
Chris Lattner
f1624aa4dc minor cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69152 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15 06:26:49 +00:00
Dan Gohman
88c7af096b 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68986 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 21:06:25 +00:00
Dan Gohman
f8c7394781 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68961 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:38:05 +00:00
Dan Gohman
8a17870da4 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68957 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 15:24:11 +00:00
Owen Anderson
3ca15c989c Give register alias checking the hash table treatment too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68730 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-09 22:19:30 +00:00
Owen Anderson
7d770be047 Convert TargetRegisterInfo's super-register checking to use a pre-computed hash table just like subregister checking does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68669 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-09 03:50:16 +00:00
Chris Lattner
41c90738e9 "This adds a getName() method to TargetRegisterClass, just like in TargetRegisterInfo.
This makes debugging register classes a bit easier."

Patch by Jakob Stoklund Olesen!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68400 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-03 20:25:41 +00:00
Dan Gohman
8f9643f0f7 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68355 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-03 00:25:26 +00:00
Ted Kremenek
ef66abeaee Constify method to make VC++ happy. Patch by Brian Diekelman!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68222 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01 18:24:22 +00:00
Dan Gohman
4b6fce4c05 Tidy up some comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68112 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31 16:48:35 +00:00
Dan Gohman
e1ca7c4dd5 Add a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68111 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31 16:46:45 +00:00
Jim Grosbach
da4231f134 fix a few spelling errors and typos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67758 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-26 16:17:51 +00:00
Jim Grosbach
866cc6005a Use 'bool' for FoundRC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67750 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-26 14:45:34 +00:00
Jim Grosbach
54f302272c 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67714 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-25 23:28:33 +00:00
Ted Kremenek
13b9bf9022 Add sanity check in Clang TableGen backend to check if 'Component' is a string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67565 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-23 21:54:33 +00:00
Sebastian Redl
48fe63526e 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67347 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-19 23:26:52 +00:00
Ted Kremenek
7fae82f67a Fix regression in 'tblgen -gen-clang-diags-defs': Emit the diagnostic kind instead of "DIAGNOSTICCONTROLLED".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67305 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-19 17:18:09 +00:00
Nate Begeman
7cee81703d 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67286 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-19 05:21:56 +00:00
Ted Kremenek
0f9d510193 tblgen -gen-clang-diags-options: Output OptionTable entries in lexicographic
order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67244 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-18 21:36:46 +00:00
Ted Kremenek
3ac82fe490 'tblgen -gen-clang-diags-options' now outputs the OptionTable:
static const WarningOption OptionTable[] = {
    {"unused-macros", DIAGS(UnusedMacrosDiags)}
    ...
  };

This table is not yet properly sorted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67242 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-18 21:28:47 +00:00
Ted Kremenek
8b9d027701 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 };



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67239 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-18 21:16:16 +00:00
Chris Lattner
d4771828ca 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67232 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-18 20:36:45 +00:00
Douglas Gregor
41e04beed7 Add TGSourceMgr.cpp to CMake build, sort lines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67042 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-16 17:04:14 +00:00
Ted Kremenek
557f7f88ba 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).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66975 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 22:53:41 +00:00
Ted Kremenek
04a847e706 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66971 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 22:21:17 +00:00
Ted Kremenek
02475f1fd5 Further constify Record::isSubClassOf.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66970 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 22:20:10 +00:00
Chris Lattner
7f3b28a786 Fix escaping in asm string literals correctly by having tblgen unescape
them, then the asmprinter emitter reescape them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66958 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 21:33:17 +00:00
Chris Lattner
e023bb6936 add a horrible hack to fix the build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66957 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 21:23:43 +00:00
Chris Lattner
ea9f4df616 add support for a few simple escape characters in tblgen strings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66949 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 21:03:27 +00:00
Chris Lattner
a14b1ded69 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66898 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 16:25:21 +00:00
Chris Lattner
7b9ffe4a6d give each Record a location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66897 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 16:09:24 +00:00
Chris Lattner
1c8ae59dfd make "locations" a class instead of a typedef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66895 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 16:01:53 +00:00
Argyrios Kyrtzidis
1d876b70f2 Unbreak build, bring in std::string for GCC 4.3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66876 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 08:12:13 +00:00
Evan Cheng
79a5cef503 Unbreak build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66874 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 07:41:30 +00:00
Chris Lattner
aa739d26b1 split buffer management and diagnostic printing out of the tblgen
lexer into its own TGSourceMgr class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66873 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 07:05:43 +00:00
Chris Lattner
d7a50cf28c implement support for C-style string literal concatenation in td files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66663 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-11 17:08:13 +00:00
Chris Lattner
cc14d25dd9 Change various llvm utilities to use PrettyStackTraceProgram in
their main routines.  This makes the tools print their argc/argv
commands if they crash.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66248 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-06 05:34:10 +00:00
Mikhail Glushenkov
c52551dfa2 'append_cmd' should split its argument.
Makes '(append_cmd "-foo a b c")' work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65623 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-27 06:46:55 +00:00
Chris Lattner
13d5b71a95 these utils don't need exports.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65559 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-26 19:02:23 +00:00
Mon P Wang
0d52ff1f7b Added support to have TableGen provide information if an intrinsic (core
or target) can be overloaded or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65404 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24 23:17:49 +00:00
Bill Wendling
57f0db833d 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65379 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24 08:30:20 +00:00
Bill Wendling
5aa4977fba - 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65367 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24 02:35:30 +00:00
Bill Wendling
1bcf0f5e45 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65180 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-20 22:19:20 +00:00
Bill Wendling
4ed0c5fb07 Add an accessor method to DwarfWriter to tell of debugging info should be emitted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65092 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-20 00:44:43 +00:00
Bill Wendling
4dd82f6aaa 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65039 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-19 09:16:38 +00:00
Bill Wendling
249e1e4e27 Forgot to check that debug information is supported.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65034 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-19 08:06:12 +00:00
Bill Wendling
cb819f13d7 Put code that generates debug labels into TableGen so that it can be used by
everyone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64978 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-18 23:12:06 +00:00
Dan Gohman
38deef9ce5 Add explicit keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64915 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-18 16:37:45 +00:00
Cedric Venet
aff9c270de 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64554 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-14 16:06:42 +00:00
Duncan Sands
d869b3847f Generalize some alias analysis logic from atomic
intrinsics to any IntrWriteArgMem intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64551 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-14 10:56:35 +00:00
Evan Cheng
32c1a4c342 Eliminate a 'control reaches end of non-void function' warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64111 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-09 03:07:24 +00:00
Dale Johannesen
ed2eee63a6 Get rid of one more non-DebugLoc getNode and
its corresponding getTargetNode.  Lots of
caller changes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63904 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-06 01:31:28 +00:00
Dale Johannesen
3484c09e0d Remove a non-DebugLoc version of getNode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63889 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-05 22:07:54 +00:00
Dale Johannesen
49de98214b Reapply 63765. Patches for clang and llvm-gcc to follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63812 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-05 01:49:45 +00:00
Dale Johannesen
a05dca4f9e Remove non-DebugLoc forms of CopyToReg and CopyFromReg.
Adjust callers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63789 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-04 23:02:30 +00:00
Dale Johannesen
4d452de150 Reverting 63765. This broke the build of both clang
and llvm-gcc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63786 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-04 22:47:25 +00:00
Nate Begeman
d24479730a 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63765 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-04 19:47:21 +00:00
Duncan Sands
b0d5cdd52e 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63494 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-01 18:06:53 +00:00
Bill Wendling
ca6418308c Explain why this is here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63342 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29 23:19:43 +00:00
Bill Wendling
6e1bb38fb8 - 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.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63273 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29 05:27:31 +00:00
Dan Gohman
63e3e6350b 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63265 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29 01:37:18 +00:00
Mikhail Glushenkov
57cd67f693 Typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63174 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-28 03:47:58 +00:00
Mikhail Glushenkov
19d3e82905 Add three new option properties.
Adds new option properties 'multi_val', 'one_or_more' and 'zero_or_one'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63172 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-28 03:47:20 +00:00
Evan Cheng
536ab130ec 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62762 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-22 09:10:11 +00:00
Chris Lattner
41b2340b74 Make tblgen more portable, allowing it to build with ICC.
Patch by Robert Zeh!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62750 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-22 05:10:16 +00:00
Mikhail Glushenkov
b6b514124d Change the hook API back to prevent memory leaks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62686 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-21 13:04:33 +00:00
Mikhail Glushenkov
a298bb7525 Allow hooks with arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62685 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-21 13:04:00 +00:00
Dan Gohman
febf71db2d Avoid triggering an assertion failure when an instruction pattern
is a leaf node. Patch by Brandner!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62361 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-16 21:30:55 +00:00
Dan Gohman
05aae18165 Add support for instructions with multiple ComplexPatterns, by
adding more information to the temporary variables names so that
they don't conflict.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62296 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-16 02:05:52 +00:00
Duncan Sands
ceb4d1aecb Rename getABITypeSize to getTypePaddedSize, as
suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-12 20:38:59 +00:00
Chris Lattner
d4a2700fdc make tblgen autogenerate the nocapture intrinsics for
llvm.memcpy/memset/memmove.  This allows removal of some 
hackish code from basicaa.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62071 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-12 02:41:37 +00:00
Chris Lattner
10dae94be2 add scaffolding to emit argument attributes. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62067 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-12 01:27:55 +00:00
Chris Lattner
048ffb239c make tblgen emit the entire Intrinsic::getAttributes method,
not a random piece of it.  No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62066 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-12 01:18:58 +00:00
Chris Lattner
a62c302ddd add nocapture attribute to llvm.mem* intrinsics and have tblgen
parse them.  tblgen doesn't yet do anything with this info though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62065 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-12 01:12:03 +00:00
Bob Wilson
bc03979536 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61834 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-07 00:09:01 +00:00
Dan Gohman
1eb49a0a5e Delete an unused variable and simplify the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61732 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-05 19:31:28 +00:00
Bob Wilson
e035fa50f3 Handle iAny and fAny types in TreePatternNode::UpdateNodeType.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61713 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-05 17:52:54 +00:00
Bob Wilson
6c01ca9e29 Fix spelling in some comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61702 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-05 17:23:09 +00:00
Dan Gohman
0b53d98c29 Use dyn_cast intead of isa + cast in the generated DAGISel code. This
reduces the amount of code slightly when assertions are enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61249 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-19 18:13:39 +00:00
Mon P Wang
87c8a8f304 Added support for vector widening.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61209 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-18 20:03:17 +00:00
Mikhail Glushenkov
65ee1e6ff4 Fix typo in error message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61191 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-18 04:06:58 +00:00
Mikhail Glushenkov
5c2b6b26c9 Some enhancements for the 'case' expression.
Add (error) and (empty).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61117 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-17 02:47:01 +00:00
Mikhail Glushenkov
e1d44b59ee Put Edge* classes into anonymous namespace.
Prevents conflicts between plugins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60871 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-11 10:34:18 +00:00
Mikhail Glushenkov
b4ced5a3c4 Make 'extern' an option property.
Makes (forward) work better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60667 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-07 16:47:12 +00:00
Mikhail Glushenkov
ad889a7f88 Better error message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60664 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-07 16:45:12 +00:00
Mikhail Glushenkov
15b71ba122 Re-apply Cedric's changes.
Use B instead of Beg (for consistency), but NodeA and NodeB instead of A
and B.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60663 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-07 16:44:47 +00:00
Mikhail Glushenkov
b59dbad710 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60659 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-07 16:42:47 +00:00
Mikhail Glushenkov
08509493e5 Add a (progn)-like construct for (actions). Implemented as a DAG list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60658 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-07 16:42:22 +00:00
Mikhail Glushenkov
f915253dfc Use (actions) instead of option properties, support external options.
Also includes a major refactoring. See documentation for more
information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60656 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-07 16:41:11 +00:00
Cedric Venet
8f241b0efb 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. 

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60590 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-05 13:37:30 +00:00
Dan Gohman
15511cf166 Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60487 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-03 18:15:48 +00:00
Dan Gohman
62c939d7d5 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).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60461 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-03 05:21:24 +00:00
Dan Gohman
41474baac8 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60459 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-03 02:30:17 +00:00
Mikhail Glushenkov
ad746beb64 Support multiple compilation graph definitions. Not terribly useful, but makes the code more generic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60199 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-28 00:13:47 +00:00
Mikhail Glushenkov
739c720e66 Add 'hidden' and 'really_hidden' option properties.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60198 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-28 00:13:25 +00:00
Evan Cheng
884c70c912 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60139 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-27 00:49:46 +00:00
Mikhail Glushenkov
3acc921b26 Small fix: the error message was incorrect in some cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60099 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-26 10:55:45 +00:00
Mikhail Glushenkov
35fde15059 Support dependencies between plugins by priority-sorting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59449 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-17 17:30:25 +00:00
Mikhail Glushenkov
fa2707709d Filter ToolPropertiesList to exclude all Tools not mentioned in the compilation graph.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59448 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-17 17:29:42 +00:00
Mikhail Glushenkov
010887765a 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59447 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-17 17:29:18 +00:00
Bill Wendling
023422a6eb Fix to record comparator to make it work for return values > 1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59242 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13 12:03:00 +00:00
Bill Wendling
20072af3b0 Put comma in correct place for call to StructType::get
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59241 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13 10:18:35 +00:00
Bill Wendling
cdcc3e6e12 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>]>;



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59237 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13 09:08:33 +00:00
Mikhail Glushenkov
6766572dcb 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59131 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12 12:41:18 +00:00
Mikhail Glushenkov
262d248833 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59097 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12 00:05:17 +00:00
Mikhail Glushenkov
aa4774caaa Some cosmetic changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59096 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12 00:04:46 +00:00
Mikhail Glushenkov
c389e944cd Allow $CALL and $ENV in command names. Fixes #3025.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58922 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-08 19:43:32 +00:00
Anton Korobeynikov
760a5724c6 Properly escape dashes in TableGen's LLVMC2 emitter.
Patch by Patrick Walton!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58901 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-08 10:16:21 +00:00
Dan Gohman
212e6983eb Make tablegen print out a nice error message for a const char*
exception, like it does for a std::string exception.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58865 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-07 21:01:13 +00:00
Dan Gohman
28c04dab38 Use an assert to check that SelectCode isn't called on
nodes that are already selected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58763 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-05 18:30:52 +00:00
Dan Gohman
8be6bbe5bf 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58748 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-05 04:14:16 +00:00
Dan Gohman
da71cf0ce9 Give tablegen's Type a destructor, to suppress spurious
"Type has virtual functions but non-virtual destructor"
warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58710 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-04 18:09:07 +00:00
Dan Gohman
38bb2f8d09 Add some asserts to verify MVT invariant assumptions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58701 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-04 16:03:56 +00:00
Dan Gohman
3a5797d946 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58623 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-03 17:56:27 +00:00
David Greene
8ad4c00c00 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58278 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-27 21:56:29 +00:00
Cedric Venet
7caa2d0ffc Remove tabs from my previous commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58263 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-27 19:21:35 +00:00
Matthijs Kooijman
677fbfa450 Remove redundant word in tblgen error message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58250 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-27 15:59:43 +00:00
Cedric Venet
3bff2df61c 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).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58185 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-26 15:40:44 +00:00
Argyrios Kyrtzidis
bb9d18c7d5 Unbreak LLVM on the MSVC compiler:
-Bring in int64_t for TableGen/Record.h and TableGen/TGLexer.h
-Define strtoull

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57970 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-22 09:54:13 +00:00
Evan Cheng
b89be6150a 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57722 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-17 21:00:09 +00:00
Dan Gohman
b2a1432507 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57668 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-17 04:40:39 +00:00
Dan Gohman
63f97201dc 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57663 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-17 01:33:43 +00:00
Dan Gohman
0540e17788 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57562 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-15 06:17:21 +00:00
Duncan Sands
4520dd2b7b Add <cstdio> include where needed by gcc-4.4.
Patch by Samuel Tardieu.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57291 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-08 07:23:46 +00:00
Chris Lattner
1cfa0776c3 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57124 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-05 18:31:58 +00:00
Dale Johannesen
48c1bc2ace Handle some 64-bit atomics on x86-32, some of the time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56963 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-02 18:53:47 +00:00
Dan Gohman
5ec9efd61b 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56877 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-30 20:48:29 +00:00
Dan Gohman
31bd42bc63 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56759 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-27 23:53:14 +00:00
Dan Gohman
7810bfed55 Rename ConstantSDNode's getSignExtended to getSExtValue, for
consistancy with ConstantInt, and re-implement it in terms
of ConstantInt's getSExtValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56700 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-26 21:54:37 +00:00
Devang Patel
0598866c05 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56622 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-25 21:00:45 +00:00
Mikhail Glushenkov
4a1a77c1c9 Move llvmc2 header files under include/llvm/CompilerDriver
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56466 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-22 20:50:40 +00:00
Mikhail Glushenkov
c82ce4a8a7 Plugin support for llvmc2 (a-la opt).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56465 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-22 20:49:34 +00:00
Mikhail Glushenkov
0737651452 Make comments a little bit more clear.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56463 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-22 20:48:22 +00:00
Mikhail Glushenkov
11a353a206 Get rid of GlobalLanguageMap. Global state is evil.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56462 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-22 20:47:46 +00:00
Mikhail Glushenkov
fdee954623 Add a (forward_as) option property
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56459 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-22 20:46:19 +00:00
Mikhail Glushenkov
5ccf28f168 Delete the file llvmc2/doc/LLVMC-Enhancements.rst + some minor language/spelling fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56458 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-22 20:45:17 +00:00
Oscar Fuentes
3d01fc7de8 Initial support for the CMake build system.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56419 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-22 01:08:49 +00:00
Evan Cheng
bc95b23156 Add instruction names as comments to InstBits entries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56275 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-17 06:29:52 +00:00
Bill Wendling
056292fd73 Reverting r56249. On further investigation, this functionality isn't needed.
Apologies for the thrashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56251 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-16 21:48:12 +00:00
Bill Wendling
9468a9b6be - 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56249 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-16 21:12:30 +00:00
Dan Gohman
4fbd796a12 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56162 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-12 18:08:03 +00:00
Dan Gohman
f5aeb1a8e4 Rename ConstantSDNode::getValue to getZExtValue, for consistency
with ConstantInt. This led to fixing a bug in TargetLowering.cpp
using getValue instead of getAPIntValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56159 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-12 16:56:44 +00:00
Evan Cheng
84a8be3baf Indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56107 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-11 17:31:12 +00:00
Jim Grosbach
7c9a7728d9 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56106 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-11 17:05:32 +00:00
Evan Cheng
dd595c5998 Change getSubReg semantics. It now returns zero if the specified register doesn't have a subreg of the specified index.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56099 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-11 06:25:25 +00:00
Dan Gohman
eb3db1cec2 Fix typos in (generated) comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55916 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-08 16:29:36 +00:00
Evan Cheng
98d2d07d41 Correctly handle physical register inputs. They are not explicit input operands in the resulting machine instrs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55893 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-08 08:39:33 +00:00
Evan Cheng
e3e3626338 Eliminate a compile time warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55878 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-07 09:00:57 +00:00
Evan Cheng
d07b46e908 Fix indentation of generated code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55876 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-07 08:23:06 +00:00
Evan Cheng
34fc6ceb73 Ignore multi-instruction patterns. e.g.
def : Pat<(i8 (trunc GR32:$src)),
          (i8 (EXTRACT_SUBREG (MOV32to32_ GR32:$src), x86_subreg_8bit))>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55875 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-07 08:19:51 +00:00
Evan Cheng
c3f44b0d63 Let tblgen only generate fastisel routines, not the class definition. This makes it easier for targets to define its own fastisel class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55679 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 00:03:49 +00:00
Evan Cheng
acff339e39 Change getBinaryCodeForInstr prototype. First operand MachineInstr& should be const. Make corresponding changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55623 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-02 06:51:36 +00:00
Owen Anderson
667d8f7607 Add initial support for fast isel of instructions that have inputs pinned to physical registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55545 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-29 17:45:56 +00:00
Dan Gohman
99b218218c Add a target callback for FastISel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55512 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-28 23:21:34 +00:00
Gabor Greif
ba36cb5242 erect abstraction boundaries for accessing SDValue members, rename Val -> Node to reflect semantics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55504 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-28 21:40:38 +00:00
Owen Anderson
b5dbcb538b 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55480 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-28 18:06:12 +00:00
Dan Gohman
833ddf8430 Update a comment to reflect recent changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55418 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-27 16:18:22 +00:00
Dan Gohman
10df0fa73e Basic FastISel support for floating-point constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55401 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-27 01:09:54 +00:00
Gabor Greif
99a6cb92d1 disallow direct access to SDValue::ResNo, provide a getter instead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55394 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 22:36:50 +00:00
Dan Gohman
72d63af3f7 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55385 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 21:21:20 +00:00
Cedric Venet
c93457053c - small bug corrected: incorrect iterator type.
- fix to please VS: add a return after an assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55380 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 19:49:04 +00:00
Owen Anderson
70647e81e3 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55376 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 18:50:00 +00:00
Chris Lattner
9783d62422 code simplification, no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55363 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 07:01:28 +00:00
Chris Lattner
073ff02e0d stabilize more printing, this doesn't cause a problem
in the example attached to PR2590, but is a problem in general.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55361 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 06:50:46 +00:00
Chris Lattner
943c0e6fba stablize SubRegsSet printing, part of PR2590
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55360 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 06:49:06 +00:00
Chris Lattner
690d80eefe Stabilize 'getDwarfRegNumFull' output to not depend on random memory
orders, part of PR2590


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55359 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 06:43:25 +00:00
Owen Anderson
abb1f16881 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55349 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 01:22:59 +00:00
Owen Anderson
71669e51e5 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55347 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-26 00:42:26 +00:00
Owen Anderson
0f84e4e310 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55345 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-25 23:58:18 +00:00
Owen Anderson
7b2e579546 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55344 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-25 23:43:09 +00:00
Owen Anderson
6d0c25ec3a Add support for fast isel of (integer) immediate materialization pattens, and use them to support
bitcast of constants in fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55325 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-25 20:20:32 +00:00
Dan Gohman
f350b277f3 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55219 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 02:25:05 +00:00
Dan Gohman
0bfb75277f Add a few comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55157 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 00:28:15 +00:00
Dan Gohman
22bb31103d 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55156 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 00:20:26 +00:00
Dan Gohman
d5fe57d2f9 Basic fast-isel support for instructions with constant int operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55099 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 01:41:07 +00:00
Dan Gohman
520b50c00d Remove the code that limited FastISel to certain fixed signatures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55096 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 00:35:26 +00:00
Dan Gohman
c7f72de3b4 Begin making more use of the FastISelEmitter class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55093 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 00:19:05 +00:00
Dan Gohman
83babdea5d Remove an obsolete todo comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55080 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 21:47:28 +00:00
Dan Gohman
1e0ee4bc38 Factor the code for determining the target-specific instruction
namespace out of the isel emitters and into common code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55079 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 21:45:57 +00:00
Dan Gohman
bb466331e7 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55076 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 21:05:57 +00:00
Dan Gohman
ba6783ec8c Fix the string for MVT::isVoid.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55034 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 01:44:30 +00:00
Dan Gohman
cf711aa5b6 For now, restrict FastISel to instructions that only involve one
register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55008 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19 20:58:14 +00:00
Dan Gohman
d1d2ee8ccb Factor out the code to scan an instruction's operands into a
helper function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55007 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19 20:56:30 +00:00
Dan Gohman
379cad44ec Add more comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55004 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19 20:36:33 +00:00
Dan Gohman
56e0f87dcc Fix indentation in FastISel tablegen-emitted code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55003 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19 20:31:38 +00:00
Dan Gohman
f4137b5f40 Add more checking to filter out more kinds of things that
FastISel doesn't support yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55002 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19 20:30:54 +00:00
Dan Gohman
567263462f 80 columns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54998 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19 18:07:49 +00:00
Dan Gohman
04b7dfb233 Add a few doxygen comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54997 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19 18:06:12 +00:00
Dan Gohman
88c6b57ef0 Remove an unneeded #include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54996 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19 17:53:16 +00:00
Owen Anderson
22ae999082 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54781 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14 18:34:18 +00:00
Dan Gohman
b0cf29c5cf 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54751 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13 20:19:35 +00:00
Dan Gohman
ea9587bf41 Oops, check in these files too, for the FastISel -> Fast rename.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54750 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13 19:55:00 +00:00
Mon P Wang
e3b3a7241c 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54195 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-30 04:36:53 +00:00
Dan Gohman
475871a144 Rename SDOperand to SDValue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54128 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-27 21:46:04 +00:00
Dan Gohman
e8be6c6391 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53728 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-17 19:10:17 +00:00
Evan Cheng
b7c3e867a5 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53207 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 22:19:41 +00:00
Dan Gohman
95d110920e 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53203 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 21:00:17 +00:00
Dan Gohman
1002c02034 Add explicit keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53179 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-07 18:00:37 +00:00
Evan Cheng
f9d0318950 isel load folding is disabled at -fast. Now hoist the check up to the top level to save some time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53096 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-03 08:39:51 +00:00
Dan Gohman
cd920d9ecf 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53057 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-02 23:23:19 +00:00
Owen Anderson
605041e5a8 Make the subregister hashtable output more readable by wrapping the lines,
and mark it const along with the associated changes to TargetRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52966 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 17:34:38 +00:00
Owen Anderson
b43f7e05ff Use delete[] instead of free on an array created with new[].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52960 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 15:56:31 +00:00
Owen Anderson
57ce0319b7 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().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52951 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 07:02:30 +00:00
Owen Anderson
f4f9c4f1cf 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52945 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 00:18:52 +00:00
Dan Gohman
4406604047 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52943 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-01 00:05:16 +00:00
Evan Cheng
2036835346 Eliminate TargetRegisterDesc::ImmSubRegs. It's no longer in use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52892 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-30 07:32:56 +00:00
Chris Lattner
2ca698df93 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52888 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-30 03:02:03 +00:00
Dale Johannesen
b5dae00325 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.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52750 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-26 01:51:13 +00:00
Mon P Wang
2887310630 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52706 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-25 08:15:39 +00:00
Evan Cheng
6bd9567a6a - 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52353 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-16 20:29:38 +00:00
Matthijs Kooijman
d3979a51ee Remove some debug output from tblgen. This fixes a test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52177 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-10 14:53:49 +00:00
Duncan Sands
83ec4b6711 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).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52044 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-06 12:08:01 +00:00
Chris Lattner
32a9e7a265 Add #includes required by GCC 4.3, thanks for Zhongxing Xu
for reporting this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51926 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-04 04:46:14 +00:00
Dan Gohman
37cdad3e59 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51877 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-02 17:40:38 +00:00
Anton Korobeynikov
12a3f8302a Initialize members properly during construction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51841 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-01 16:22:49 +00:00
Mikhail Glushenkov
310d2eb202 Callback was not executed on OS X when it was a function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51814 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-31 13:43:21 +00:00
Dan Gohman
e4c67cdab4 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51808 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-31 02:11:25 +00:00
Mikhail Glushenkov
a7d0ae34fb Add a check for side effect-free options (specified only in the OptionList).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51759 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:28:37 +00:00
Mikhail Glushenkov
2b7bcb4e8d Refactoring: remove code duplication introduced in the previous patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51757 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:27:29 +00:00
Mikhail Glushenkov
09b51c348c Refactoring: split CollectProperties into two separate function objects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51756 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:27:02 +00:00
Mikhail Glushenkov
e43228958c 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51754 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:26:08 +00:00
Mikhail Glushenkov
5fe8475e3a A small optimization: use static char* array instead of StrVector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51752 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:24:49 +00:00
Mikhail Glushenkov
92b8da75a1 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51751 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:24:07 +00:00
Mikhail Glushenkov
34f376281f Fix: 'sink' handling was broken.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51750 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:23:29 +00:00
Mikhail Glushenkov
6be4ffc7c3 Add support for option aliases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51749 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:22:52 +00:00
Mikhail Glushenkov
2d0dc9ab44 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")


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51748 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:22:15 +00:00
Mikhail Glushenkov
4fb71eae48 Small error message improvement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51747 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:21:48 +00:00
Mikhail Glushenkov
708e7c29bc Remove RequireDefault parameter from EmitCaseConstructHandler.
There are now no situations when 'default' is required.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51746 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:21:21 +00:00
Mikhail Glushenkov
fb37f39111 Fix some headers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51745 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:20:54 +00:00
Mikhail Glushenkov
2e73e851d8 New tests for the 'case' expression: not_empty, in_language.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51744 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:19:52 +00:00
Mikhail Glushenkov
ffcf3a1a69 Make it possible to have multiple input languages for a single tool.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51742 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:18:16 +00:00
Mikhail Glushenkov
cb64f4be3a Better error reporting for the 'case' construct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51738 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:15:47 +00:00
Mikhail Glushenkov
37f509a70c Do not generate empty 'if's for the output_suffix property.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51737 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:15:20 +00:00
Mikhail Glushenkov
2242456da5 Make it possible to use hooks like this: '$CALL(MyHook)/path/to/file'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51734 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:13:29 +00:00
Mikhail Glushenkov
5c7578de08 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).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51733 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:13:02 +00:00
Mikhail Glushenkov
08bd2e74dc 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).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51732 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:12:24 +00:00
Mikhail Glushenkov
14ec27fff1 Some small tweaks to make the generated code prettier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51729 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:10:47 +00:00
Mikhail Glushenkov
b5ccfbf0a9 Make it possible to use the generalised 'case' construct in the cmd_line property.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51728 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:10:19 +00:00
Mikhail Glushenkov
e5557f4da4 Add a generalised 'case' construct.
Besides assigning edge weights, it will also be used by the cmd_line tool property.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51727 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-30 06:08:50 +00:00
Dan Gohman
b4106170dd 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51706 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 21:50:34 +00:00
Dan Gohman
d35121ad00 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 ;-).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51699 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-29 19:57:41 +00:00
Bill Wendling
8370d38ade 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51660 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-28 22:54:52 +00:00
Roman Levenstein
6422e8aa1c 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51102 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-14 10:17:11 +00:00
Mikhail Glushenkov
5c98d824f6 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50973 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-12 16:33:06 +00:00
Mikhail Glushenkov
8e7254cd44 Reapply 50867: A small refactoring (extract method) + some comment fixes.
Fixed the build breakage, sorry for that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50895 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-09 08:27:26 +00:00
Tanya Lattner
0561f78a14 Revertin 50867 since it was breaking the build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50871 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-08 21:54:20 +00:00
Mikhail Glushenkov
21607fa63c A small refactoring (extract method) + some comment fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50867 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-08 20:02:03 +00:00
Mikhail Glushenkov
4561ab5d81 Use Doxygen-style comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50833 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-07 21:50:19 +00:00
Mikhail Glushenkov
e0ff9ae91e Change from llvm::SmallSet<std::string> to llvm::StringMap<char>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50766 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 18:18:58 +00:00
Mikhail Glushenkov
29063554d0 Add new edge property combinator: weight.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50765 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 18:18:20 +00:00
Mikhail Glushenkov
76b1b24dc8 Use edge weights to choose the right linker based on input language names.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50759 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 18:15:12 +00:00
Mikhail Glushenkov
bb8b58dcf3 Add weights to graph edges. Choose between edges based on their weight.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50757 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 18:14:24 +00:00
Mikhail Glushenkov
d83038c960 Remove the UnpackValues() function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50756 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 18:13:45 +00:00
Mikhail Glushenkov
978d498e40 Add a --linker command-line option, make all tests pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50755 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 18:13:00 +00:00
Mikhail Glushenkov
895820da24 Naming fix: LLVMCCConfigurationEmitter -> LLVMCConfigurationEmitter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50754 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 18:12:03 +00:00
Mikhail Glushenkov
ecbdcf2ae0 Rename LLVMCCConfigurationEmitter to LLVMCConfigurationEmitter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50748 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 18:09:29 +00:00
Mikhail Glushenkov
be9d9a153f Add output redirection, rename namespace llvmcc to namespace llvmc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50746 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 18:08:59 +00:00
Mikhail Glushenkov
ee628d93aa Small output formatting fix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50739 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 17:27:15 +00:00
Mikhail Glushenkov
c74bfc946d Add inward edge counters to Nodes; Associate JoinLists with JoinTools.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50738 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 17:26:53 +00:00
Mikhail Glushenkov
b96cb60827 Return const char* instead of std::string in Tool classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50733 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 17:24:26 +00:00
Mikhail Glushenkov
9ef501b120 Refactoring: extract method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50731 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 17:23:14 +00:00
Mikhail Glushenkov
64683edb4d Add new edge properties: parameter_equals, element_in_list, and.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50730 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 17:22:47 +00:00
Mikhail Glushenkov
581936a99c Implemented switch_on edge property.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50729 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 17:22:03 +00:00
Mikhail Glushenkov
d752c3ffd8 More work on edge properties. Use Edge classes instead of strings in CompilationGraph.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50726 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 16:36:50 +00:00
Mikhail Glushenkov
0a174930e2 Ongoing work: add an edge typechecker, rudimentary support for edge properties.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50725 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 16:36:06 +00:00
Mikhail Glushenkov
0d08db0345 Convert internal representation to use DAG. This gives us more flexibility and enables future improvements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50724 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 16:35:25 +00:00
Mikhail Glushenkov
b90cd834ca Code reorg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50722 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 16:34:12 +00:00
Chuck Rose III
cc51c31953 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49743 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-15 21:27:11 +00:00
Evan Cheng
8102703d70 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).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49714 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-15 07:56:03 +00:00
Chris Lattner
3dc2e96eec produce an error on invalid input instead of asserting:
def : Pat<((v2f64 (vector_shuffle immAllZerosV_bc,
           ^



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49462 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 04:48:34 +00:00
Nate Begeman
59d28132bc 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49433 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 16:24:11 +00:00
Chris Lattner
d963ab1f58 Fix generation of multi-stage instruction itineraries. Patch by
giuma.cordes@gmail.com



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49276 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06 17:38:14 +00:00
Dan Gohman
ee4fa1977d 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49123 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-03 00:02:49 +00:00
Anton Korobeynikov
67073f1cbd 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49079 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02 05:23:57 +00:00
Chris Lattner
038112a4e0 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49041 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01 18:04:03 +00:00
Mikhail Glushenkov
3ee8402645 Fix build breakage on Windows with GCC 4.3. References bug #2176.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48874 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27 09:53:47 +00:00
Dan Gohman
950a4c40b8 Add explicit keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48801 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 22:06:05 +00:00
Dan Gohman
cfbb2f074d 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48800 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 21:45:14 +00:00
Anton Korobeynikov
ac67b7ea8f 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48699 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-23 08:57:20 +00:00
Duncan Sands
276dcbdc8d 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48640 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-21 09:14:45 +00:00
Chris Lattner
71a2cb25eb detabify llvm, patch by Mike Stump!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48577 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-20 01:22:40 +00:00
Nate Begeman
817affccd5 Add support for escaping {} in asm strings, based on patch from Nick Burns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48450 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-17 07:26:14 +00:00
Christopher Lamb
c929823525 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48412 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-16 03:12:01 +00:00
Evan Cheng
20ccded7de Remove isImplicitDef TargetInstrDesc flag.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48381 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-15 00:19:36 +00:00
Evan Cheng
da47e6e0d0 Replace all target specific implicit def instructions with a target independent one: TargetInstrInfo::IMPLICIT_DEF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48380 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-15 00:03:38 +00:00
Christopher Lamb
6634e26aa1 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48329 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-13 05:47:01 +00:00
Christopher Lamb
5b4153710e Recommitting changes after more testing. These appear to cause no problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48222 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-11 09:33:47 +00:00
Chris Lattner
ca796402be emit an ID # for each regclass ID. Chris doesn't like to have to count.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48200 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-11 00:00:23 +00:00
Evan Cheng
4499e495ea Revert 48125, 48126, and 48130 for now to unbreak some x86-64 tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48167 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-10 19:31:26 +00:00
Christopher Lamb
02f693708d Revert accidentally committed local changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48126 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-10 04:16:09 +00:00
Christopher Lamb
620d741250 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!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48125 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-10 04:13:41 +00:00
Dale Johannesen
b8cafe3427 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.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48122 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-10 02:17:22 +00:00
Scott Michel
327d0651f8 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47950 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05 17:49:05 +00:00
Bill Wendling
e6d088acc9 Rename PrintableName to Name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47629 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 21:47:57 +00:00
Bill Wendling
74ab84c31e Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool
would have been a Godsend here!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47625 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 21:11:01 +00:00
Bill Wendling
27926af828 De-tabify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47595 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26 10:45:29 +00:00
Bill Wendling
181eb737b2 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47534 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-24 00:56:13 +00:00
Anton Korobeynikov
ae9f3a3b7c Unbreak build with gcc 4.3: provide missed includes and silence most annoying warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47367 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:08:44 +00:00
Scott Michel
0123b7dcfa 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47188 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-15 23:05:48 +00:00
Dale Johannesen
db01c8ba26 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47143 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-14 23:35:16 +00:00
Nate Begeman
e179584f9b 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47121 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-14 08:57:00 +00:00
Dan Gohman
6f0d024a53 Rename MRegisterInfo to TargetRegisterInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46930 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-10 18:45:23 +00:00
Nate Begeman
b5af3344c1 Tablegen support for insert & extract element matching
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46901 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-09 01:37:05 +00:00
Dan Gohman
69de1932b3 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46827 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-06 22:27:42 +00:00
Evan Cheng
a58891ff1e Fix PR1975: dag isel emitter produces patterns that isel wrong flag result.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46776 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-05 22:50:29 +00:00
Evan Cheng
4e3f5a4e9c 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46724 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-04 23:06:48 +00:00
Chris Lattner
f8dc0617ba 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46677 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-03 06:49:24 +00:00
Evan Cheng
4eecdeb3fa Get rid of the annoying blank lines before labels.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46667 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-02 08:39:46 +00:00
Evan Cheng
a844bdeab3 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46659 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-02 04:07:54 +00:00
Evan Cheng
334dc1f58d Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and re-commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46623 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-31 21:00:00 +00:00
Evan Cheng
bb81d97feb 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46609 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-31 09:59:15 +00:00
Christopher Lamb
8535624739 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46606 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-31 07:27:46 +00:00
Dan Gohman
c6c391dadd 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46585 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-31 00:25:39 +00:00
Scott Michel
6be48d49cf 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46487 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29 02:29:31 +00:00
Anton Korobeynikov
7674b9d297 Add interator interface to DAGInit also
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46250 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-22 11:00:07 +00:00
Anton Korobeynikov
82137bd061 Provide iterator access to ListInit contents
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46223 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-21 22:30:26 +00:00
Chuck Rose III
9a79de3d09 Add files to windows project files. Also include <algorithm> explicitly so that vstudio build works
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46013 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-15 21:43:17 +00:00
Evan Cheng
6bfa8a121d Rename CCIfStruct to CCIfByVal and CCStructAssign to CCPassByVal. Remove unused parameters of CCStructAssign and add size and alignment requirement info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45997 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-15 03:34:58 +00:00
Evan Cheng
5daafa9b1b Revert my last commit. Not needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45994 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-15 03:10:35 +00:00
Evan Cheng
01b8fccca0 ByVal arguments are passed on stack. Make sure to allocate a slot using size and alignment information on the parameter attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45897 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12 01:07:41 +00:00
Chris Lattner
a22edc82ca 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45843 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 23:08:24 +00:00
Chris Lattner
ba7e756c22 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45829 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 07:59:24 +00:00
Chris Lattner
811281e788 Fix a crash on code like: let x = 1 {x
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45827 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 07:01:53 +00:00
Chris Lattner
214884ba03 if an instr lacks a pattern, assume it has side effects (unless never has s-e is true).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45823 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 05:40:54 +00:00
Chris Lattner
bc0b9f70ae start inferring 'no side effects'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45822 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 05:39:30 +00:00
Chris Lattner
8926038785 Infer mayload
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45819 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 04:44:48 +00:00
Chris Lattner
710e995889 realize that instructions who match intrinsics that read memory read memory.
Also, instructions with any nodes that are SDNPMayLoad also read memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45817 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-10 04:38:57 +00:00
Chris Lattner
dcc8b4f5d3 add a mayLoad property for machine instructions, a correlary to mayStore.
This is currently not set by anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45748 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08 18:05:21 +00:00
Chris Lattner
749c6f6b5e rename TargetInstrDescriptor -> TargetInstrDesc.
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45695 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 07:27:27 +00:00
Chris Lattner
0ff23966fe 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45692 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 06:42:05 +00:00
Chris Lattner
8f707e15fb rename hasVariableOperands() -> isVariadic(). Add some comments.
Evan, please review the comments I added to getNumDefs to make sure
that they are accurate, thx.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45687 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 05:19:29 +00:00
Chris Lattner
4764189298 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45686 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 05:06:49 +00:00
Chris Lattner
af3eb7c758 the name field of instructions is never set to a non-empty string,
just unconditionally use the def name of the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45684 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 04:57:31 +00:00
Chris Lattner
8ca5c67c6e 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45677 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 02:39:19 +00:00
Chris Lattner
834f1ce031 rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45667 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 23:38:27 +00:00
Chris Lattner
2e48a70b35 rename isStore -> mayStore to more accurately reflect what it captures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45656 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 08:36:04 +00:00
Chris Lattner
c8478d8b12 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45654 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 06:44:58 +00:00
Chris Lattner
e67bde5bb1 set the 'isstore' flag for instructions whose pattern is an
intrinsic that writes to memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45650 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 05:36:50 +00:00
Chris Lattner
2d51a4ce8f 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45648 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 02:16:26 +00:00
Chris Lattner
a529a37fbd rearrange some code to allow inferring instr info from the pattern of the instr, but don't do so yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45647 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 01:53:37 +00:00
Chris Lattner
f1ab4f18aa improve const correctness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45646 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 01:52:22 +00:00
Chris Lattner
6cc654b27a Split the impl of CodeGenInstruction out to its own .cpp file, add a getName() accessor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45645 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 01:35:39 +00:00
Chris Lattner
5fbe275304 final cleanups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45644 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 01:21:51 +00:00
Chris Lattner
ef8339b11a further simplifications and cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45643 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 01:20:13 +00:00
Chris Lattner
951740afb4 simplify some code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45642 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 01:12:44 +00:00
Chris Lattner
fe71893183 rename CodegenDAGPatterns -> CodeGenDAGPatterns
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45641 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 01:10:31 +00:00
Chris Lattner
7b11712ef2 split enum emission out from InstrInfoEmitter into it's own tblgen backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45640 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06 00:49:05 +00:00
Chris Lattner
93c7e41825 fix build on case sensitive file systems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45639 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 23:37:52 +00:00
Chris Lattner
200c57e8ea 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!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45636 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 22:58:54 +00:00
Chris Lattner
443e3f9dd6 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45635 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 22:54:53 +00:00
Chris Lattner
dc32f9802a move predicate printing code from CodeGenDAGPatterns -> DAGISelEmitter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45634 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 22:43:57 +00:00
Chris Lattner
60d8139d1b fix a fixme by improving const correctness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45633 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 22:30:17 +00:00
Chris Lattner
6cefb77a70 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45632 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 22:25:12 +00:00
Chris Lattner
331bf92fb5 Change the builtin matcher to emit a decision tree, which should help out
the VC++ 'nesting depth' issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45567 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 04:38:35 +00:00
Chris Lattner
81442c0d83 Don't let IntrinsicID be uninitialized if it doesn't match.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45563 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 03:32:52 +00:00
Bill Wendling
f840f87baf Remove the default else. This was ending in code that looked like this:
if (!strcmp(Target, "x86")) {
  // ...
}
else
  IntrinsicID = Intrinsic::not_intrinsic;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45557 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 23:02:16 +00:00
Chris Lattner
fa0fba1c54 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45500 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-02 21:24:22 +00:00
Chris Lattner
2c36affc82 tblgen shouldn't include headers from llvm codegen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45429 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-30 00:25:23 +00:00
Chris Lattner
3060910e29 remove attributions from utils.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45419 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29 20:37:13 +00:00
Chris Lattner
5116784826 remove attributions from tools/utils makefiles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45414 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29 20:07:17 +00:00
Christopher Lamb
43ad6b3e0d 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45082 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-17 01:12:55 +00:00
Bill Wendling
6b1da9c39f Add flags to indicate that there are "never" side effects or that there "may be"
side effects for machine instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45022 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-14 01:48:59 +00:00
Evan Cheng
3dd298fb62 Oops. Forgot these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44969 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-13 00:42:35 +00:00
Duncan Sands
a3355ffb3d 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).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44544 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-03 20:06:50 +00:00
Chuck Rose III
aa91792d6c 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44340 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-26 23:19:59 +00:00
Chris Lattner
8dcf751310 add missing #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44282 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 23:19:05 +00:00
Chris Lattner
5d81486413 resolve the last fixme's in the new tblgen parser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44277 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 21:06:59 +00:00
Chris Lattner
3aba4d39fd change the Init print methods to return strings, and implement
print in terms of that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44276 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 21:05:25 +00:00
Chris Lattner
bf8644ca1f eliminate a bunch of print methods that are duplicate with the getAsString() method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44275 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 20:51:34 +00:00
Chris Lattner
f460165a4c 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44274 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 20:49:04 +00:00
Chuck Rose III
8b0ec64400 Switching back to strtoll. Including config.h. On VStudio builds, this overrides strtoll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44264 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-21 19:36:25 +00:00
Chuck Rose III
0ccb93034a 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44260 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-21 00:37:56 +00:00
Chris Lattner
99ba1f7b8d Add the ability to convert a tblgen type to a string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44257 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-20 22:25:16 +00:00
Chris Lattner
56a9fcfd1e Record the start of the current token, for use in error reporting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44227 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-19 07:43:52 +00:00
Chris Lattner
c8a9bbcbc7 Add carat diagnostics to tblgen lexer errors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44226 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-19 07:38:58 +00:00
Chris Lattner
c1819188b6 minor cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44212 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-18 05:48:46 +00:00
Chris Lattner
6aaca046d2 ensure header is self contained.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44211 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-18 05:25:45 +00:00
Chris Lattner
a805874422 reimplement the tblgen lexer with a simple hand-written lexer. This eliminates
one dependency on flex and gets rid of two ".cvs" files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44210 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-18 02:57:27 +00:00
Duncan Sands
87b665d3de 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44107 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-14 08:29:13 +00:00
Dale Johannesen
b97aec663b Add parameter to getDwarfRegNum to permit targets
to use different mappings for EH and debug info;
no functional change yet.
Fix warning in X86CodeEmitter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44056 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-13 19:13:01 +00:00
Owen Anderson
20ab29068d Add a flag for indirect branch instructions.
Target maintainers: please check that the instructions for your target are correctly marked.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44012 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12 07:39:39 +00:00
Owen Anderson
e7e113361e Fix on 64-bit machines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44001 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12 00:56:04 +00:00
Anton Korobeynikov
f191c80cd7 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,


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43997 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-11 19:50:10 +00:00
Anton Korobeynikov
af1b61debd Add convenient helper to obtain list of ints
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43993 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-11 11:19:37 +00:00
Dale Johannesen
e3ef744d3e Add CCAssignToStackABISizeAlign for convenience in
dealing with types whose size & alignment are
different on different subtargets.  Use it for x86 f80.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43988 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10 22:07:15 +00:00
Dale Johannesen
483ec21d90 Interchange Dwarf numbers of ESP and EBP on x86 Darwin.
Much improvement in exception handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43794 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-07 00:25:05 +00:00
Neil Booth
e3d936ac9c Remove some unnecessary C-style statics.
Restore an assertion that arithmetic can be performed on this format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43638 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-02 15:10:05 +00:00
Chris Lattner
44f1476048 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 :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43290 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-24 06:25:09 +00:00
Chris Lattner
6c1ba31d6f tblgen uses dynamic_cast heavily, so it needs rtti info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43126 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-18 15:54:45 +00:00
Gordon Henriksen
774577c1f9 Reverting unnecessary commit of generated files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43095 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17 21:36:08 +00:00
Gordon Henriksen
4b2b9402c5 Switching TargetMachineRegistry to use the new generic Registry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43094 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17 21:28:48 +00:00
Hartmut Kaiser
efd4a5144b 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?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43073 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17 14:56:40 +00:00
Chris Lattner
01d029b82c 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...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42981 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-15 06:10:22 +00:00
Evan Cheng
3393f892c7 Fix typos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42896 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-12 08:39:02 +00:00
Dale Johannesen
317096ab37 Add sqrt and powi intrinsics for long double.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42423 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-28 01:08:20 +00:00
Evan Cheng
d23aa5a053 Rename keyword "modify" -> "implicit".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42282 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-25 01:48:59 +00:00
Evan Cheng
a3ca3149f2 Add CopyCost to TargetRegisterClass. This specifies the cost of copying a value
between two registers in the specific class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42123 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19 01:35:01 +00:00
Evan Cheng
30729b48d4 Bug fix and minor clean up of generated code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42069 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 22:26:41 +00:00
Chris Lattner
10814820f6 regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42036 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 17:40:48 +00:00
Dan Gohman
cb648f90a2 Remove spurious consts. This fixes warnings with compilers that
are strict about such things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41956 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 20:08:19 +00:00
Evan Cheng
85dbe1a1d2 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41897 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-12 23:30:14 +00:00
Evan Cheng
aeb7d4d760 Allow set operators with multiple destinations, i.e. (set x, y, (op a, b)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41861 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11 19:52:18 +00:00
Evan Cheng
ef61ed3507 TableGen no longer emit CopyFromReg nodes for implicit results in physical
registers. The scheduler is now responsible for emitting them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41781 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-07 23:59:02 +00:00
Evan Cheng
425e8c7eae 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41710 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-04 20:18:28 +00:00
Dan Gohman
0fee3ff93e Add MVT::fAny for overloading intrinsics on floating-point types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41128 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-16 21:57:19 +00:00
Rafael Espindola
594d37e21a propagate struct size and alignment of byval arguments to the DAG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40986 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-10 14:44:42 +00:00
Chandler Carruth
a583990ec8 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40872 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-06 20:57:16 +00:00
Chandler Carruth
6994040a95 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40807 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-04 01:51:18 +00:00
Evan Cheng
b5910820ce Added TargetInstrDescriptor::numDefs - num of results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40709 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-02 00:20:17 +00:00
Dan Gohman
f452207d20 More explicit keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40589 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-30 14:51:59 +00:00
Chuck Rose III
936baaa5ae 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40558 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-27 18:26:35 +00:00
Dan Gohman
face9e56a1 Fix a pasto in a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40527 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-26 15:11:00 +00:00
Christopher Lamb
1367fd09cb Have register info provide the inverse mapping of register->superregisters. PR1350
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40519 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-26 08:01:58 +00:00
Christopher Lamb
08d52071ba Add target independent MachineInstr's to represent subreg insert/extract in MBB's. PR1350
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40518 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-26 07:48:21 +00:00
Christopher Lamb
8245510ae0 Teach TableGen about the new vector types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40513 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-26 06:41:18 +00:00
Dan Gohman
a6a1ab3d28 A minor simplication in the generated code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40479 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-24 22:58:00 +00:00
Evan Cheng
102dc195b6 No need for noResults anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40075 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 00:21:23 +00:00
Evan Cheng
64d80e3387 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))]>;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40033 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 01:14:50 +00:00
Chris Lattner
ad8c531e20 Work around a bogus gcc 4.2 warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39993 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 04:51:57 +00:00
Dan Gohman
3bf6e183d5 Eliminate an unused parameter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39828 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-13 20:16:50 +00:00
Evan Cheng
88cc092ca5 Try committing again. Add OptionalDefOperand. Remove clobbersPred.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38498 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-10 18:05:01 +00:00
Evan Cheng
c419bd3396 ImmutablePredicateOperand is no more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37963 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06 23:23:38 +00:00
Rafael Espindola
1aa7efbd2c Add the byval attribute
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37940 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06 10:57:03 +00:00
Evan Cheng
a955939ca2 Refactor code to add initial support for OptionalDefOperand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37933 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06 01:05:26 +00:00
Evan Cheng
7774be4a74 Teach DAGISelEmitter about zero_reg.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37900 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-05 07:19:45 +00:00
Evan Cheng
8012b077dd Instructions with ImmutablePredicateOperand aren't really predicable since their predicates are fixed at isel time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37899 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-05 07:19:29 +00:00
John Criswell
e644ef7b09 Convert .cvsignore files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37801 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-29 16:35:07 +00:00
Evan Cheng
5e4f292e53 One additional field in TargetRegisterDesc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37760 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-27 17:09:34 +00:00
Evan Cheng
c4f2fe0694 Add immediate sub-registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37738 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-26 20:59:16 +00:00