Evan Cheng [Thu, 10 Jan 2008 08:22:10 +0000 (08:22 +0000)]
Simplify some code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45830
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 07:59:24 +0000 (07:59 +0000)]
Start inferring side effect information more aggressively, and fix many bugs in the
x86 backend where instructions were not marked maystore/mayload, and perf issues where
instructions were not marked neverHasSideEffects. It would be really nice if we could
write patterns for copy instructions.
I have audited all the x86 instructions down to MOVDQAmr. The flags on others and on
other targets are probably not right in all cases, but no clients currently use this
info that are enabled by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45829
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 07:19:43 +0000 (07:19 +0000)]
Clearify the meaning of immutable StackObject.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45828
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 07:01:53 +0000 (07:01 +0000)]
Fix a crash on code like: let x = 1 {x
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45827
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:50:42 +0000 (05:50 +0000)]
rename X86InstrX86-64.td -> X86Instr64bit.td
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45826
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:48:23 +0000 (05:48 +0000)]
add SDNPSideEffect node property declaration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45825
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:45:39 +0000 (05:45 +0000)]
remove explicit sets of 'neverHasSideEffects' that can now be
inferred from the instr patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45824
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:40:54 +0000 (05:40 +0000)]
if an instr lacks a pattern, assume it has side effects (unless never has s-e is true).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45823
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:39:30 +0000 (05:39 +0000)]
start inferring 'no side effects'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45822
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:12:37 +0000 (05:12 +0000)]
get def use info more correct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45821
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 04:44:48 +0000 (04:44 +0000)]
Infer mayload
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45819
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 04:44:32 +0000 (04:44 +0000)]
add SDNPMayLoad to the 'load' sdnode definition. This is enough to get all the x86
instructions (with patterns) that load memory marked, for example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45818
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 04:38:57 +0000 (04:38 +0000)]
realize that instructions who match intrinsics that read memory read memory.
Also, instructions with any nodes that are SDNPMayLoad also read memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45817
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 04:16:31 +0000 (04:16 +0000)]
verify that the frame index is immutable before remat'ing (still disabled)
or being side-effect free.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45816
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 03:12:54 +0000 (03:12 +0000)]
Don't use LiveVariables::VarInfo::DefInst.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45815
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 02:54:40 +0000 (02:54 +0000)]
Codegen improvement has reduced one spill.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45814
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 02:24:25 +0000 (02:24 +0000)]
Mark byval parameter stack objects mutable for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45813
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 02:18:37 +0000 (02:18 +0000)]
Add a isImmutable bit to StackObject. Fixed stack objects are immutable (in the function) unless specified otherwise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45812
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Thu, 10 Jan 2008 02:03:30 +0000 (02:03 +0000)]
Emit unused EH frames for weak definitions on Darwin,
because assembler/linker can't cope with weak absolutes.
PR 1880.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45811
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 01:36:43 +0000 (01:36 +0000)]
Get rid of all uses of LiveVariables::VarInfo::DefInst in favor of the equivalent API from
MachineRegisterInfo. Once all clients are switched over, the former will be going away.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45805
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 01:01:27 +0000 (01:01 +0000)]
provide def_* and use_* iterators in addition to reg_* iterators.
The first only returns definitions of a register, the second only
returns uses, the third returns both.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45803
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 00:47:01 +0000 (00:47 +0000)]
Add more comments explaining the basics of how the decision of when to rename and when to insert
copies is made.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45799
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 00:37:26 +0000 (00:37 +0000)]
Do not use the stack pointer directly, issue a copyfromreg instead. Otherwise we can end up with something like ADD32ri %esp, x which two-address pass won't like.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45798
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 00:33:11 +0000 (00:33 +0000)]
Get rid of the isKillInst predicate. LiveVariables already provides this information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45797
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 00:30:57 +0000 (00:30 +0000)]
Fix PR1845 and rdar://
5676945. Generic vectors smaller
than hardware supported type will be scalarized, so we
can infer their alignment from that info.
We now codegen pr1845 into:
_boolVectorSelect:
lbz r2, 0(r3)
stb r2, -16(r1)
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45796
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 00:30:38 +0000 (00:30 +0000)]
new testcase for PR1845
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45795
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 00:09:10 +0000 (00:09 +0000)]
Remove comments that do not correspond to anything after recent refactoring.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45792
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 00:01:41 +0000 (00:01 +0000)]
Copies need to be inserted before the first terminator, not at the end of the block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45791
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 9 Jan 2008 23:01:55 +0000 (23:01 +0000)]
Special copy SUnit's do not have SDNode's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45787
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Jan 2008 22:40:54 +0000 (22:40 +0000)]
Clean up StrongPHIElimination a bit, and add some more comments to the internal structures. There's
still more work to do on this front.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45783
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Wed, 9 Jan 2008 19:42:09 +0000 (19:42 +0000)]
Fix compile failures with g++-4.3.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45781
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Jan 2008 19:28:50 +0000 (19:28 +0000)]
many cleanups and fixed, contributed by Sam Bishop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45780
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Jan 2008 10:41:39 +0000 (10:41 +0000)]
StrongPHIElim: Now with even fewer trivial bugs!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45775
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Jan 2008 10:32:30 +0000 (10:32 +0000)]
Fix an infinite recursion bug in InsertCopies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45774
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Jan 2008 06:19:05 +0000 (06:19 +0000)]
Fix some simple bugs. StrongPHIElimination now does not crash on 164.gzip.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45773
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 9 Jan 2008 02:16:44 +0000 (02:16 +0000)]
Fix sse2.psrl.w and sse2.psrl.q definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45772
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Jan 2008 01:01:17 +0000 (01:01 +0000)]
Fix llvm-ld -Xlinker, patch by Daniel Teske!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45770
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Jan 2008 00:37:18 +0000 (00:37 +0000)]
add a testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45768
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Jan 2008 00:17:57 +0000 (00:17 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45766
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 23:08:06 +0000 (23:08 +0000)]
Make load->store deletion a bit smarter. This allows us to compile this:
void test(long long *P) { *P ^= 1; }
into just:
_test:
movl 4(%esp), %eax
xorl $1, (%eax)
ret
instead of code like this:
_test:
movl 4(%esp), %ecx
xorl $1, (%ecx)
movl 4(%ecx), %edx
movl %edx, 4(%ecx)
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45762
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 8 Jan 2008 21:54:52 +0000 (21:54 +0000)]
Rename registers that do not need copies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45759
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 8 Jan 2008 21:51:53 +0000 (21:51 +0000)]
Crashes llc when using Chris's new legalization logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45758
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 8 Jan 2008 21:05:59 +0000 (21:05 +0000)]
Added "getRoot()" to ImmutableMap.
Made the ctor for ImmutableMap to construct a map from an AVL tree public.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45756
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 8 Jan 2008 19:38:55 +0000 (19:38 +0000)]
Fixed 80 col. violation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45752
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 18:05:21 +0000 (18:05 +0000)]
add a mayLoad property for machine instructions, a correlary to mayStore.
This is currently not set by anything.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45748
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 8 Jan 2008 10:06:15 +0000 (10:06 +0000)]
Use size_t to store Pos, avoid truncating value
on 64-bit builds. Analysis and original patch
by Török Edwin. Code audit found another place
with the same problem, also fixed here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45746
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 07:23:51 +0000 (07:23 +0000)]
Implement PR1795, an instcombine hack for forming GEPs with integer pointer arithmetic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45745
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 07:02:44 +0000 (07:02 +0000)]
add match support for casts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45744
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 06:52:51 +0000 (06:52 +0000)]
remove darwin/i386 t-t
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45743
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 06:46:30 +0000 (06:46 +0000)]
Finally implement correct ordered comparisons for PPC, even though
the code generated is not wonderful. This turns a miscompilation into
a code quality bug (noted in the ppc readme). This fixes PR642, which
is over 2 years old (!). Nate, please review this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45742
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 05:16:29 +0000 (05:16 +0000)]
Testcase for PR1721
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45739
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 8 Jan 2008 05:16:15 +0000 (05:16 +0000)]
Actually insert copies now!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45738
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 04:26:20 +0000 (04:26 +0000)]
Fix PR1797
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45736
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 8 Jan 2008 02:07:10 +0000 (02:07 +0000)]
Minor fix to enable x86-64 pic jit (still fails for other reasons).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45734
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 8 Jan 2008 02:06:11 +0000 (02:06 +0000)]
Fix a x86-64 static codegen bug. This fixes a lot of x86-64 jit failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45733
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 8 Jan 2008 00:52:29 +0000 (00:52 +0000)]
Silence warning about loss of precision.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45731
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 7 Jan 2008 23:56:57 +0000 (23:56 +0000)]
Only mark instructions that load a single value without extension as isSimpleLoad = 1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45727
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 23:16:55 +0000 (23:16 +0000)]
add a new bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45726
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 7 Jan 2008 23:08:23 +0000 (23:08 +0000)]
Unbreak x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45725
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 21:59:58 +0000 (21:59 +0000)]
add a note that is important for some fp apps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45723
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 21:38:14 +0000 (21:38 +0000)]
possible switch lowering improvement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45720
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Mon, 7 Jan 2008 21:32:09 +0000 (21:32 +0000)]
Oops, missed one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45719
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Mon, 7 Jan 2008 21:30:40 +0000 (21:30 +0000)]
Make some predicates static.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45718
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 7 Jan 2008 19:14:42 +0000 (19:14 +0000)]
I doubt the address of the Error string was intended
to be used for the force_interpreter parameter...
Spotted by gcc-4.2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45714
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 7 Jan 2008 19:13:36 +0000 (19:13 +0000)]
Add missing newline at EOF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45712
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Mon, 7 Jan 2008 17:52:24 +0000 (17:52 +0000)]
Update the comment on scalar to vector to be a bit more clear.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45707
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Mon, 7 Jan 2008 17:49:23 +0000 (17:49 +0000)]
Update test to catch recent x86 insert regression and improvements
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45705
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 7 Jan 2008 17:16:06 +0000 (17:16 +0000)]
Small cleanup for handling of type/parameter attribute
incompatibility.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45704
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 7 Jan 2008 16:36:38 +0000 (16:36 +0000)]
Unbreak x86-32 darwin long double!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45703
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 7 Jan 2008 13:44:22 +0000 (13:44 +0000)]
Fix long double support on x86-32 linux.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45701
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Mon, 7 Jan 2008 13:30:38 +0000 (13:30 +0000)]
Pruning includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45700
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 7 Jan 2008 08:05:29 +0000 (08:05 +0000)]
Operand 1 should be a register. We don't care if it's a preg, vreg, or 0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45699
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 07:46:23 +0000 (07:46 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45698
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 07:42:25 +0000 (07:42 +0000)]
remove #includage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45697
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 07:33:08 +0000 (07:33 +0000)]
split TargetInstrDesc out into its own header file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45696
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 07:27:27 +0000 (07:27 +0000)]
rename TargetInstrDescriptor -> TargetInstrDesc.
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45695
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 06:47:10 +0000 (06:47 +0000)]
remove a dead method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45694
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 06:47:00 +0000 (06:47 +0000)]
simplify some code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45693
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 06:42:05 +0000 (06:42 +0000)]
Rename all the M_* flags to be namespace qualified enums, and switch
all clients over to using predicates instead of these flags directly.
These are now private values which are only to be used to statically
initialize the tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45692
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 06:37:29 +0000 (06:37 +0000)]
use predicate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45691
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 06:21:53 +0000 (06:21 +0000)]
add more and significantly better comments to the rest of the machineinstr
flags that can be set. Add predicates for the ones lacking it, and switch
some clients over to using the predicates instead of Flags directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45690
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 05:40:58 +0000 (05:40 +0000)]
simplify some code using new predicates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45689
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 05:38:38 +0000 (05:38 +0000)]
add some mroe comments, add a isImplicitDef() method, add
isConditionalBranch() and isUnconditionalBranch() methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45688
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 05:19:29 +0000 (05:19 +0000)]
rename hasVariableOperands() -> isVariadic(). Add some comments.
Evan, please review the comments I added to getNumDefs to make sure
that they are accurate, thx.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45687
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 05:06:49 +0000 (05:06 +0000)]
Move M_* flags down in the file. Move SchedClass up in the
TargetInstrDescriptor class and shrink to 16-bits, saving a
word in TargetInstrDescriptor. Add some comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45686
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 04:57:42 +0000 (04:57 +0000)]
remove a dead field.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45685
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 04:57:31 +0000 (04:57 +0000)]
the name field of instructions is never set to a non-empty string,
just unconditionally use the def name of the instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45684
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 04:55:09 +0000 (04:55 +0000)]
no need to explicitly clear these fields.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45683
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Mon, 7 Jan 2008 03:23:52 +0000 (03:23 +0000)]
Removing a leaked file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45681
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 03:13:06 +0000 (03:13 +0000)]
Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45680
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 02:48:55 +0000 (02:48 +0000)]
remove MachineOpCode typedef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45679
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 02:46:03 +0000 (02:46 +0000)]
remove some uses of MachineOpCode, move getSchedClass
into TargetInstrDescriptor from TargetInstrInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45678
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 02:39:19 +0000 (02:39 +0000)]
Add predicates methods to TargetOperandInfo, and switch all clients
over to using them, instead of diddling Flags directly. Change the
various flags from const variables to enums.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45677
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Mon, 7 Jan 2008 02:31:11 +0000 (02:31 +0000)]
Setting GlobalDirective in TargetAsmInfo by default rather than
providing a misleading facility. It's used once in the MIPS backend
and hardcoded as "\t.globl\t" everywhere else.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45676
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Mon, 7 Jan 2008 02:29:04 +0000 (02:29 +0000)]
Deleting an empty file. Thanks, /usr/bin/patch!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45675
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 7 Jan 2008 01:56:04 +0000 (01:56 +0000)]
Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects
that it is cheap and efficient to get.
Move a variety of predicates from TargetInstrInfo into
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around. Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.
Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45674
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Mon, 7 Jan 2008 01:35:56 +0000 (01:35 +0000)]
Update CodeGen for MRegisterInfo --> TargetInstrInfo changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45673
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Mon, 7 Jan 2008 01:35:02 +0000 (01:35 +0000)]
Move even more functionality from MRegisterInfo into TargetInstrInfo.
Some day I'll get it all moved over...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45672
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Mon, 7 Jan 2008 01:33:09 +0000 (01:33 +0000)]
Ammending r45669 with a missing file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45671
91177308-0d34-0410-b5e6-
96231b3b80d8
Gordon Henriksen [Mon, 7 Jan 2008 01:30:53 +0000 (01:30 +0000)]
With this patch, the LowerGC transformation becomes the
ShadowStackCollector, which additionally has reduced overhead with
no sacrifice in portability.
Considering a function @fun with 8 loop-local roots,
ShadowStackCollector introduces the following overhead
(x86):
; shadowstack prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl $___gc_fun, 20(%esp)
movl $0, 24(%esp)
movl $0, 28(%esp)
movl $0, 32(%esp)
movl $0, 36(%esp)
movl $0, 40(%esp)
movl $0, 44(%esp)
movl $0, 48(%esp)
movl $0, 52(%esp)
movl %ecx, 16(%esp)
leal 16(%esp), %ecx
movl %ecx, (%eax)
; shadowstack loop overhead
(none)
; shadowstack epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)
; shadowstack metadata
.align 3
___gc_fun: # __gc_fun
.long 8
.space 4
In comparison to LowerGC:
; lowergc prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl %ecx, 48(%esp)
movl $8, 52(%esp)
movl $0, 60(%esp)
movl $0, 56(%esp)
movl $0, 68(%esp)
movl $0, 64(%esp)
movl $0, 76(%esp)
movl $0, 72(%esp)
movl $0, 84(%esp)
movl $0, 80(%esp)
movl $0, 92(%esp)
movl $0, 88(%esp)
movl $0, 100(%esp)
movl $0, 96(%esp)
movl $0, 108(%esp)
movl $0, 104(%esp)
movl $0, 116(%esp)
movl $0, 112(%esp)
; lowergc loop overhead
leal 44(%esp), %eax
movl %eax, 56(%esp)
leal 40(%esp), %eax
movl %eax, 64(%esp)
leal 36(%esp), %eax
movl %eax, 72(%esp)
leal 32(%esp), %eax
movl %eax, 80(%esp)
leal 28(%esp), %eax
movl %eax, 88(%esp)
leal 24(%esp), %eax
movl %eax, 96(%esp)
leal 20(%esp), %eax
movl %eax, 104(%esp)
leal 16(%esp), %eax
movl %eax, 112(%esp)
; lowergc epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)
; lowergc metadata
(none)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45670
91177308-0d34-0410-b5e6-
96231b3b80d8