Jim Grosbach
53796945f5
Switch the fixed-length disassembler to be table-driven.
...
Refactor the TableGen'erated fixed length disassemblmer to use a
table-driven state machine rather than a massive set of nested
switch() statements.
As a result, the ARM Disassembler (ARMDisassembler.cpp) builds much more
quickly and generates a smaller end result. For a Release+Asserts build on
a 16GB 3.4GHz i7 iMac w/ SSD:
Time to compile at -O2 (averaged w/ hot caches):
Previous: 35.5s
New: 8.9s
TEXT size:
Previous: 447,251
New: 297,661
Builds in 25% of the time previously required and generates code 66% of
the size.
Execution time of the disassembler is only slightly slower (7% disassembling
10 million ARM instructions, 19.6s vs 21.0s). The new implementation has
not yet been tuned, however, so the performance should almost certainly
be recoverable should it become a concern.
llvm-svn: 161888
2012-08-14 19:06:05 +00:00
Owen Anderson
0db4c468c5
Fix the construction of the magic constant for roundToIntegral to be 64-bit safe. Fixes c-torture/execute/990826-0.c
...
llvm-svn: 161885
2012-08-14 18:51:15 +00:00
David Blaikie
b5970fe958
Fix the make update target to work even when sub repo repositories are ignored.
...
llvm-svn: 161883
2012-08-14 18:33:50 +00:00
Daniel Dunbar
5d874acfe7
Update configure.
...
llvm-svn: 161881
2012-08-14 18:14:22 +00:00
Daniel Dunbar
669882bdc7
[configure] Add a --enable-keep-symbols configure flag.
...
llvm-svn: 161880
2012-08-14 18:14:20 +00:00
Kostya Serebryany
5e3fbb5b34
[asan] insert crash basic blocks inline as opposed to inserting them at the end of the function. This doesn't seem to fix or break anything, but is considered to be more friendly to downstream passes (test change)
...
llvm-svn: 161871
2012-08-14 14:05:50 +00:00
Kostya Serebryany
06dbe5559a
[asan] insert crash basic blocks inline as opposed to inserting them at the end of the function. This doesn't seem to fix or break anything, but is considered to be more friendly to downstream passes
...
llvm-svn: 161870
2012-08-14 14:04:51 +00:00
Craig Topper
e7ac4d1df1
Factor duplicate calls to getUNDEF in several functions.
...
llvm-svn: 161860
2012-08-14 08:18:43 +00:00
Craig Topper
a3795f6791
Re-factor intrinsic lowering to combine common parts of similar intrinsics. Reduces compiled code size a little bit.
...
llvm-svn: 161859
2012-08-14 07:43:25 +00:00
Craig Topper
6a2fe056ce
Change greater than to greater than or equal so that an identical sized store to the same offset is treated as completing overwriting.
...
llvm-svn: 161857
2012-08-14 07:32:05 +00:00
Richard Smith
2e1fc547c0
Fix undefined behavior: binding null pointer to reference. No functionality change.
...
llvm-svn: 161853
2012-08-14 05:31:26 +00:00
Nadav Rotem
eb22b069bb
During the CodeGenPrepare we often lower intrinsics (such as objsize)
...
and allow some optimizations to turn conditional branches into unconditional.
This commit adds a simple control-flow optimization which merges two consecutive
basic blocks which are connected by a single edge. This allows the codegen to
operate on larger basic blocks.
rdar://11973998
llvm-svn: 161852
2012-08-14 05:19:07 +00:00
Eric Christopher
36e95a157c
Grammar.
...
llvm-svn: 161851
2012-08-14 05:13:29 +00:00
Richard Smith
937a1cfdad
Avoid undefined behavior in DenseMap::shrink_and_clear(). Log2_32_Ceil(0)
...
returns 32. This change mirrors the corresponding code in
SmallDenseMap::shrink_and_clear().
llvm-svn: 161829
2012-08-14 02:56:51 +00:00
Eric Christopher
65f6159be4
Typo.
...
llvm-svn: 161826
2012-08-14 01:09:10 +00:00
NAKAMURA Takumi
79503bef02
llvm/test/CodeGen/ARM/floorf.ll: Add explicit -mtriple=arm-unknown-unknown, or it fails on msvc.
...
llvm-svn: 161825
2012-08-14 00:56:06 +00:00
Owen Anderson
c5b77c0317
Add a roundToIntegral method to APFloat, which can be parameterized over various rounding modes. Use this to implement SelectionDAG constant folding of FFLOOR, FCEIL, and FTRUNC.
...
llvm-svn: 161807
2012-08-13 23:32:49 +00:00
Jakob Stoklund Olesen
f49206c2fd
Transfer weights in transferSuccessorsAndUpdatePHIs().
...
llvm-svn: 161805
2012-08-13 23:13:25 +00:00
Jakob Stoklund Olesen
d25a03b9af
Print out MachineBasicBlock successor weights when available.
...
llvm-svn: 161804
2012-08-13 23:13:23 +00:00
Nadav Rotem
a921b121e2
LICM uses AliasSet information to hoist and sink instructions. However, other passes, such as LoopRotate
...
may invalidate its AliasSet because SSAUpdater does not update the AliasSet properly.
This patch teaches SSAUpdater to notify AliasSet that it made changes.
The testcase in PR12901 is too big to be useful and I could not reduce it to a normal size.
rdar://11872059 PR12901
llvm-svn: 161803
2012-08-13 23:06:54 +00:00
Nadav Rotem
685bd842e2
MemoryDependenceAnalysis attempts to find the first memory dependency for function calls.
...
Currently, if GetLocation reports that it did not find a valid pointer (this is the case for volatile load/stores),
we ignore the result. This patch adds code to handle the cases where we did not obtain a valid pointer.
rdar://11872864 PR12899
llvm-svn: 161802
2012-08-13 23:03:43 +00:00
Jim Grosbach
85041a05e0
ARM: Move Thumb2 tests to Thumb2 test file and fix CHECK lines.
...
These tests weren't actually being run before (missing ':' after CHECK).
llvm-svn: 161800
2012-08-13 22:25:44 +00:00
Jakob Stoklund Olesen
33e364a3df
Remove the TII::scheduleTwoAddrSource() hook.
...
It never does anything when running 'make check', and it get's in the
way of updating live intervals in 2-addr.
The hook was originally added to help form IT blocks in Thumb2 code
before register allocation, but the pass ordering has changed since
then, and we run if-conversion after register allocation now.
When the MI scheduler is enabled, there will be no less than two
schedulers between 2-addr and Thumb2ITBlockPass, so this hook is
unlikely to help anything.
llvm-svn: 161794
2012-08-13 21:52:57 +00:00
Bill Wendling
9cd2a5dbb9
Rename test since it's not linux-specific.
...
llvm-svn: 161792
2012-08-13 21:32:42 +00:00
Manman Ren
159ae3b3bc
ARM: enable struct byval for AAPCS-VFP.
...
This change is to be enabled in clang.
rdar://9877866
llvm-svn: 161789
2012-08-13 21:22:50 +00:00
Bill Wendling
59b0b53089
Whitespace cleanup.
...
llvm-svn: 161788
2012-08-13 21:20:43 +00:00
Jakob Stoklund Olesen
343ed1017e
Count triangles and diamonds in early if-conversion.
...
llvm-svn: 161783
2012-08-13 21:03:27 +00:00
Jakob Stoklund Olesen
0e46305efe
Delete dead typedef.
...
llvm-svn: 161782
2012-08-13 21:03:25 +00:00
Jakob Stoklund Olesen
8e6595639e
Handle extra Tail predecessors in if-conversion.
...
It is still possible to if-convert if the tail block has extra
predecessors, but the tail phis must be rewritten instead of being
removed.
llvm-svn: 161781
2012-08-13 20:49:04 +00:00
Arnold Schwaighofer
dbdb2581b8
[Hexagon] Don't mark callee saved registers as clobbered by a tail call
...
This was causing unnecessary spills/restores of callee saved registers.
Fixes PR13572.
Patch by Pranav Bhandarkar!
llvm-svn: 161778
2012-08-13 19:54:01 +00:00
Manman Ren
ead7af5ec0
Fix failure on Atom bot due to r161769
...
llvm-svn: 161777
2012-08-13 19:34:29 +00:00
Nadav Rotem
03c4d5f036
Do not optimize (or (and X,Y), Z) into BFI and other sequences if the AND ISDNode has more than one user.
...
rdar://11876519
llvm-svn: 161775
2012-08-13 18:52:44 +00:00
Manman Ren
cb05c49c64
X86: move Int_CVTSD2SSrr, Int_CVTSI2SSrr, Int_CVTSI2SDrr, Int_CVTSS2SDrr from
...
OpTbl1 to OpTbl2 since they have 3 operands and the last operand can be changed
to a memory operand.
PR13576
llvm-svn: 161769
2012-08-13 18:29:41 +00:00
Eric Christopher
3aea549423
Add support for the %H output modifier.
...
Patch by Weiming Zhao.
llvm-svn: 161768
2012-08-13 18:18:52 +00:00
Manman Ren
c9f5387a5c
X86: when auto-detecting the subtarget features, make sure use IsIntel to detect
...
Nehalem, Westmere and Sandy Bridge. AMD also has processor family 6.
llvm-svn: 161763
2012-08-13 17:26:46 +00:00
Nadav Rotem
6af514e437
Fix a documentation typo.
...
llvm-svn: 161758
2012-08-13 15:29:53 +00:00
Kostya Serebryany
61dd5ba233
[asan] remove the code for --asan-merge-callbacks as it appears to be a bad idea. (partly related to Bug 13225)
...
llvm-svn: 161757
2012-08-13 14:08:46 +00:00
Alexander Kornienko
1665252b4b
Added test for non-static use of cl::opt (fixed in r160170)
...
llvm-svn: 161751
2012-08-13 10:43:36 +00:00
Tim Northover
7acf444c11
Add test for previous commit correcting NEON load patterns.
...
llvm-svn: 161750
2012-08-13 10:38:45 +00:00
Tim Northover
b1f8be6cbe
Use correct loads for vector types during extending-load operations.
...
Previously, we used VLD1.32 in all cases, however there are both 16 and 64-bit
accesses being selected, so we need to use an appropriate width load in those
cases.
llvm-svn: 161748
2012-08-13 09:06:31 +00:00
Craig Topper
4fc08044be
Tidy up VSETCC lowering code a bit more by adding an llvm_unreachable and putting an a couple if conditions in a better order.
...
llvm-svn: 161746
2012-08-13 03:42:38 +00:00
Craig Topper
a438ea46bf
Refactor code a bit to share commonalities. No functional change intended.
...
llvm-svn: 161745
2012-08-13 02:34:03 +00:00
Craig Topper
bb92d94049
Fix an unused variable warning from r161742.
...
llvm-svn: 161743
2012-08-13 01:26:45 +00:00
Craig Topper
1032fcf6da
Remove the LowerMMXCONCAT_VECTORS function. It could never execute because there are no legal 64-bit vector types that could be used as inputs to a 128-bit concat_vectors. Remove a target specific SDNode and its patterns that become unused as a result.
...
llvm-svn: 161742
2012-08-13 01:23:55 +00:00
Nick Lewycky
6dbd265685
Give this test an explicit triple.
...
llvm-svn: 161740
2012-08-12 08:21:27 +00:00
Nick Lewycky
5178e4f814
When emitting the PC range in an FDE, use the same data encoding for both ends
...
of the range. Fixes PR13581!
llvm-svn: 161739
2012-08-12 08:09:45 +00:00
Craig Topper
5a5ed2d691
Remove call to setOperationAction for SETCC of v4f32. SETCC returns an integer type not an FP type.
...
llvm-svn: 161738
2012-08-12 05:31:32 +00:00
Craig Topper
1292e1f43c
Remove unnecessary call to setOperationAction for SETCC of v2i64 under SSE42. It was already called for the same under SSE2.
...
llvm-svn: 161737
2012-08-12 05:15:16 +00:00
Arnold Schwaighofer
c751a25aed
Revert 161581: Patch to implement UMLAL/SMLAL instructions for the ARM
...
architecture
It broke MultiSource/Applications/JM/ldecod/ldecod on armv7 thumb O0 g and armv7
thumb O3.
llvm-svn: 161736
2012-08-12 05:11:56 +00:00
Craig Topper
4d9cbceefd
Change addTypeForNeon to use MVT instead of EVT so all the calls to getSimpleVT can be removed.
...
llvm-svn: 161735
2012-08-12 03:16:37 +00:00