- Oct 08, 2010
-
-
Cameron Esfahani authored
llvm-svn: 116083
-
Jim Grosbach authored
''const'ify getMachineOpValue() and associated helpers.' llvm-svn: 116067
-
Jim Grosbach authored
llvm-svn: 116064
-
Andrew Trick authored
llvm-svn: 116063
-
Jim Grosbach authored
llvm-svn: 116059
-
Cameron Esfahani authored
Small patch to restore home register stack space allocation for the Win64 case. Add test case. This code eventually needs to be tighter, since it's always allocating it, even in leaf routines. llvm-svn: 116056
-
Bob Wilson authored
callee-saved registers at the end of the lists. Also prefer to avoid using the low registers that are in register subclasses required by certain instructions, so that those registers will more likely be available when needed. This change makes a huge improvement in spilling in some cases. Thanks to Jakob for helping me realize the problem. Most of this patch is fixing the testsuite. There are quite a few places where we're checking for specific registers. I changed those to wildcards in places where that doesn't weaken the tests. The spill-q.ll and thumb2-spill-q.ll tests stopped spilling with this change, so I added a bunch of live values to force spills on those tests. llvm-svn: 116055
-
Chris Lattner authored
the i8 versions of instructions in some cases. In test6, we started generating: cmpq $0, -8(%rsp) ## encoding: [0x48,0x81,0x7c,0x24,0xf8,0x00,0x00,0x00,0x00] ## <MCInst #478 CMP64mi32 ## <MCOperand Reg:114> ## <MCOperand Imm:1> ## <MCOperand Reg:0> ## <MCOperand Imm:-8> ## <MCOperand Reg:0> ## <MCOperand Imm:0>> instead of: cmpq $0, -8(%rsp) ## encoding: [0x48,0x83,0x7c,0x24,0xf8,0x00] ## <MCInst #479 CMP64mi8 ## <MCOperand Reg:114> ## <MCOperand Imm:1> ## <MCOperand Reg:0> ## <MCOperand Imm:-8> ## <MCOperand Reg:0> ## <MCOperand Imm:0>> Fix this and add some comments. llvm-svn: 116053
-
Chris Lattner authored
reapply: reimplement the second half of the or/add optimization. We should now with no changes. Turns out that one missing "Defs = [EFLAGS]" can upset things a bit. llvm-svn: 116040
-
Chris Lattner authored
"Reimplement (part of) the or -> add optimization. Matching 'or' into 'add'" With a critical fix: the add pseudos clobber EFLAGS. llvm-svn: 116039
-
Daniel Dunbar authored
'add'", which seems to have broken just about everything. llvm-svn: 116033
-
Daniel Dunbar authored
on r116007, which I am about to revert. llvm-svn: 116032
-
Daniel Dunbar authored
which depends on r116007, which I am about to revert. llvm-svn: 116031
-
Eric Christopher authored
as thumb1. Fixes lencod. llvm-svn: 116027
-
Chris Lattner authored
only end up emitting LEA instead of OR. If we aren't able to promote something into an LEA, we should never be emitting it as an ADD. Add some testcases that we emit "or" in cases where we used to produce an "add". llvm-svn: 116026
-
Jim Grosbach authored
llvm-svn: 116022
-
Jim Grosbach authored
llvm-svn: 116018
-
Chris Lattner authored
casing FsMOVAPDrr/FsMOVAPSrr. llvm-svn: 116016
-
Chris Lattner authored
llvm-svn: 116014
-
Chris Lattner authored
is general goodness because it allows ORs to be converted to LEA to avoid inserting copies. However, this is bad because it makes the generated .s file less obvious and gives valgrind heartburn (tons of false positives in bitfield code). While the general fix should be in valgrind, we can at least try to avoid emitting ADD instructions that *don't* get promoted to LEA. This is more work because it requires introducing pseudo instructions to represents "add that knows the bits are disjoint", but hey, people really love valgrind. This fixes this testcase: https://bugs.kde.org/show_bug.cgi?id=242137#c20 the add r/i cases are coming next. llvm-svn: 116007
-
Evan Cheng authored
llvm-svn: 116002
-
Chris Lattner authored
with the right types. llvm-svn: 116001
-
Chris Lattner authored
llvm-svn: 115997
-
Owen Anderson authored
llvm-svn: 115996
-
Jim Grosbach authored
llvm-svn: 115993
-
- Oct 07, 2010
-
-
Jim Grosbach authored
llvm-svn: 115987
-
Eric Christopher authored
llvm-svn: 115984
-
Chris Lattner authored
use. Since TEST is completely different than all other binops, don't define a multipattern for it. This completes factorization of binops. llvm-svn: 115982
-
Chris Lattner authored
llvm-svn: 115978
-
Evan Cheng authored
Canonicalize X86ISD::MOVDDUP nodes to v2f64 to make sure all cases match. Also eliminate unneeded isel patterns. rdar://8520311 llvm-svn: 115977
-
Jim Grosbach authored
for them from the MCCodeEmitter. llvm-svn: 115975
-
Chris Lattner authored
llvm-svn: 115968
-
Chris Lattner authored
llvm-svn: 115967
-
Owen Anderson authored
llvm-svn: 115966
-
Chris Lattner authored
are not defined as returning EFLAGS (like add_flag and friends), the entire multipattern and several of the subclasses need to be cloned. This could be handled through better instantiation support in tblgen, but it isn't meta enough. llvm-svn: 115964
-
Owen Anderson authored
llvm-svn: 115957
-
Jakob Stoklund Olesen authored
llvm-svn: 115952
-
Kalle Raiskila authored
llvm-svn: 115921
-
Kalle Raiskila authored
Before the implementation of isLegalAddressingMode, some rare cases of code were miscompiled if optimized with the LoopStrengthReduce pass. It is unclear (to me) if LSR is "allowed" to produce wrong code with a bad TargetLowering, or if the bug is elsewhere and this patch just hides it. llvm-svn: 115919
-
Eric Christopher authored
compilation of MultiSource/Benchmarks/Bullet. llvm-svn: 115907
-