Commit Graph

3500 Commits

Author SHA1 Message Date
Duncan Sands
d038e04188 Add VerifyNode, a place to put sanity checks on
generic SDNode's (nodes with their own constructors
should do sanity checking in the constructor).  Add
sanity checks for BUILD_VECTOR and fix all the places
that were producing bogus BUILD_VECTORs, as found by
"make check".  My favorite is the BUILD_VECTOR with
only two operands that was being used to build a
vector with four elements!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53850 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-21 10:20:31 +00:00
Evan Cheng
41c0840583 Use movaps instead of movups to spill 16-byte vector values when default alignment is >= 16. This fixes some massive performance regressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53844 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-21 06:34:17 +00:00
Bill Wendling
3180e20cda Fix for first part of PR2562. Generate the "pinsrw" instruction for inserts
into v4i16 vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53807 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-20 02:32:23 +00:00
Anton Korobeynikov
cff2ea06af Fix a FIXME :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53789 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-19 13:15:46 +00:00
Anton Korobeynikov
18f6ed9c29 Use generic ELFTargetAsmInfo and DarwinTargetAsmInfo for X86 code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53788 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-19 13:15:21 +00:00
Anton Korobeynikov
88bbf6941f Use aligned stack spills, where possible. This fixes PR2549.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53784 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-19 06:30:51 +00:00
Dan Gohman
e8be6c6391 Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk
replacement of multiple values. This is slightly more efficient
than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
could be optimized even further. However, an important property of this
new function is that it handles the case where the source value set and
destination value set overlap. This makes it feasible for isel to use
SelectNodeTo in many very common cases, which is advantageous because
SelectNodeTo avoids a temporary node and it doesn't require CSEMap
updates for users of values that don't change position.

Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
handle operand lists more efficiently, and to correctly handle a number
of corner cases to which its new wider use exposes it.

This commit also includes a change to the encoding of post-isel opcodes
in SDNodes; now instead of being sandwiched between the target-independent
pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
opcodes are now represented as negative values. This makes it possible
to test if an opcode is pre-isel or post-isel without having to know
the size of the current target's post-isel instruction set.

These changes speed up llc overall by 3% and reduce memory usage by 10%
on the InstructionCombining.cpp testcase with -fast and -regalloc=local.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53728 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-17 19:10:17 +00:00
Nate Begeman
29681a5385 Remove unnecessary readme entry
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53722 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-17 17:21:14 +00:00
Nate Begeman
e99b255b5c Fix a typo in last commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53720 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-17 17:04:58 +00:00
Nate Begeman
30a0de94e7 SSE codegen for vsetcc nodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53719 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-17 16:51:19 +00:00
Mon P Wang
f595266b91 When lowering certain atomics, we need to copy the memoperand from the old
atomic operation to the new one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53714 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-17 04:54:06 +00:00
Devang Patel
0d885d1661 Mark function used by asm block as used, otherwise optimizer may not see the use and may delete the function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53692 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-16 17:54:34 +00:00
Dan Gohman
2fbdf0e711 Fix the result type of X86's truncate to i8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53688 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-16 16:20:48 +00:00
Evan Cheng
817a6a9eaa x86-64 PIC JIT fixes: do not generate the extra load for external GV's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53661 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-16 01:34:02 +00:00
Evan Cheng
81fb5feede X86-64 PIC jump table values are different from x86-32 cases, they are dest - table base.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53660 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-16 01:33:08 +00:00
Dan Gohman
cddc11e757 Add a utility function to MachineInstr for testing whether an instruction
has exactly one MachineMemOperand, and change some X86 lowering code to
make use of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53498 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-12 00:10:52 +00:00
Dan Gohman
a54cf17661 Include a frame index in the "fixed stack" pseudo source value
instead of using the frame index for the SVOffset, which was
inconsistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53486 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-11 22:44:52 +00:00
Bill Wendling
71ca353ae6 The frame address on an x86-64 box needs to be offset by -8, not -4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53450 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-11 07:18:52 +00:00
Evan Cheng
331e2bd942 Fix for PR2472. Use movss to set lower 32-bits of a zero XMM vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53386 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-10 01:08:23 +00:00
Anton Korobeynikov
7705ea33e4 Remove a FIXME: we really need to use const_data section on darwin for
constant pool, if relocation model is not static. This directly maps to
the way how GCC works.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53370 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 21:54:26 +00:00
Anton Korobeynikov
ac2673e4ea Add FIXME for future checking.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53368 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 21:38:28 +00:00
Dale Johannesen
7bc39e227f Emit debug info for data-only files. This version
is X86 ATT only.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53355 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 20:55:35 +00:00
Anton Korobeynikov
b126f3b534 Add missed section
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53354 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 20:47:55 +00:00
Anton Korobeynikov
9a06ed9359 Distinguish .const and .const_data on Darwin, when needed. This is somehow crazy :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53350 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 20:01:42 +00:00
Anton Korobeynikov
f56c2f7a4b Weak stuff always goes to coalesced sections on Darwin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53340 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 19:06:02 +00:00
Dan Gohman
4b9235b149 Remove #include <iostream>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53333 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 18:08:48 +00:00
Anton Korobeynikov
c5a7e40c74 Add FIXME needed to be resolved later
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53324 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:30:02 +00:00
Anton Korobeynikov
a3af0bf4ab Typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53322 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:29:27 +00:00
Anton Korobeynikov
3b48591a84 Revert accidentially added stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53321 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:29:08 +00:00
Anton Korobeynikov
0d44ba82b4 First sketch of special section objects
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53320 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:28:49 +00:00
Anton Korobeynikov
c5c92f6383 Honour text sections
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53319 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:28:19 +00:00
Anton Korobeynikov
c33a744f0e Use isWeakForLinker() hook
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53318 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:27:59 +00:00
Anton Korobeynikov
e87f52d722 Switch to new section name handling facility
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53316 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:27:16 +00:00
Anton Korobeynikov
7e7fc82cf3 Another bunch of hacks for named sections support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53315 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:26:52 +00:00
Anton Korobeynikov
1290ecf5b9 Typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53314 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:26:24 +00:00
Anton Korobeynikov
87fc6b4f86 Drop mergeable flag, if size is no suitable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53313 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:26:05 +00:00
Anton Korobeynikov
2a889172a4 Fix several bugs in named sections handling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53312 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:25:46 +00:00
Anton Korobeynikov
b20015b621 Add hacky way to distinguish named and named sections. This will be generalized in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53311 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:25:26 +00:00
Anton Korobeynikov
0e48a0ca16 Fix thinko
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53309 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:24:38 +00:00
Anton Korobeynikov
c6f4947d48 Drop dead member reference
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53308 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:24:18 +00:00
Anton Korobeynikov
4039e680bc Add funny darwin section selection logic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53307 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:23:57 +00:00
Anton Korobeynikov
01b0e24c25 Handle ELF mergeable sections
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53306 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:23:37 +00:00
Anton Korobeynikov
4260ad3e7d Provide section selection for X86 ELF targets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53305 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:23:08 +00:00
Anton Korobeynikov
265c5259ab Provide general hook for section name calculation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53304 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:22:46 +00:00
Anton Korobeynikov
6d82942092 Print entity size for mergeable sections
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53303 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:22:17 +00:00
Anton Korobeynikov
f447e3d311 Split PrintSectionFlags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53302 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:21:49 +00:00
Anton Korobeynikov
b9a02fcaf6 Split UniqueSectionForGlobal()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53301 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:21:29 +00:00
Anton Korobeynikov
b9e58efdb9 Split PreferredEHDataFormat hook
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53300 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:21:08 +00:00
Anton Korobeynikov
4468b7a988 Split X86TargetAsmInfo into 4 subtarget-specific classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53299 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:20:48 +00:00
Anton Korobeynikov
8210045b9f Whitespace cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53298 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-09 13:20:27 +00:00