Commit Graph

23177 Commits

Author SHA1 Message Date
Chris Lattner 0d443dc91d Store VRBase in a map, not in NodeInfo.
llvm-svn: 26685
2006-03-10 07:24:45 +00:00
Chris Lattner c48cfba44b no need to build groups anymore
llvm-svn: 26684
2006-03-10 07:15:58 +00:00
Chris Lattner 6f82fe8106 Create SUnits directly from the SelectionDAG.
llvm-svn: 26683
2006-03-10 07:13:32 +00:00
Chris Lattner 2f8c7c3d55 Push PrepareNodeInfo/IdentifyGroups down the inheritance hierarchy
llvm-svn: 26682
2006-03-10 06:34:51 +00:00
Chris Lattner 243f7dc0a0 make some methods protected instead of private
llvm-svn: 26681
2006-03-10 06:30:11 +00:00
Chris Lattner 349e9ddccc Teach the latency scheduler some new tricks. In particular, to break ties,
keep track of a sense of "mobility", i.e. how many other nodes scheduling one
node will free up.  For something like this:

float testadd(float *X, float *Y, float *Z, float *W, float *V) {
  return (*X+*Y)*(*Z+*W)+*V;
}

For example, this makes us schedule *X then *Y, not *X then *Z.  The former
allows us to issue the add, the later only lets us issue other loads.

This turns the above code from this:

_testadd:
        lfs f0, 0(r3)
        lfs f1, 0(r6)
        lfs f2, 0(r4)
        lfs f3, 0(r5)
        fadds f0, f0, f2
        fadds f1, f3, f1
        lfs f2, 0(r7)
        fmadds f1, f0, f1, f2
        blr

into this:

_testadd:
        lfs f0, 0(r6)
        lfs f1, 0(r5)
        fadds f0, f1, f0
        lfs f1, 0(r4)
        lfs f2, 0(r3)
        fadds f1, f2, f1
        lfs f2, 0(r7)
        fmadds f1, f1, f0, f2
        blr

llvm-svn: 26680
2006-03-10 05:51:05 +00:00
Jeff Cohen 22841aaadb Put intrinsics.gen in its proper place.
llvm-svn: 26679
2006-03-10 04:36:01 +00:00
Chris Lattner 25e2556b71 add an aggregate method for reinserting scheduled nodes, add a callback for
priority impls that want to be notified when a node is scheduled

llvm-svn: 26678
2006-03-10 04:32:49 +00:00
Chris Lattner 5353e35ac8 Fix an incorrect intrinsic description
llvm-svn: 26677
2006-03-10 04:17:06 +00:00
Jeff Cohen 6ce97687f7 Fix VC++ build breakage.
llvm-svn: 26676
2006-03-10 03:57:45 +00:00
Chris Lattner dfea29e2c5 Adding an intrinsic is simpler still.
llvm-svn: 26674
2006-03-09 22:38:42 +00:00
Chris Lattner 60f6833376 use autogenerated side-effect information
llvm-svn: 26673
2006-03-09 22:38:10 +00:00
Chris Lattner e3c2db3955 generate side-effect info
llvm-svn: 26672
2006-03-09 22:37:52 +00:00
Chris Lattner 02d2a6bf66 Simpler still
llvm-svn: 26671
2006-03-09 22:32:16 +00:00
Chris Lattner bb40a9fa58 Use autogenerated mod/ref info for intrinsics.
llvm-svn: 26670
2006-03-09 22:31:29 +00:00
Chris Lattner 06c7300bf1 Parse mod/ref properties, autogen mod/ref information
llvm-svn: 26669
2006-03-09 22:30:49 +00:00
Chris Lattner a0a2e0b25e Intrinsic adding is a little bit simpler now
llvm-svn: 26668
2006-03-09 22:07:39 +00:00
Chris Lattner 591693f3bf Use the autogenerated intrinsic verifier
llvm-svn: 26667
2006-03-09 22:06:04 +00:00
Chris Lattner 6efe863a70 parse intrinsic types
autogenerate an intrinsic verifier

llvm-svn: 26666
2006-03-09 22:05:04 +00:00
Evan Cheng 306c13a8fb Add option -enable-x86-lsr to enable x86 loop strength reduction pass.
llvm-svn: 26665
2006-03-09 21:51:28 +00:00
Chris Lattner ff4d4ee163 Use the function name matcher autogenerated from the .td file.
llvm-svn: 26664
2006-03-09 20:35:01 +00:00
Chris Lattner 6d8104efd2 autogenerate the function name recognizer
llvm-svn: 26663
2006-03-09 20:34:19 +00:00
Chris Lattner 285c95d7eb This rule also depends on tblgen
llvm-svn: 26662
2006-03-09 20:29:41 +00:00
Chris Lattner f136299635 add a note
llvm-svn: 26661
2006-03-09 20:13:21 +00:00
Chris Lattner 9f57681474 use the enum list autogen'd from Intrinsics.td
llvm-svn: 26660
2006-03-09 20:03:31 +00:00
Chris Lattner 213209a248 remove dbg_declare, it's not used yet.
llvm-svn: 26659
2006-03-09 20:02:42 +00:00
Chris Lattner ea0aa2868f silly case insensitive file systems...
llvm-svn: 26658
2006-03-09 19:55:06 +00:00
Chris Lattner 83e6e19936 Build intrinsics.gen from intrinsics.td
llvm-svn: 26657
2006-03-09 19:53:27 +00:00
Evan Cheng bee0b5b83e Add a test case for (store (op (load ..) ..) ..) folding.
llvm-svn: 26656
2006-03-09 19:04:30 +00:00
Chris Lattner f133c26a0b Update these tests (which use autoupgrade) to run constprop and check
that the file parses.

llvm-svn: 26655
2006-03-09 18:43:07 +00:00
Chris Lattner ab8d2ba046 autoupgrade memcpy/memmove/memset with signed counts.
CVS: ----------------------------------------------------------------------

llvm-svn: 26654
2006-03-09 18:42:10 +00:00
Andrew Lenharth 43e569c95f these are copies too
llvm-svn: 26653
2006-03-09 18:18:51 +00:00
Chris Lattner 7e7dccd3ab remove some now-dead code
llvm-svn: 26652
2006-03-09 18:07:49 +00:00
Andrew Lenharth 70236fc12f fcopysign for mixed mode
llvm-svn: 26651
2006-03-09 17:56:33 +00:00
Chris Lattner f0fc6bbaf3 back out my previous hack
llvm-svn: 26650
2006-03-09 17:48:46 +00:00
Andrew Lenharth ebfd94fa1d relax fcopysign
llvm-svn: 26649
2006-03-09 17:47:22 +00:00
Andrew Lenharth 4a87e7d9a3 alpha and llvm have different oppinions on which arg is the sign bit
llvm-svn: 26647
2006-03-09 17:41:50 +00:00
Chris Lattner c6c9e65301 remove temporary option
llvm-svn: 26646
2006-03-09 17:31:22 +00:00
Jim Laskey 93d079d757 Forgot this on last check in.
llvm-svn: 26645
2006-03-09 17:30:53 +00:00
Andrew Lenharth 16b96d2cb4 Alpha Scheduling classes
llvm-svn: 26643
2006-03-09 17:16:45 +00:00
Chris Lattner c44be2c4ef temporary hack to get the build working again, apparently a header
commit was forgotten

llvm-svn: 26642
2006-03-09 17:11:08 +00:00
Andrew Lenharth ed7a293b44 fcopysign and get rid of dsnode cruft. custom PA runtimes make this better in some senses
llvm-svn: 26641
2006-03-09 14:58:25 +00:00
Andrew Lenharth b8a06a7c6c fcopysign support
llvm-svn: 26640
2006-03-09 14:57:36 +00:00
Jim Laskey 4b0e1d9e6c Move bit field endianness to backend.
llvm-svn: 26639
2006-03-09 13:28:47 +00:00
Evan Cheng c47620b5d8 Temporary hack to enable more (store (op (load ...))) folding. This makes
it possible when a TokenFactor is between the load and store. But is still
missing some cases due to ordering issue.

llvm-svn: 26638
2006-03-09 08:19:11 +00:00
Chris Lattner d17d77aa1d yes yes, enabled debug output is bad
llvm-svn: 26637
2006-03-09 07:39:25 +00:00
Chris Lattner 6398c13128 switch the t-d scheduler to use a really dumb and trivial critical path
latency priority function.

llvm-svn: 26636
2006-03-09 07:38:27 +00:00
Chris Lattner d4130375c0 Pull latency information for target instructions out of the latency tables. :)
Only enable this with -use-sched-latencies, I'll enable it by default with a
clean nightly tester run tonight.

PPC is the only target that provides latency info currently.

llvm-svn: 26634
2006-03-09 07:15:18 +00:00
Chris Lattner da6aafeef4 don't copy all itinerary data
llvm-svn: 26633
2006-03-09 07:13:00 +00:00
Chris Lattner 399bee27f0 PriorityQueue is an instance var, use it.
llvm-svn: 26632
2006-03-09 06:48:37 +00:00
Chris Lattner 9e95accf4e add some comments
llvm-svn: 26631
2006-03-09 06:37:29 +00:00
Chris Lattner 9df647539d Refactor the priority mechanism one step further: now that it is a separate
class, sever its implementation from the interface.  Now we can provide new
implementations of the same interface (priority computation) without touching
the scheduler itself.

llvm-svn: 26630
2006-03-09 06:35:14 +00:00
Chris Lattner c683a7232b Make the new and old front-ends more similar: now neither uses __main.
llvm-svn: 26629
2006-03-09 06:16:28 +00:00
Chris Lattner e363fdf318 Add support for 'special' llvm globals like debug info and static ctors/dtors.
llvm-svn: 26628
2006-03-09 06:14:35 +00:00
Chris Lattner 6b7847a5bc fix a pasto
llvm-svn: 26627
2006-03-09 06:09:41 +00:00
Chris Lattner 5b59d7cb11 Use $(Verb) instead of @ so that VERBOSE=1 will print these.
llvm-svn: 26626
2006-03-09 06:00:05 +00:00
Chris Lattner 920e661e50 a couple of miscellaneous things.
llvm-svn: 26625
2006-03-09 01:39:46 +00:00
Chris Lattner fdb533a1f6 Fix a really annoying bug in bugpoint that made reducing C++ testcases
almost impossible with the new CFE.  It now guarantees that the static
ctor/dtor list is correctly split between the modules.

llvm-svn: 26624
2006-03-08 23:55:38 +00:00
Chris Lattner fd9bf36070 Automatically pass -emit-llvm to llvmgcc when using %llvmgcc
llvm-svn: 26623
2006-03-08 22:32:20 +00:00
Chris Lattner 78b4fc15bb Pass -emit-llvm automatically to %llvmgcc and %llvmg++ to fix regression
tests with the new f.e.

llvm-svn: 26622
2006-03-08 22:28:19 +00:00
Jim Laskey 8f0a95f664 Add #line support for CBE.
llvm-svn: 26621
2006-03-08 19:31:15 +00:00
Chris Lattner d0eb1d12d2 Fit to 80 columns.
Add support for running static ctor/dtors that aren't handled by __main.
This fixes programs with the JIT and the new CFE, such as HBD.

llvm-svn: 26620
2006-03-08 18:43:36 +00:00
Chris Lattner faae50b66b Add a helper method for running static ctors/dtors in the module.
llvm-svn: 26619
2006-03-08 18:42:46 +00:00
Chris Lattner 48a8e09ad0 add a new helper method.
llvm-svn: 26618
2006-03-08 18:39:13 +00:00
Chris Lattner 3584fd7375 add a new helper method
llvm-svn: 26617
2006-03-08 18:38:51 +00:00
Jim Laskey 2698f0de7a Get rid of the multiple copies of getStringValue. Now a Constant:: method.
llvm-svn: 26616
2006-03-08 18:11:07 +00:00
Duraid Madina 5005b01c20 doo de doo
llvm-svn: 26614
2006-03-08 06:18:46 +00:00
Chris Lattner fd22d42945 Split the priority function computation and priority queue management out
of the ScheduleDAGList class into a new SchedulingPriorityQueue class.

llvm-svn: 26613
2006-03-08 05:18:27 +00:00
Chris Lattner 42e2026cb0 switch from an explicitly managed list of SUnits to a simple vector of sunits
llvm-svn: 26612
2006-03-08 04:54:34 +00:00
Chris Lattner 12c6d89204 Shrinkify some fields, fit to 80 columns
llvm-svn: 26611
2006-03-08 04:41:06 +00:00
Chris Lattner 3fe975b846 revert the previous patch, didn't mean to check it in yet
llvm-svn: 26610
2006-03-08 04:39:05 +00:00
Chris Lattner af5e26c980 remove "Slot", it is dead
llvm-svn: 26609
2006-03-08 04:37:58 +00:00
Chris Lattner 543832d39d Change the interface for getting a target HazardRecognizer to be more clean.
llvm-svn: 26608
2006-03-08 04:25:59 +00:00
Jim Laskey 2370265550 libstdc++-v3 was failing to build. Needed to handle composite types with empty
members (running into a zero initializer.)

llvm-svn: 26607
2006-03-08 02:07:02 +00:00
Chris Lattner fc34f8bb48 Fix a miscompilation of 188.ammp with the new CFE. 188.ammp is accessing
arrays out of range in a horrible way, but we shouldn't break it anyway.
Details in the comments.

llvm-svn: 26606
2006-03-08 01:05:29 +00:00
Chris Lattner a8dd636192 add a note
llvm-svn: 26605
2006-03-08 00:25:47 +00:00
Evan Cheng 70b25efa57 X86ISD::REP_STOS and X86ISD::REP_MOVS now produces a flag.
llvm-svn: 26604
2006-03-07 23:34:23 +00:00
Evan Cheng adc7093fc1 Use rep/stosl; and Count 0x3; rep/stosb for memset with 4 byte aligned dest.
and variable value.
Similarly for memcpy.

llvm-svn: 26603
2006-03-07 23:29:39 +00:00
Chris Lattner 207291fd1a Two things:
1. Don't emit debug info, or other llvm.metadata to the .cbe.c file.
2. Mark static ctors/dtors as such, so that bugpoint works on C++ code
   compiled with the new CFE.

llvm-svn: 26602
2006-03-07 22:58:23 +00:00
Chris Lattner d312f73022 new testcase that should have been added long ago.
llvm-svn: 26601
2006-03-07 22:33:00 +00:00
Jim Laskey 313570fb17 Use "llvm.metadata" section for debug globals. Filter out these globals in the
asm printer.

llvm-svn: 26599
2006-03-07 22:00:35 +00:00
Jim Laskey 69effa2325 Switch to using a numeric id for anchors.
llvm-svn: 26598
2006-03-07 20:53:47 +00:00
Chris Lattner 7b87fd53f9 Fix ConstantMerge/2006-03-07-DontMergeDiffSections.ll, a problem Jim
hypotheticalized about, where we would incorrectly merge two globals in
different sections.

llvm-svn: 26597
2006-03-07 17:56:59 +00:00
Chris Lattner f118a41fb0 new testcase
llvm-svn: 26596
2006-03-07 17:56:31 +00:00
Chris Lattner 907e13c742 add another missing store.
llvm-svn: 26595
2006-03-07 16:26:48 +00:00
Chris Lattner 8c73d80b08 add a couple more load/store instrs, add a newline to the end of file.
llvm-svn: 26594
2006-03-07 16:19:46 +00:00
Jim Laskey 3bad199894 Bitfield support.
llvm-svn: 26593
2006-03-07 15:51:33 +00:00
Evan Cheng 0fab08eae3 Don't generate silly matching code like this:
if (N1.getOpcode() == ISD::ADD &&
     ...)
   if (... &&
       (N1.getNumOperands() == 1 || !isNonImmUse(N1.Val, N10.Val))) &&
       ...)

TableGen knows N1 must have more than one operand.

llvm-svn: 26592
2006-03-07 08:31:27 +00:00
Nate Begeman 3e3219cc0a This kinda sorta implements "things that have to lead a dispatch group".
llvm-svn: 26591
2006-03-07 08:30:27 +00:00
Chris Lattner 675567f77c add some new instructions to the classifier. With this, we correctly insert
a nop into Freebench/neural, which speeds it up from 136->129s (~5.4%).

llvm-svn: 26590
2006-03-07 07:14:55 +00:00
Chris Lattner 05ad128dca add some comments that describe what we model
llvm-svn: 26588
2006-03-07 06:44:19 +00:00
Chris Lattner 2cab13573c Implement a very very simple hazard recognizer for LSU rejects and ctr set/read
flushes

llvm-svn: 26587
2006-03-07 06:32:48 +00:00
Chris Lattner 0c801bd1cf Fix some formatting, when looking for hazards, prefer target nodes over
things like copyfromreg.

llvm-svn: 26586
2006-03-07 05:40:43 +00:00
Chris Lattner 883cefc656 add a note
llvm-svn: 26585
2006-03-07 04:42:59 +00:00
Jeff Cohen 46d6e17fe9 Keep VC++ building.
llvm-svn: 26584
2006-03-07 02:58:13 +00:00
Chris Lattner bccb0e07f0 add a note
llvm-svn: 26583
2006-03-07 02:46:26 +00:00
Evan Cheng a4a4ceb478 - Emit subsections_via_symbols for Darwin.
- Conditionalize Dwarf debugging output (Darwin only for now).

llvm-svn: 26582
2006-03-07 02:23:26 +00:00
Evan Cheng 30d7b70b73 Enable Dwarf debugging info.
llvm-svn: 26581
2006-03-07 02:02:57 +00:00
Chris Lattner 53ef5a032c Teach the alignment handling code to look through constant expr casts and GEPs
llvm-svn: 26580
2006-03-07 01:28:57 +00:00
Chris Lattner 9b4ebee871 new regression test
llvm-svn: 26579
2006-03-06 23:52:37 +00:00