Anton Korobeynikov
7d6384b376
Add some crude itin approximation for VFP load / stores on A9
...
llvm-svn: 100671
2010-04-07 18:22:03 +00:00
Anton Korobeynikov
f2a19a64d1
Add some crude approximation for neon load/store instructions
...
llvm-svn: 100670
2010-04-07 18:21:58 +00:00
Anton Korobeynikov
1bd6022529
Add some A8-based approximation for instructions with unknown cycle times
...
llvm-svn: 100669
2010-04-07 18:21:52 +00:00
Anton Korobeynikov
51d00a7f48
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
0401f43ddc
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
cdb0066e5f
Fix A8 FP NEON MAC itins
...
llvm-svn: 100666
2010-04-07 18:21:33 +00:00
Anton Korobeynikov
a63bb55ad7
A9 NEON FP itins
...
llvm-svn: 100665
2010-04-07 18:21:27 +00:00
Anton Korobeynikov
d2770462d1
Some permute goodness for A9
...
llvm-svn: 100664
2010-04-07 18:21:22 +00:00
Anton Korobeynikov
4eb354a908
More shift itins for A9
...
llvm-svn: 100663
2010-04-07 18:21:16 +00:00
Anton Korobeynikov
f9463f5b98
More fixes for itins
...
llvm-svn: 100662
2010-04-07 18:21:10 +00:00
Anton Korobeynikov
0c3bc7a9ce
Fix invalid itins for 32-bit varians of VMLAL and friends
...
llvm-svn: 100661
2010-04-07 18:21:04 +00:00
Anton Korobeynikov
103c4e9803
Add MAC stuff for A9
...
llvm-svn: 100660
2010-04-07 18:20:58 +00:00
Anton Korobeynikov
bca57ef16b
Fix invalid NEON MAC itins on A8
...
llvm-svn: 100659
2010-04-07 18:20:53 +00:00
Anton Korobeynikov
dce0e2a918
Fix itins for VPAL
...
llvm-svn: 100658
2010-04-07 18:20:47 +00:00
Anton Korobeynikov
be68ff5b2c
Fix itins for VABA
...
llvm-svn: 100657
2010-04-07 18:20:42 +00:00
Anton Korobeynikov
fbc58bba2f
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
2abd52b692
More A9 itineraries
...
llvm-svn: 100655
2010-04-07 18:20:29 +00:00
Anton Korobeynikov
13df6eaf1c
Correct itinerary class for VPADD
...
llvm-svn: 100654
2010-04-07 18:20:24 +00:00
Anton Korobeynikov
982f9a042b
VP{MAX, MIN} are of IIC_VSUBi4D itin class as well.
...
llvm-svn: 100653
2010-04-07 18:20:18 +00:00
Anton Korobeynikov
058984f2a8
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
e8688b87a4
Some easy NEON scheduling goodness for A9
...
llvm-svn: 100651
2010-04-07 18:20:07 +00:00
Anton Korobeynikov
7339733c80
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
5ab38590b2
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
7c19b34d69
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
5954edc79b
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
b68aa8b5ab
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
f93145e685
Initial support for different kinds of FU reservation.
...
llvm-svn: 100645
2010-04-07 18:19:32 +00:00
Anton Korobeynikov
bf7bbe3e94
Factor out scoreboard into separate class. This way we might have several different score boards.
...
llvm-svn: 100644
2010-04-07 18:19:24 +00:00
Anton Korobeynikov
7a3b393469
Some bits of A9 scheduling: VFP
...
llvm-svn: 100643
2010-04-07 18:19:18 +00:00
Anton Korobeynikov
a2b6818832
Separate const from non-const stuff during mergeing
...
llvm-svn: 100642
2010-04-07 18:19:13 +00:00
Anton Korobeynikov
aa8b0d11a5
Some initial version of global merger
...
llvm-svn: 100641
2010-04-07 18:19:07 +00:00
Anton Korobeynikov
d873a16430
Add hook to insert late LLVM=>LLVM passes just before isel
...
llvm-svn: 100640
2010-04-07 18:18:42 +00:00
Chris Lattner
f520500a06
fix 80 col violation, patch by Alastair Lynn
...
llvm-svn: 100639
2010-04-07 18:13:33 +00:00
Chris Lattner
7816ae8fd0
add a comment line that got dropped
...
llvm-svn: 100638
2010-04-07 18:10:38 +00:00
Chris Lattner
367cbc160c
this has a pr!
...
llvm-svn: 100637
2010-04-07 18:04:56 +00:00
Chris Lattner
60e5f55565
fix a latent bug my inline asm stuff exposed:
...
MachineOperand::isIdenticalTo wasn't handling metadata operands.
llvm-svn: 100636
2010-04-07 18:03:19 +00:00
Benjamin Kramer
389c863692
Remove unused method.
...
llvm-svn: 100620
2010-04-07 11:23:46 +00:00
Torok Edwin
9028487b8b
Workaround the breakage in r100616 by guarding all timers with
...
TimePassesIsEnabled. This should allow make check to pass.
llvm-svn: 100618
2010-04-07 10:44:46 +00:00
Bill Wendling
8282504a14
Use the "NamedGroupTimer" class to categorize DWARF emission better.
...
llvm-svn: 100616
2010-04-07 09:28:04 +00:00
Benjamin Kramer
663f265996
Use raw_ostream.
...
llvm-svn: 100615
2010-04-07 09:26:51 +00:00
Sanjiv Gupta
b3557c497a
Remove XFAIL for vg_leak as the leaks are fixed by 100601.
...
llvm-svn: 100612
2010-04-07 07:06:48 +00:00
Mon P Wang
59f3cab93b
Update langref for memcpy, memmove, and memset
...
llvm-svn: 100611
2010-04-07 06:35:53 +00:00
Evan Cheng
0f71b51991
Add comments for missed opportunities.
...
llvm-svn: 100610
2010-04-07 06:00:33 +00:00
Evan Cheng
eb32efa3b6
Fix typo.
...
llvm-svn: 100609
2010-04-07 05:59:12 +00:00
Chris Lattner
122572e13a
Have the inst emitter add the !srcloc mdnode to the machine instr.
...
Have the asmprinter use the mdnode to scavenge a source location if
present. Document this nonsense in langref.
llvm-svn: 100607
2010-04-07 05:38:05 +00:00
Chris Lattner
2bf164dbf2
remove another magic number.
...
llvm-svn: 100606
2010-04-07 05:27:36 +00:00
Chris Lattner
dde7376e9d
Three changes:
...
1. Introduce some enums and accessors in the InlineAsm class
that eliminate a ton of magic numbers when handling inline
asm SDNode.
2. Add a new MDNodeSDNode selection dag node type that holds
a MDNode (shocking!)
3. Add a new argument to ISD::INLINEASM nodes that hold !srcloc
metadata, propagating it to the instruction emitter, which
drops it.
No functionality change.
llvm-svn: 100605
2010-04-07 05:20:54 +00:00
Chris Lattner
0f513e1c22
fix a crash on invalid metadata, e.g.: call i32 @foo(), XXXX
...
We would return the error without inserting the new instruction
into the program, so it wouldn't get deallocated, and an abort
would trigger when the module was deleted.
llvm-svn: 100602
2010-04-07 04:08:57 +00:00
Sanjiv Gupta
3d39bd26c3
Fix memory leaks for external symbol name strings.
...
llvm-svn: 100601
2010-04-07 03:36:01 +00:00
John McCall
a28e38ca2f
Clean up some signedness oddities in this code noticed by clang.
...
llvm-svn: 100599
2010-04-07 01:49:15 +00:00