Dan Gohman
ebe629a4b2
Revert 54147.
...
llvm-svn: 54148
2008-07-29 01:02:18 +00:00
Dan Gohman
1816900fd1
Add x86 isel patterns to match what would be a ZERO_EXTEND_INREG operation,
...
which is represented in codegen as an 'and' operation. This matches them
with movz instructions, instead of leaving them to be matched by and
instructions with an immediate field.
llvm-svn: 54147
2008-07-28 22:18:25 +00:00
Dan Gohman
9742f7772d
Rename SDOperand to SDValue.
...
llvm-svn: 54128
2008-07-27 21:46:04 +00:00
Dan Gohman
47c5cdbc34
Tidy SDNode::use_iterator, and complete the transition to have it
...
parallel its analogue, Value::value_use_iterator. The operator* method
now returns the user, rather than the use.
llvm-svn: 54127
2008-07-27 20:43:25 +00:00
Nate Begeman
5523d40e4b
Disable mov{L, LP, HP, HLP, *DUP} shuffles for mmx
...
mmx needs its own fancy shuffle logic based on unpack; for now we get correct but awful code.
Also commit Mon Ping's VSETCC patch
llvm-svn: 54039
2008-07-25 19:05:58 +00:00
Nate Begeman
730880eec2
Fit in 80 cols
...
llvm-svn: 54029
2008-07-25 17:34:41 +00:00
Nate Begeman
73efed7a4c
Remove dead PatLeaf; there are a number of issues around MMX movl that need to be fixed.
...
llvm-svn: 54026
2008-07-25 17:25:04 +00:00
Evan Cheng
20c9cdbe69
Fix PR2485: do all 4-element SSE shuffles in max. of 2 shuffle instructions.
...
Based on patch by Nicolas Capens.
llvm-svn: 53939
2008-07-23 00:22:17 +00:00
Evan Cheng
ff0bd19937
Factor out SSE 4 wide shuffle lowering code into its own function. No functionality changes.
...
llvm-svn: 53933
2008-07-22 21:13:36 +00:00
Evan Cheng
901d469e05
Fix PR2574: implement v2f32 scalar_to_vector.
...
llvm-svn: 53927
2008-07-22 18:39:19 +00:00
Anton Korobeynikov
f13fbd6879
Fix encoding of atomic compare and swap for i64
...
llvm-svn: 53911
2008-07-22 16:22:48 +00:00
Evan Cheng
a2bb31372d
Eliminate a compilation warning.
...
llvm-svn: 53873
2008-07-21 20:02:45 +00:00
Dan Gohman
b91bef08a7
Add titles to the various SelectionDAG viewGraph calls
...
that include useful information like the name of the
block being viewed and the current phase of compilation.
llvm-svn: 53872
2008-07-21 20:00:07 +00:00
Duncan Sands
6e31474e71
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!
llvm-svn: 53850
2008-07-21 10:20:31 +00:00
Evan Cheng
ffd51ccf6b
Use movaps instead of movups to spill 16-byte vector values when default alignment is >= 16. This fixes some massive performance regressions.
...
llvm-svn: 53844
2008-07-21 06:34:17 +00:00
Bill Wendling
98b6e63176
Fix for first part of PR2562. Generate the "pinsrw" instruction for inserts
...
into v4i16 vectors.
llvm-svn: 53807
2008-07-20 02:32:23 +00:00
Anton Korobeynikov
449fb584e4
Fix a FIXME :)
...
llvm-svn: 53789
2008-07-19 13:15:46 +00:00
Anton Korobeynikov
5c0eb7e991
Use generic ELFTargetAsmInfo and DarwinTargetAsmInfo for X86 code
...
llvm-svn: 53788
2008-07-19 13:15:21 +00:00
Anton Korobeynikov
6e00357dd6
Use aligned stack spills, where possible. This fixes PR2549.
...
llvm-svn: 53784
2008-07-19 06:30:51 +00:00
Dan Gohman
8981962672
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.
llvm-svn: 53728
2008-07-17 19:10:17 +00:00
Nate Begeman
64f8f7f6bb
Remove unnecessary readme entry
...
llvm-svn: 53722
2008-07-17 17:21:14 +00:00
Nate Begeman
61f6c21028
Fix a typo in last commit
...
llvm-svn: 53720
2008-07-17 17:04:58 +00:00
Nate Begeman
af01bfff99
SSE codegen for vsetcc nodes
...
llvm-svn: 53719
2008-07-17 16:51:19 +00:00
Mon P Wang
57cd9d6e5a
When lowering certain atomics, we need to copy the memoperand from the old
...
atomic operation to the new one.
llvm-svn: 53714
2008-07-17 04:54:06 +00:00
Devang Patel
a6c5ff690a
Mark function used by asm block as used, otherwise optimizer may not see the use and may delete the function.
...
llvm-svn: 53692
2008-07-16 17:54:34 +00:00
Dan Gohman
4c8c8e3aad
Fix the result type of X86's truncate to i8.
...
llvm-svn: 53688
2008-07-16 16:20:48 +00:00
Evan Cheng
face16f9d8
x86-64 PIC JIT fixes: do not generate the extra load for external GV's.
...
llvm-svn: 53661
2008-07-16 01:34:02 +00:00
Evan Cheng
cabfd3f78c
X86-64 PIC jump table values are different from x86-32 cases, they are dest - table base.
...
llvm-svn: 53660
2008-07-16 01:33:08 +00:00
Dan Gohman
bf47a27643
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.
llvm-svn: 53498
2008-07-12 00:10:52 +00:00
Dan Gohman
4c18394001
Include a frame index in the "fixed stack" pseudo source value
...
instead of using the frame index for the SVOffset, which was
inconsistent.
llvm-svn: 53486
2008-07-11 22:44:52 +00:00
Bill Wendling
9f17caa9a9
The frame address on an x86-64 box needs to be offset by -8, not -4.
...
llvm-svn: 53450
2008-07-11 07:18:52 +00:00
Evan Cheng
02a618dc56
Fix for PR2472. Use movss to set lower 32-bits of a zero XMM vector.
...
llvm-svn: 53386
2008-07-10 01:08:23 +00:00
Anton Korobeynikov
9eae9520a9
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.
llvm-svn: 53370
2008-07-09 21:54:26 +00:00
Anton Korobeynikov
a5955dc461
Add FIXME for future checking.
...
llvm-svn: 53368
2008-07-09 21:38:28 +00:00
Dale Johannesen
36a38a5ba1
Emit debug info for data-only files. This version
...
is X86 ATT only.
llvm-svn: 53355
2008-07-09 20:55:35 +00:00
Anton Korobeynikov
61f4175d64
Add missed section
...
llvm-svn: 53354
2008-07-09 20:47:55 +00:00
Anton Korobeynikov
57e9182691
Distinguish .const and .const_data on Darwin, when needed. This is somehow crazy :)
...
llvm-svn: 53350
2008-07-09 20:01:42 +00:00
Anton Korobeynikov
67931c35bd
Weak stuff always goes to coalesced sections on Darwin
...
llvm-svn: 53340
2008-07-09 19:06:02 +00:00
Dan Gohman
8a421248b9
Remove #include <iostream>.
...
llvm-svn: 53333
2008-07-09 18:08:48 +00:00
Anton Korobeynikov
2b2543166d
Add FIXME needed to be resolved later
...
llvm-svn: 53324
2008-07-09 13:30:02 +00:00
Anton Korobeynikov
32e4256260
Typo
...
llvm-svn: 53322
2008-07-09 13:29:27 +00:00
Anton Korobeynikov
d31e7ad0cf
Revert accidentially added stuff
...
llvm-svn: 53321
2008-07-09 13:29:08 +00:00
Anton Korobeynikov
03614f247c
First sketch of special section objects
...
llvm-svn: 53320
2008-07-09 13:28:49 +00:00
Anton Korobeynikov
395dac000b
Honour text sections
...
llvm-svn: 53319
2008-07-09 13:28:19 +00:00
Anton Korobeynikov
5ad0c235f1
Use isWeakForLinker() hook
...
llvm-svn: 53318
2008-07-09 13:27:59 +00:00
Anton Korobeynikov
f16db15839
Switch to new section name handling facility
...
llvm-svn: 53316
2008-07-09 13:27:16 +00:00
Anton Korobeynikov
1f697cd97b
Another bunch of hacks for named sections support
...
llvm-svn: 53315
2008-07-09 13:26:52 +00:00
Anton Korobeynikov
d0f5cb4490
Typo
...
llvm-svn: 53314
2008-07-09 13:26:24 +00:00
Anton Korobeynikov
93fe3c3fad
Drop mergeable flag, if size is no suitable
...
llvm-svn: 53313
2008-07-09 13:26:05 +00:00
Anton Korobeynikov
df663a8ddf
Fix several bugs in named sections handling
...
llvm-svn: 53312
2008-07-09 13:25:46 +00:00