Bruno Cardoso Lopes
489613f1e5
Replace unpckl_undef and unpckh_undef matching with target specific opcodes
...
llvm-svn: 112806
2010-09-02 05:23:12 +00:00
Bruno Cardoso Lopes
e4e4be3885
Move condition out to prepare for more matching
...
llvm-svn: 112805
2010-09-02 04:20:26 +00:00
Bruno Cardoso Lopes
bf7fd146c7
Remove checking for isUNPCKL_v_undef_Mask, the specific node is already emitted for it
...
llvm-svn: 112804
2010-09-02 03:57:58 +00:00
NAKAMURA Takumi
4fa39acb53
llvm::FindExecutable(): Retrieve the name with suffix.exe, if available.
...
bugpoint uses it.
llvm-svn: 112803
2010-09-02 03:46:04 +00:00
NAKAMURA Takumi
a224e5563e
test/loop-strength-reduce4: Add explicit triplet for Win32 host.
...
llvm-svn: 112802
2010-09-02 03:45:58 +00:00
NAKAMURA Takumi
54ce546865
test/twoaddr-coalesce: Do not use @main .
...
Win32 codegen emits implicit invoking __main into, to fail.
llvm-svn: 112801
2010-09-02 03:45:51 +00:00
Bruno Cardoso Lopes
6a7f634487
become more strict about when it's safe to use X86ISD::MOVLPS
...
llvm-svn: 112799
2010-09-02 02:35:51 +00:00
Eric Christopher
2020d69800
Clang's -ccc-host-triple was ignoring the arch specifier on my triple,
...
I don't need to implement this quite yet - and not for ConstantInt anyhow.
llvm-svn: 112798
2010-09-02 02:30:46 +00:00
Eric Christopher
92db201e23
This should be TargetMaterializeConstant instead.
...
llvm-svn: 112795
2010-09-02 01:48:11 +00:00
Eric Christopher
6a0333c1ed
One definition of isThumb is plenty, thanks.
...
llvm-svn: 112793
2010-09-02 01:39:14 +00:00
Jim Grosbach
8ee5cd99ef
Remove trailing whitespace
...
llvm-svn: 112790
2010-09-02 01:02:06 +00:00
Eric Christopher
74487fcbe7
Rework arm fast-isel load and store handling. Move offset computation
...
into the "address selection" routine and handle constant materialization
for stores.
llvm-svn: 112788
2010-09-02 00:53:56 +00:00
Jim Grosbach
64df92a9b2
Add a bit of debug output for register scavenging
...
llvm-svn: 112787
2010-09-02 00:51:37 +00:00
Chris Lattner
32eff0df9a
updates to make it clear that this applies to clang and other llvm subprojects.
...
llvm-svn: 112781
2010-09-02 00:09:17 +00:00
Jim Grosbach
6f2067659d
trivial cleanup
...
llvm-svn: 112779
2010-09-02 00:02:26 +00:00
Jim Grosbach
dffc9d328d
Simplify the tGPR register class now that the register allocators know not
...
to try to allocate reserved registers.
llvm-svn: 112774
2010-09-01 23:50:23 +00:00
Bob Wilson
38ab35a911
Remove NEON vmull, vmlal, and vmlsl intrinsics, replacing them with multiply,
...
add, and subtract operations with zero-extended or sign-extended vectors.
Update tests. Add auto-upgrade support for the old intrinsics.
llvm-svn: 112773
2010-09-01 23:50:19 +00:00
Dan Gohman
faa30f531a
Reword this comment. Don't mention outs(), as that's not what
...
this code is actually testing for.
llvm-svn: 112767
2010-09-01 23:33:02 +00:00
Chris Lattner
8af45a889d
deepen my MMX/SRoA hack to avoid hurting non-x86 codegen.
...
llvm-svn: 112763
2010-09-01 23:09:27 +00:00
Bruno Cardoso Lopes
04c25c15c7
Revert r112689, avoid those kind of checks cause they mess up with mmx
...
llvm-svn: 112760
2010-09-01 22:59:03 +00:00
Jim Grosbach
63a8eaf559
Tweak to ignoring reserved regs. The allocator was occasionally still looking
...
at them since they'd end up in the register weights list. Tell it to stop
doing that.
llvm-svn: 112756
2010-09-01 22:48:34 +00:00
Dale Johannesen
092d3467bc
Recommit with changes. Comment out palignr for the
...
moment, as there's a testcase that uses it and expects it
to be subject to optimizations; we won't be doing that.
Some adjustments based on feedback from Bill.
llvm-svn: 112754
2010-09-01 22:43:48 +00:00
Bruno Cardoso Lopes
fea81b4831
Using target specific nodes for shuffle nodes makes the mask
...
check more strict, breaking some cases not checked in the
testsuite, but also exposes some foldings not done before,
as this example:
movaps (%rdi), %xmm0
movaps (%rax), %xmm1
movaps %xmm0, %xmm2
movss %xmm1, %xmm2
shufps $36, %xmm2, %xmm0
now is generated as:
movaps (%rdi), %xmm0
movaps %xmm0, %xmm1
movlps (%rax), %xmm1
shufps $36, %xmm1, %xmm0
llvm-svn: 112753
2010-09-01 22:33:20 +00:00
Eric Christopher
fde5a3d494
Some basic store support.
...
llvm-svn: 112752
2010-09-01 22:16:27 +00:00
Jakob Stoklund Olesen
4b6fd48bba
Teach RemoveCopyByCommutingDef to check all aliases, not just subregisters.
...
This caused a miscompilation in WebKit where %RAX had conflicting defs when
RemoveCopyByCommutingDef was commuting a %EAX use.
llvm-svn: 112751
2010-09-01 22:15:35 +00:00
Dale Johannesen
78d95e0089
Apparently only Darwin passes long double misaligned. Compensate.
...
llvm-svn: 112748
2010-09-01 21:57:20 +00:00
Jim Grosbach
d5e72a1e84
tidy up trailing whitespace and an 80 column violation.
...
llvm-svn: 112746
2010-09-01 21:48:06 +00:00
Dan Gohman
0ad7d9c24e
Fix loop unswitching's assumption that a code path which either
...
infinite loops or exits will eventually exit. This fixes PR5373.
llvm-svn: 112745
2010-09-01 21:46:45 +00:00
Dale Johannesen
a1a33fc252
Revert 112740, it broke some clang tests somehow...
...
llvm-svn: 112744
2010-09-01 21:36:44 +00:00
Jim Grosbach
9dce31438d
cleanup per feedback. use a helper function for getting the first non-reserved
...
physical register in a register class. Make sure to assert if the register
class is empty.
llvm-svn: 112743
2010-09-01 21:34:41 +00:00
Jim Grosbach
b070ddf6b4
The register allocator shouldn't consider allocating reserved registers. PBQP version.
...
llvm-svn: 112742
2010-09-01 21:23:03 +00:00
Jim Grosbach
5ccf18c2fc
The register allocator shouldn't consider allocating reserved registers.
...
r112728 did this for fast regalloc.
llvm-svn: 112741
2010-09-01 21:04:27 +00:00
Dale Johannesen
973ddaa088
Add a few more missing MMX operations. This should be it.
...
llvm-svn: 112740
2010-09-01 21:03:03 +00:00
Chris Lattner
44ab470c8e
update the tutorial to use CreateFAdd to create fp operations.
...
llvm-svn: 112733
2010-09-01 20:09:20 +00:00
Jim Grosbach
df6b67bf85
The register allocator shouldn't consider allocating reserved registers.
...
llvm-svn: 112728
2010-09-01 19:28:41 +00:00
Owen Anderson
5925053b32
Disable CorrelatedValuePropagation while I track down selfhost failures.
...
llvm-svn: 112727
2010-09-01 19:20:46 +00:00
Jim Grosbach
cb2e56fa82
tidy up a few 80-column and trailing whitespace bits.
...
llvm-svn: 112726
2010-09-01 19:16:29 +00:00
Bill Wendling
6456efaffd
The output of opt -stats must be sent to stderr. Patch by NAKAMURA Takumi!
...
llvm-svn: 112724
2010-09-01 18:32:56 +00:00
Owen Anderson
c637c49c11
Tentatively add correlated value propagation to the set of standard passes.
...
llvm-svn: 112723
2010-09-01 18:30:15 +00:00
Owen Anderson
73f988cafa
JumpThreading keeps LazyValueInfo up to date, so we don't need to rerun it
...
if we schedule another LVI-using pass afterwards.
llvm-svn: 112722
2010-09-01 18:27:22 +00:00
Eric Christopher
3ce9c4a65f
Add some more load types in.
...
llvm-svn: 112721
2010-09-01 18:01:32 +00:00
Eric Christopher
a5d315c665
Speculatively revert 112699 and 112702, they seem to be causing
...
self host errors on clang-x86-64.
llvm-svn: 112719
2010-09-01 17:29:10 +00:00
Chris Lattner
c19eaaa9d4
have the makefiles check the llvm-config error code instead of charging
...
on an producing weird link errors. Patch by Yuri Gribov!
llvm-svn: 112714
2010-09-01 16:11:17 +00:00
Chris Lattner
49a79412de
dead code patrol
...
llvm-svn: 112713
2010-09-01 16:06:39 +00:00
Chris Lattner
94f834348f
zap dead code.
...
llvm-svn: 112712
2010-09-01 16:04:34 +00:00
Chris Lattner
39eccb4754
temporarily revert r112664, it is causing a decoding conflict, and
...
the testcases should be merged.
llvm-svn: 112711
2010-09-01 16:00:50 +00:00
Chris Lattner
2333b12c8a
zap dead code.
...
llvm-svn: 112708
2010-09-01 15:44:05 +00:00
Chris Lattner
ec8724f250
remove dead code.
...
llvm-svn: 112707
2010-09-01 15:39:31 +00:00
Dan Gohman
a2233f2801
Make tool_output_file's raw_ostream instance a member variable instead
...
of a base class.
This makes it possible to unregister the file from FilesToRemove when
the file is done. Also, this eliminates the need for
formatted_tool_output_file.
llvm-svn: 112706
2010-09-01 14:20:41 +00:00
Dan Gohman
e201c07d23
Add an interface for unregistering a file from the FilesToRemove list.
...
llvm-svn: 112705
2010-09-01 14:17:34 +00:00
Michael J. Spencer
d8e5dfccc1
COFF: Update tests to reflect changes in last commit.
...
llvm-svn: 112704
2010-09-01 14:15:31 +00:00
Michael J. Spencer
c582c7b5c9
COFF: Fix incorrect SCT_COMPLEX_TYPE_SHIFT. Add a few constants.
...
llvm-svn: 112703
2010-09-01 14:09:36 +00:00
Duncan Sands
4d51e3fd17
Use the SSAUpdator to turn calls to eh.exception that are not in a
...
landing pad into uses of registers rather than loads from a stack
slot. Doesn't touch the 'orrible hack code - Bill needs to persuade
me harder :)
llvm-svn: 112702
2010-09-01 14:07:47 +00:00
Dan Gohman
858806fb8b
Make the iterator form of erase return void, since it always succeeds,
...
and since this is what std::map and std::set do.
llvm-svn: 112701
2010-09-01 14:00:35 +00:00
Duncan Sands
2afaef80e9
Define LLVM_GLOBAL_VISIBILITY to be __declspec(dllexport) on
...
windows systems.
llvm-svn: 112700
2010-09-01 13:07:11 +00:00
Duncan Sands
f7b18437b5
If PrototypeValue is erased in the middle of using the SSAUpdator
...
then the SSAUpdator may access freed memory. Instead, simply pass
in the type and name explicitly, which is all that was used anyway.
llvm-svn: 112699
2010-09-01 10:29:33 +00:00
Duncan Sands
5e2e7d7ff3
Add convenience class for working with eh.exception calls.
...
llvm-svn: 112698
2010-09-01 09:26:00 +00:00
Dale Johannesen
e13c04d6da
Attempt to fix buildbot.
...
llvm-svn: 112697
2010-09-01 05:19:06 +00:00
Chris Lattner
34e5361eb5
add a gross hack to work around a problem that Argiris reported
...
on llvmdev: SRoA is introducing MMX datatypes like <1 x i64>,
which then cause random problems because the X86 backend is
producing mmx stuff without inserting proper emms calls.
In the short term, force off MMX datatypes. In the long term,
the X86 backend should not select generic vector types to MMX
registers. This is being worked on, but won't be done in time
for 2.8. rdar://8380055
llvm-svn: 112696
2010-09-01 05:14:33 +00:00
Chris Lattner
b9ed4f252f
filecheckize
...
llvm-svn: 112695
2010-09-01 05:10:14 +00:00
Bruno Cardoso Lopes
b3825216ce
Use movlps, movlpd, movss and movsd specific nodes instead of pattern matching with movlp pattern fragment
...
llvm-svn: 112694
2010-09-01 05:08:25 +00:00
Dan Gohman
110ed64fbb
Revert 112442 and 112440 until the compile time problems introduced
...
by 112440 are resolved.
llvm-svn: 112692
2010-09-01 01:45:53 +00:00
Bruno Cardoso Lopes
6aaebe877b
minor change, simplify some logic
...
llvm-svn: 112689
2010-09-01 00:57:08 +00:00
Bruno Cardoso Lopes
2b025707a2
Move some functions around so they can be used for some other to come function
...
llvm-svn: 112687
2010-09-01 00:51:36 +00:00
Dale Johannesen
56661c5011
Add some MMX intrinsics that duplicate functionality
...
available in normal llvm operators. We aren't going to
use those for MMX any more because it's unsafe for the
optimizers to synthesize new MMX instructions.
llvm-svn: 112685
2010-09-01 00:40:09 +00:00
Devang Patel
ea63639da5
Use absolute label for DW_AT_stmt_list if a target does not prefer offset here.
...
This patch was developed on top of original patch by Artur Pietrek.
llvm-svn: 112678
2010-08-31 23:50:19 +00:00
Dale Johannesen
52bd0dc3bb
Testcase for llvm checkin 112674.
...
llvm-svn: 112675
2010-08-31 23:43:55 +00:00
Benjamin Kramer
1835c13fc2
Remove noisy semicolon.
...
llvm-svn: 112673
2010-08-31 23:38:13 +00:00
Chris Lattner
030f02021b
licm is wasting time hoisting constant foldable operations,
...
instead of hoisting them, just fold them away. This occurs in the
testcase for PR8041, for example.
llvm-svn: 112669
2010-08-31 23:00:16 +00:00
Kevin Enderby
d94dacf829
This is the second of three patches to implement support for the .loc directive
...
and output the dwarf line number tables. This takes the current loc info after
an instruction is assembled and saves the needed info into an object that has
vector and for each section. These objects will be used for the final patch to
build and emit the encoded dwarf line number tables. Again for now this is only
in the Mach-O streamer but at some point will move to a more generic place.
llvm-svn: 112668
2010-08-31 22:55:11 +00:00
Dan Gohman
47308d5da3
Reapply r112432, now that the real problem is addressed.
...
llvm-svn: 112667
2010-08-31 22:53:17 +00:00
Dan Gohman
f01a5eed1e
Reapply r112433, now that the real problem is addressed.
...
llvm-svn: 112666
2010-08-31 22:52:12 +00:00
Dan Gohman
aabfc52790
Revert r110916. This patch is buggy because the code inside the
...
inner loop doesn't update all the variables in the outer loop.
llvm-svn: 112665
2010-08-31 22:50:31 +00:00
Bill Wendling
6789f8b6ae
We have a chance for an optimization. Consider this code:
...
int x(int t) {
if (t & 256)
return -26;
return 0;
}
We generate this:
tst.w r0, #256
mvn r0, #25
it eq
moveq r0, #0
while gcc generates this:
ands r0, r0, #256
it ne
mvnne r0, #25
bx lr
Scandalous really!
During ISel time, we can look for this particular pattern. One where we have a
"MOVCC" that uses the flag off of a CMPZ that itself is comparing an AND
instruction to 0. Something like this (greatly simplified):
%r0 = ISD::AND ...
ARMISD::CMPZ %r0, 0 @ sets [CPSR]
%r0 = ARMISD::MOVCC 0, -26 @ reads [CPSR]
All we have to do is convert the "ISD::AND" into an "ARM::ANDS" that sets [CPSR]
when it's zero. The zero value will all ready be in the %r0 register and we only
need to change it if the AND wasn't zero. Easy!
llvm-svn: 112664
2010-08-31 22:41:22 +00:00
Anton Korobeynikov
4e7351d2ba
Some fixes for NetBSD
...
llvm-svn: 112662
2010-08-31 22:38:00 +00:00
Bruno Cardoso Lopes
4b56d87290
Use x86 specific MOVSLDUP node, add more patterns to match it and remove useless load nodes
...
llvm-svn: 112661
2010-08-31 22:35:05 +00:00
Devang Patel
86ec8b3a3f
Reapply r112623. Included additional check for unused byval argument.
...
llvm-svn: 112659
2010-08-31 22:22:42 +00:00
Bruno Cardoso Lopes
61996ef835
Use x86 specific MOVSHDUP node and add more patterns to match it
...
llvm-svn: 112657
2010-08-31 22:22:11 +00:00
Bill Wendling
d657d82597
And ANDS pattern to match the t2ANDS pattern.
...
llvm-svn: 112654
2010-08-31 22:05:37 +00:00
Jakob Stoklund Olesen
94e90b9406
Stack slot access methods are in TargetInstrInfo.
...
llvm-svn: 112653
2010-08-31 22:01:07 +00:00
Dale Johannesen
9b7fdc0483
Comment typo.
...
llvm-svn: 112652
2010-08-31 21:53:15 +00:00
Jakob Stoklund Olesen
33e9fce2d6
Make %EFLAGS unallocatable.
...
No CCR virtual registers should exist, and %EFLAGS is used in ways that can
surprise RegAllocFast.
llvm-svn: 112650
2010-08-31 21:51:07 +00:00
Jakob Stoklund Olesen
7993dae7bd
Track liveness of unallocatable, unreserved registers in machine DCE.
...
Reserved registers are unpredictable, and are treated as always live by machine
DCE.
Allocatable registers are never reserved, and can be used for virtual registers.
Unreserved, unallocatable registers can not be used for virtual registers, but
otherwise behave like a normal allocatable register. Most targets only have
the flag register in this set.
llvm-svn: 112649
2010-08-31 21:51:05 +00:00
Bruno Cardoso Lopes
5de15ce468
Use MOVHLPS node instead of matching using movhlps and movhlps_undef pattern fragments
...
llvm-svn: 112644
2010-08-31 21:38:49 +00:00
Chris Lattner
daca6f3483
tidy up
...
llvm-svn: 112643
2010-08-31 21:21:25 +00:00
Bruno Cardoso Lopes
03e4c35302
Use MOVLHPS and MOVHLPS x86 nodes whenever possible. Also remove some useless nodes
...
llvm-svn: 112642
2010-08-31 21:15:21 +00:00
Dan Gohman
90f29bcd90
Revert r112432. It appears to be exposing a problem in the emacs build.
...
llvm-svn: 112638
2010-08-31 20:58:44 +00:00
Owen Anderson
a5e6b3eca4
Merge 2010-08-31-InfiniteRecursion.ll into crash.ll.
...
llvm-svn: 112635
2010-08-31 20:27:17 +00:00
Owen Anderson
3c84ecb067
More cleanups of my JumpThreading transforms, including extracting some duplicated code into a helper function.
...
llvm-svn: 112634
2010-08-31 20:26:04 +00:00
Jakob Stoklund Olesen
2c325dc907
Ignore unallocatable registers in RegAllocFast.
...
llvm-svn: 112632
2010-08-31 19:54:25 +00:00
Devang Patel
529f248eb4
Revert r112623. It is causing self host build failures.
...
llvm-svn: 112631
2010-08-31 19:41:03 +00:00
Duncan Sands
11c23fc349
Update the Ada instructions to LLVM 2.7 (from LLVM 2.5).
...
llvm-svn: 112630
2010-08-31 19:40:21 +00:00
Owen Anderson
6fdcb172a9
Add an RAII helper to make cleanup of the RecursionSet more fool-proof.
...
llvm-svn: 112628
2010-08-31 19:24:27 +00:00
Owen Anderson
048efbe225
Only try to clean up the current block if we changed that block already.
...
llvm-svn: 112625
2010-08-31 18:55:52 +00:00
Jim Grosbach
9ce9210e47
SP relative offsets need to be adjusted by the local allocation size when
...
determining if they're likely to be in range of the SP when resolving
frame references.
llvm-svn: 112624
2010-08-31 18:52:31 +00:00
Devang Patel
8559932d36
Remember byval argument's frame index during argument lowering and use this info to emit debug info.
...
Fixes Radar 8367011.
llvm-svn: 112623
2010-08-31 18:50:09 +00:00
Jim Grosbach
6f6b590b99
this assert should just be a condition, since this function is just asking if
...
the offset is legally encodable, not actually trying to do the encoding.
llvm-svn: 112622
2010-08-31 18:49:31 +00:00
Owen Anderson
799a08ae48
Add a test for the duplicated-conditional situation illutrated by PR5652.
...
llvm-svn: 112621
2010-08-31 18:49:12 +00:00
Owen Anderson
cd4de7f399
Refactor my fix for PR5652 to terminate the predecessor lookups after the first failure.
...
llvm-svn: 112620
2010-08-31 18:48:48 +00:00
Chris Lattner
e2295f1c80
merge two tests.
...
llvm-svn: 112617
2010-08-31 18:44:03 +00:00