Ted Kremenek
4b1b4205ed
Update CMake build.
...
llvm-svn: 100714
2010-04-07 23:05:23 +00:00
Chris Lattner
2104b8d36e
rename llvm::llvm_report_error -> llvm::report_fatal_error
...
llvm-svn: 100709
2010-04-07 22:58:41 +00:00
Chris Lattner
5109d3e55d
add newlines at end of files.
...
llvm-svn: 100706
2010-04-07 22:54:55 +00:00
Johnny Chen
85ce9f4f30
Missed this one line for the previous checkin to fix build warnings.
...
llvm-svn: 100697
2010-04-07 22:21:03 +00:00
Johnny Chen
8b04b550df
Fixed warnings pointed out by clang.
...
llvm-svn: 100696
2010-04-07 22:03:27 +00:00
Johnny Chen
80f8c3d533
Fixed warnings pointed out by clang.
...
Next to work on is ARMDisassemblerCore.cpp.
llvm-svn: 100695
2010-04-07 21:52:48 +00:00
Sean Callanan
1efe661b46
Fixed a bug where the disassembler would allow an immediate
...
argument that had to be between 0 and 7 to have any value,
firing an assert later in the AsmPrinter. Now, the
disassembler rejects instructions with out-of-range values
for that immediate.
llvm-svn: 100694
2010-04-07 21:42:19 +00:00
Johnny Chen
3f253e2cb1
Fixed 3 warnings pointed out by clang.
...
llvm-svn: 100693
2010-04-07 21:23:48 +00:00
Johnny Chen
4e2f8722c4
Re-enable ARM/Thumb disassembler and add a workaround for a memcpy() call in
...
ARMDecoderEmitter.cpp, with FIXME comment.
llvm-svn: 100690
2010-04-07 20:53:12 +00:00
Sean Callanan
643a55708f
Added an AsmLexer for the ARM target, which uses
...
a simple mapping of register names to IDs to
identify register tokens.
llvm-svn: 100685
2010-04-07 20:29:34 +00:00
Dale Johannesen
60b289709e
Educate GetInstrSizeInBytes implementations that
...
DBG_VALUE does not generate code.
llvm-svn: 100681
2010-04-07 19:51:44 +00:00
Anton Korobeynikov
6e01726eae
Remove late ARM codegen optimization pass committed by accident.
...
It is not ready for public yet.
llvm-svn: 100673
2010-04-07 18:23:27 +00:00
Anton Korobeynikov
090323aee5
Split A8/A9 itins - they already were too big.
...
llvm-svn: 100672
2010-04-07 18:22:11 +00:00
Anton Korobeynikov
32457d6c5e
Add some crude itin approximation for VFP load / stores on A9
...
llvm-svn: 100671
2010-04-07 18:22:03 +00:00
Anton Korobeynikov
d351104f19
Add some crude approximation for neon load/store instructions
...
llvm-svn: 100670
2010-04-07 18:21:58 +00:00
Anton Korobeynikov
4acfad7c1b
Add some A8-based approximation for instructions with unknown cycle times
...
llvm-svn: 100669
2010-04-07 18:21:52 +00:00
Anton Korobeynikov
4fb6a66c8f
Move NEON-VFP domain fixer upper, so post-RA scheduler would benefit from it.
...
llvm-svn: 100668
2010-04-07 18:21:46 +00:00
Anton Korobeynikov
982f0ceaf8
Since tblgen bug was fixed (thanks Jakob!) we don't need InstrStage2 hack anymore.
...
llvm-svn: 100667
2010-04-07 18:21:41 +00:00
Anton Korobeynikov
4050d69dcf
Fix A8 FP NEON MAC itins
...
llvm-svn: 100666
2010-04-07 18:21:33 +00:00
Anton Korobeynikov
9ff2f8f7a5
A9 NEON FP itins
...
llvm-svn: 100665
2010-04-07 18:21:27 +00:00
Anton Korobeynikov
03b317a286
Some permute goodness for A9
...
llvm-svn: 100664
2010-04-07 18:21:22 +00:00
Anton Korobeynikov
7ab31047a7
More shift itins for A9
...
llvm-svn: 100663
2010-04-07 18:21:16 +00:00
Anton Korobeynikov
4d36f8890f
More fixes for itins
...
llvm-svn: 100662
2010-04-07 18:21:10 +00:00
Anton Korobeynikov
ceb54d5ab0
Fix invalid itins for 32-bit varians of VMLAL and friends
...
llvm-svn: 100661
2010-04-07 18:21:04 +00:00
Anton Korobeynikov
f64c7ca5c3
Add MAC stuff for A9
...
llvm-svn: 100660
2010-04-07 18:20:58 +00:00
Anton Korobeynikov
2ef0a12fa1
Fix invalid NEON MAC itins on A8
...
llvm-svn: 100659
2010-04-07 18:20:53 +00:00
Anton Korobeynikov
5e208dc21b
Fix itins for VPAL
...
llvm-svn: 100658
2010-04-07 18:20:47 +00:00
Anton Korobeynikov
a248becd6c
Fix itins for VABA
...
llvm-svn: 100657
2010-04-07 18:20:42 +00:00
Anton Korobeynikov
a3e4989ad8
Correct VMVN itinerary: operand is read in the second cycle, not in the first.
...
llvm-svn: 100656
2010-04-07 18:20:36 +00:00
Anton Korobeynikov
140a65ce0b
More A9 itineraries
...
llvm-svn: 100655
2010-04-07 18:20:29 +00:00
Anton Korobeynikov
1a1af5a830
Correct itinerary class for VPADD
...
llvm-svn: 100654
2010-04-07 18:20:24 +00:00
Anton Korobeynikov
4650fd5fc6
VP{MAX, MIN} are of IIC_VSUBi4D itin class as well.
...
llvm-svn: 100653
2010-04-07 18:20:18 +00:00
Anton Korobeynikov
7d4fad5942
VHADD differs from VHSUB at least on A9 - the former reads both operands in the second cycle, while the latter reads second operand in first cycle. Introduce new itin classes to catch this behavior. Whether this is true for A8 as well is WIP.
...
llvm-svn: 100652
2010-04-07 18:20:13 +00:00
Anton Korobeynikov
2cba05bbe1
Some easy NEON scheduling goodness for A9
...
llvm-svn: 100651
2010-04-07 18:20:07 +00:00
Anton Korobeynikov
2063705d91
Define new itin classes for ARM <-> VFP reg moves to distinguish from NEON ops. Define proper scheduling itinerary for them on A9. A8 TRM does not specify latency for them at all :(
...
llvm-svn: 100650
2010-04-07 18:20:02 +00:00
Anton Korobeynikov
c1e7a6feac
FCONST{S,D} behaves the same way as FP unary instructions. This is true for both A8 and A9.
...
llvm-svn: 100649
2010-04-07 18:19:56 +00:00
Anton Korobeynikov
dad973334b
Proper cycle times for locks, since wbck latency can be larger than fwd latency.
...
llvm-svn: 100648
2010-04-07 18:19:51 +00:00
Anton Korobeynikov
4c1da0f82a
Add new itin classes for FP16 <-> FP32 conversions and make uise of them for A9.
...
llvm-svn: 100647
2010-04-07 18:19:46 +00:00
Anton Korobeynikov
baeb210be7
Make use of new reserved/required scheduling stuff: introduce VFP and NEON locks to model domain cross stalls precisly.
...
llvm-svn: 100646
2010-04-07 18:19:40 +00:00
Anton Korobeynikov
15ccae2a46
Some bits of A9 scheduling: VFP
...
llvm-svn: 100643
2010-04-07 18:19:18 +00:00
Anton Korobeynikov
10fc6e9650
Separate const from non-const stuff during mergeing
...
llvm-svn: 100642
2010-04-07 18:19:13 +00:00
Anton Korobeynikov
0453de0133
Some initial version of global merger
...
llvm-svn: 100641
2010-04-07 18:19:07 +00:00
Sanjiv Gupta
dd1c82141c
Fix memory leaks for external symbol name strings.
...
llvm-svn: 100601
2010-04-07 03:36:01 +00:00
John McCall
6ac5cc973c
Clean up some signedness oddities in this code noticed by clang.
...
llvm-svn: 100599
2010-04-07 01:49:15 +00:00
Dale Johannesen
5d7f0a0fdd
Move printing of target-indepedent DEBUG_VALUE comments
...
into AsmPrinter. Target-dependent form is still generated
by FastISel and still handled in X86 code.
llvm-svn: 100596
2010-04-07 01:15:14 +00:00
John McCall
796583eec0
Fix a number of clang -Wsign-compare warnings that didn't have an obvious
...
solution. The only reason these don't fire with gcc-4.2 is that gcc turns off
part of -Wsign-compare in C++ on accident.
llvm-svn: 100581
2010-04-06 23:35:53 +00:00
Dale Johannesen
b36c70913b
Revert 100573, it's causing some testsuite problems.
...
llvm-svn: 100578
2010-04-06 22:45:26 +00:00
Dale Johannesen
85b35b6214
Move printing of DEBUG_VALUE comments to target-independent place.
...
There is probably a more elegant way to do this.
llvm-svn: 100573
2010-04-06 22:21:07 +00:00
Bob Wilson
5202269dc4
Expand SELECT and SELECT_CC for NEON vector types.
...
Radar 7770501.
llvm-svn: 100568
2010-04-06 22:02:24 +00:00
Jim Grosbach
4dac890600
Fix PR6696 and PR6663
...
When a frame pointer is not otherwise required, and dynamic stack alignment
is necessary solely due to the spilling of a register with larger alignment
requirements than the default stack alignment, the frame pointer can be both
used as a general purpose register and a frame pointer. That goes poorly, for
obvious reasons. This patch brings back a bit of old logic for identifying
the use of such registers and conservatively reserves the frame pointer
during register allocation in such cases.
For now, implement for X86 only since it's 32-bit linux which is hitting this,
and we want a targeted fix for 2.7. As a follow-on, this will be expanded
to handle other targets, as theoretically the problem could arise elsewhere
as well.
llvm-svn: 100559
2010-04-06 20:26:37 +00:00