Jim Laskey [Fri, 21 Oct 2005 19:00:04 +0000 (19:00 +0000)]
New TableGen backends for subtarget information. Only command line stuff
active now. Scheduling itinerary next.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23869
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 21 Oct 2005 16:01:26 +0000 (16:01 +0000)]
silence a release mode warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23868
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 21 Oct 2005 15:49:28 +0000 (15:49 +0000)]
add missing prototype
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23867
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 21 Oct 2005 06:49:50 +0000 (06:49 +0000)]
Make the coallescer a bit smarter, allowing it to join more live ranges.
For example, we can now join things like [0-30:0)[31-40:1)[52-59:2)
with [40:60:0) if the 52-59 range is defined by a copy from the 40-60 range.
The resultant range ends up being [0-30:0)[31-60:1).
This fires a lot through-out the test suite (e.g. shrinking bc from
19492 -> 18509 machineinstrs) though most gains are smaller (e.g. about
50 copies eliminated from crafty).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23866
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 21 Oct 2005 06:41:30 +0000 (06:41 +0000)]
Fix LiveInterval::getOverlapingRanges to take things in the right order
(an unused method).
Fix the merger so that it can merge ranges like this [10:12)[16:40) with
[12:38) into [10:40) instead of bogus ranges. This sort of input will be
possible for the merger coming shortly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23865
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 21 Oct 2005 06:36:18 +0000 (06:36 +0000)]
Match rotate. This does actually match the rotates in an rc5 cipher, but I
haven't seen it fire on our testsuite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23863
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 21 Oct 2005 05:45:41 +0000 (05:45 +0000)]
My previous patch was too conservative. Reject FP and void types, but do
allow pointer types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23859
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 21 Oct 2005 01:52:45 +0000 (01:52 +0000)]
Don't generate operations that aren't yet supported
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23858
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 21 Oct 2005 01:52:20 +0000 (01:52 +0000)]
Kill some now-dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23857
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 21 Oct 2005 01:51:45 +0000 (01:51 +0000)]
Fix a typo in the dag combiner, so that this can work on i64 targets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23856
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Fri, 21 Oct 2005 01:24:05 +0000 (01:24 +0000)]
byte zap not immediate goodness
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23855
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 21 Oct 2005 01:19:59 +0000 (01:19 +0000)]
Make tblgen emit:
tblgen: In ZAPNOTi: Cannot use 'IZAPX' in an input pattern!
for a bad pattern, instead of an ugly assertion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23854
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 21 Oct 2005 00:02:42 +0000 (00:02 +0000)]
Invert the TargetLowering flag that controls divide by consant expansion.
Add a new flag to TargetLowering indicating if the target has really cheap
signed division by powers of two, make ppc use it. This will probably go
away in the future.
Implement some more ISD::SDIV folds in the dag combiner
Remove now dead code in the x86 backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23853
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 20 Oct 2005 23:58:36 +0000 (23:58 +0000)]
Inst cleanup. As a bonus, operands are in the correct order for cmovs. Expect new stuff to pass in the JIT tonight
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23852
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 23:30:37 +0000 (23:30 +0000)]
Use a literal to define ineg instead of immzero
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23851
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 22:50:10 +0000 (22:50 +0000)]
Fix a conditional so we don't access past the end of the range. Thanks to
Andrew for bringing this to my attn.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23850
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 20 Oct 2005 19:39:24 +0000 (19:39 +0000)]
added a few 1 operand form stuff. Seems to break regalloc on alpha. sigh
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23849
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 20 Oct 2005 19:38:11 +0000 (19:38 +0000)]
add cttz and ctpop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23848
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 20 Oct 2005 17:45:03 +0000 (17:45 +0000)]
Fix a couple bugs in the const div stuff where we'd generate MULHS/MULHU
for types that aren't legal, and fail a divisor is less than zero
comparison, which would cause us to drop a subtract.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23846
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 17:01:00 +0000 (17:01 +0000)]
don't use llabs with apparently VC++ doesn't have
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23845
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 16:56:40 +0000 (16:56 +0000)]
Fix order of eval problem from when I refactored this into a function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23844
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 20 Oct 2005 14:42:48 +0000 (14:42 +0000)]
Sounds good, finish the intop conversion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23843
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 20 Oct 2005 07:51:08 +0000 (07:51 +0000)]
Add some more patterns for i64 on ppc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23842
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 07:39:25 +0000 (07:39 +0000)]
add a new method, play around with some code.
Fix a *bug* in the extendIntervalEndTo method. In particular, if adding
[2:10) to an interval containing [0:2),[10:30), we produced [0:10),[10,30).
Which is not the most smart thing to do. Now produce [0:30).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23841
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 07:37:59 +0000 (07:37 +0000)]
add a new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23840
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 06:06:30 +0000 (06:06 +0000)]
Refactor some code, pulling it out into a function. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23839
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 04:47:10 +0000 (04:47 +0000)]
Do NOT touch FP ops with LSR. This fixes a testcase Nate sent me from an
inner loop like this:
LBB_RateConvertMono8AltiVec_2: ; no_exit
lis r2, ha16(.CPI_RateConvertMono8AltiVec_0)
lfs f3, lo16(.CPI_RateConvertMono8AltiVec_0)(r2)
fmr f3, f3
fadd f0, f2, f0
fadd f3, f0, f3
fcmpu cr0, f3, f1
bge cr0, LBB_RateConvertMono8AltiVec_2 ; no_exit
to an inner loop like this:
LBB_RateConvertMono8AltiVec_1: ; no_exit
fsub f2, f2, f1
fcmpu cr0, f2, f1
fmr f0, f2
bge cr0, LBB_RateConvertMono8AltiVec_1 ; no_exit
Doh! good catch!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23838
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 04:21:06 +0000 (04:21 +0000)]
Add some pattern fragments to simplify the repetitive parts of the patterns
for some common ops and use them for a few examples. Andrew, if you like
this, feel free to convert the rest over, if you hate it, feel free to
revert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23837
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Oct 2005 03:57:03 +0000 (03:57 +0000)]
simplify this a bit by using immediates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23836
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 20 Oct 2005 02:15:44 +0000 (02:15 +0000)]
Move the target constant divide optimization up into the dag combiner, so
that the nodes can be folded with other nodes, and we can not duplicate
code in every backend. Alpha will probably want this too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23835
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 20 Oct 2005 02:14:14 +0000 (02:14 +0000)]
Enable targets to say that integer divide is expensive, which will trigger
an upcoming optimization in the DAG Combiner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23834
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 20 Oct 2005 00:29:02 +0000 (00:29 +0000)]
forgot this one
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23833
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 20 Oct 2005 00:28:31 +0000 (00:28 +0000)]
ret 0; works, not much else
still lots of uglyness.
Maybe calls will come soon.
Fixing the return value of things will be necessary to make alpha work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23832
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Wed, 19 Oct 2005 20:07:15 +0000 (20:07 +0000)]
This fixes PR638:
Regression/CodeGen/Generic/2004-02-08-UnwindSupport.llx
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23831
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Wed, 19 Oct 2005 19:51:16 +0000 (19:51 +0000)]
Added InstrSchedClass to each of the PowerPC Instructions.
Note that when adding new instructions that you should refer to the table at the
bottom of PPCSchedule.td.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23830
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Wed, 19 Oct 2005 18:52:52 +0000 (18:52 +0000)]
Moved to Regression/Codegen/Generic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23829
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Wed, 19 Oct 2005 18:51:07 +0000 (18:51 +0000)]
This is a generic test for all code generators. It originally came from
Regression/Codegen/X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23826
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 19 Oct 2005 18:42:01 +0000 (18:42 +0000)]
Write patterns for the various shl and srl patterns that don't involve
doing something clever.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23824
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Wed, 19 Oct 2005 18:30:39 +0000 (18:30 +0000)]
Force i386 code generation for an i386 specific test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23821
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Wed, 19 Oct 2005 13:34:52 +0000 (13:34 +0000)]
Push processor descriptions to the top of target and add command line info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23820
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 04:41:05 +0000 (04:41 +0000)]
add support for literal immediates in patterns to match, allowing us to
write things like this:
def : Pat<(add GPRC:$in, 12),
(ADD12 GPRC:$in)>;
Andrew: if this isn't enough or doesn't work for you, please lemme know.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23819
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 04:32:04 +0000 (04:32 +0000)]
now that tblgen is smarter, use integers directly. This should help Andrew too
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23818
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 04:30:56 +0000 (04:30 +0000)]
Add basic support for integer constants in pattern results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23817
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 04:12:14 +0000 (04:12 +0000)]
Fix some checking that was causing duraid to get a perplexing assertion
instead of a happy error message
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23816
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 02:07:26 +0000 (02:07 +0000)]
Add support for patterns that have physical registers in them. Testcase:
def : Pat<(trunc G8RC:$in),
(OR8To4 G8RC:$in, X0)>;
Even though this doesn't make any sense on PPC :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23815
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 01:55:23 +0000 (01:55 +0000)]
Asserting here is to violent
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23814
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 01:50:36 +0000 (01:50 +0000)]
teach ppc backend these are copies
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23813
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 01:41:47 +0000 (01:41 +0000)]
Make this work with the internalize change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23812
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 01:38:02 +0000 (01:38 +0000)]
Convert these cases to patterns
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23811
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 01:27:22 +0000 (01:27 +0000)]
Nate wants to define 'Pat's which turn into instructions that don't have
patterns. Certainly a logical request.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23810
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 19 Oct 2005 01:12:32 +0000 (01:12 +0000)]
Woo, it kinda works. We now generate this atrociously bad, but correct,
code for long long foo(long long a, long long b) { return a + b; }
_foo:
or r2, r3, r3
or r3, r4, r4
or r4, r5, r5
or r5, r6, r6
rldicr r2, r2, 32, 31
rldicl r3, r3, 0, 32
rldicr r4, r4, 32, 31
rldicl r5, r5, 0, 32
or r2, r3, r2
or r3, r5, r4
add r4, r3, r2
rldicl r2, r4, 32, 32
or r4, r4, r4
or r3, r2, r2
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23809
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 00:52:21 +0000 (00:52 +0000)]
Testcase that crashes llvmgcc in type layout
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23806
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Oct 2005 00:17:55 +0000 (00:17 +0000)]
apply some tblgen majik to simplify the X register definitions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23805
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 19 Oct 2005 00:06:56 +0000 (00:06 +0000)]
Teach Legalize how to do something with EXTRACT_ELEMENT when the type of
the pair of elements is a legal type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23804
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 19 Oct 2005 00:05:37 +0000 (00:05 +0000)]
Make a new reg class for 64 bit regs that aliases the 32 bit regs. This
will have to tide us over until we get real subreg support, but it prevents
the PrologEpilogInserter from spilling 8 byte GPRs on a G4 processor.
Add some initial support for TRUNCATE and ANY_EXTEND, but they don't
currently work due to issues with ScheduleDAG. Something wll have to be
figured out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23803
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 18 Oct 2005 23:23:37 +0000 (23:23 +0000)]
Add the ability to lower return instructions to TargetLowering. This
allows us to lower legal return types to something else, to meet ABI
requirements (such as that i64 be returned in two i32 regs on Darwin/ppc).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23802
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 22:14:06 +0000 (22:14 +0000)]
Fix Generic/2005-10-18-ZeroSizeStackObject.ll by not requesting a zero
sized stack object if either the array size or the type size is zero.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23801
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 22:13:39 +0000 (22:13 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23798
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 22:11:42 +0000 (22:11 +0000)]
remove hack
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23797
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 18:50:26 +0000 (18:50 +0000)]
This was never updated for the project makefile changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23790
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 18:48:30 +0000 (18:48 +0000)]
This never got updated to reflect the project makefile changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23789
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Tue, 18 Oct 2005 16:59:23 +0000 (16:59 +0000)]
Simple edits; remove unimplimented cases and clarify long haul SLU cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23788
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 16:51:22 +0000 (16:51 +0000)]
Fix the JIT encoding of LWA, LD, STD, and STDU.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23787
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Tue, 18 Oct 2005 16:23:40 +0000 (16:23 +0000)]
Checking in first round of scheduling tablegen files. Not tied in as yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23786
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 06:30:51 +0000 (06:30 +0000)]
add a case
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23785
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 06:29:43 +0000 (06:29 +0000)]
Fix PR637
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23784
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 06:29:22 +0000 (06:29 +0000)]
Add an option to this pass. If it is set, we are allowed to internalize
all but main. If it's not set, we can still internalize, but only if an
explicit symbol list is provided.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23783
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 06:28:16 +0000 (06:28 +0000)]
add an option to the internalize pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23782
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 06:04:22 +0000 (06:04 +0000)]
Fold (select C, load A, load B) -> load (select C, A, B). This happens quite
a lot throughout many programs. In particular, specfp triggers it a bunch for
constant FP nodes when you have code like cond ? 1.0 : -1.0.
If the PPC ISel exposed the loads implicit in pic references to external globals,
we would be able to eliminate a load in cases like this as well:
%X = external global int
%Y = external global int
int* %test4(bool %C) {
%G = select bool %C, int* %X, int* %Y
ret int* %G
}
Note that this breaks things that use SrcValue's (see the fixme), but since nothing
uses them yet, this is ok.
Also, simplify some code to use hasOneUse() on an SDOperand instead of hasNUsesOfValue directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23781
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Oct 2005 04:41:01 +0000 (04:41 +0000)]
Duraid pointed out that it is impolite to emit PPC:: into the IA64 backend
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23780
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 18 Oct 2005 00:56:42 +0000 (00:56 +0000)]
Do the right thing and enable 64 bit regs under the control of a subtarget
option. Currently the only way to enable this is to specify the
64bitregs mattr flag. It is never enabled by default on any config yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23779
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 18 Oct 2005 00:28:58 +0000 (00:28 +0000)]
First bits of 64 bit PowerPC stuff, currently disabled. A lot of this is
purely mechanical.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23778
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 18 Oct 2005 00:28:13 +0000 (00:28 +0000)]
Implement some feedback from Chris re: constant canonicalization
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23777
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 18 Oct 2005 00:27:41 +0000 (00:27 +0000)]
Legalize BUILD_PAIR appropriately for upcoming 64 bit PowerPC work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23776
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Mon, 17 Oct 2005 21:54:18 +0000 (21:54 +0000)]
Use %s instead of hard coding the input filename.
This allows the test to work when srcdir != objdir.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23775
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Mon, 17 Oct 2005 20:40:11 +0000 (20:40 +0000)]
fold fmul X, +2.0 -> fadd X, X;
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23774
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Oct 2005 20:18:38 +0000 (20:18 +0000)]
Make this work for FP constantexprs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23773
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Oct 2005 17:56:38 +0000 (17:56 +0000)]
Oops, X+0.0 isn't foldable, but X+-0.0 is.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23772
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Oct 2005 17:49:32 +0000 (17:49 +0000)]
relax this a bit, as we only support the default rounding mode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23771
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Oct 2005 15:19:24 +0000 (15:19 +0000)]
Apparently, people object to floating pointers. Picky picky.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23770
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Mon, 17 Oct 2005 12:19:10 +0000 (12:19 +0000)]
As requested, a blurb on sub-targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23769
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Oct 2005 04:18:41 +0000 (04:18 +0000)]
fix some grammar-o's I noticed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23768
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Oct 2005 03:09:31 +0000 (03:09 +0000)]
Feedback from Nate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23767
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Oct 2005 01:40:33 +0000 (01:40 +0000)]
Document -view-isel-dags and -view-sched-dags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23766
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Oct 2005 01:36:23 +0000 (01:36 +0000)]
Add notes about MF.viewCFG() and friends.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23765
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Oct 2005 01:07:11 +0000 (01:07 +0000)]
add a trivial fold
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23764
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 16 Oct 2005 20:02:19 +0000 (20:02 +0000)]
Add a bunch of info about the isel autogenerator. Review appreciated!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23763
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 16 Oct 2005 18:31:08 +0000 (18:31 +0000)]
Fill this out some more. Add description of MBB/MF. Fix some broken links,
turn some broken <a name> into <a href>'s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23762
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 16 Oct 2005 17:06:07 +0000 (17:06 +0000)]
Add a stub for the TargetSubtarget class. Jim, please fill a blurb in here
when you get a chance.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23761
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 16 Oct 2005 17:03:22 +0000 (17:03 +0000)]
Update this significantly, mention subtarget and isel generation support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23760
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sun, 16 Oct 2005 05:39:50 +0000 (05:39 +0000)]
More PPC32 -> PPC changes, as well as merging some classes that were
redundant after the change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23759
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 16 Oct 2005 01:41:58 +0000 (01:41 +0000)]
Make the generated code significantly more memory efficient, by using
SelectNodeTo instead of getTargetNode when possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23758
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 16 Oct 2005 00:36:38 +0000 (00:36 +0000)]
update this a little bit to talk about the dag combiner and remove inaccuracies.
This still doesn't talk about autogen much
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23757
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 15 Oct 2005 22:35:40 +0000 (22:35 +0000)]
Fix this logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23756
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 15 Oct 2005 22:18:08 +0000 (22:18 +0000)]
Add a case we were missing that was causing us to fail CodeGen/PowerPC/rlwinm.ll:test3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23755
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sat, 15 Oct 2005 22:08:02 +0000 (22:08 +0000)]
Remove some dead code now that the dag combiner exists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23754
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 15 Oct 2005 22:06:18 +0000 (22:06 +0000)]
Remove some dead code: the ORI/ORIS cases are autogen'd. This makes
SelectIntImmediateExpr dead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23753
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 15 Oct 2005 21:58:54 +0000 (21:58 +0000)]
prune #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23752
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 15 Oct 2005 21:44:56 +0000 (21:44 +0000)]
These instructions are now autogenerated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23751
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 15 Oct 2005 21:44:15 +0000 (21:44 +0000)]
Add a pattern for FSQRTS
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23750
91177308-0d34-0410-b5e6-
96231b3b80d8