- Jul 12, 2010
-
-
Rafael Espindola authored
getMinimalPhysRegClass. It was used to produce spills, and it is better to use the most specific class if possible. Update getLoadStoreRegOpcode to handle GR32_AD. llvm-svn: 108115
-
Chris Lattner authored
the LHS and RHS of an and/or instruction, don't multiply add known predecessor values. This fixes the crash on testcase from PR7498 llvm-svn: 108114
-
Chris Lattner authored
llvm-svn: 108113
-
Chris Lattner authored
patch by Lasse Kärkkäinen in PR7404. llvm-svn: 108110
-
Chris Lattner authored
intended functionality change. The avoidance of hoistiing implicitdef seems wrong though. llvm-svn: 108109
-
Chris Lattner authored
patch by Yuri! llvm-svn: 108107
-
Chris Lattner authored
llvm-svn: 108103
-
Chris Lattner authored
llvm-svn: 108102
-
- Jul 11, 2010
-
-
Nick Lewycky authored
load(gep(alloca)) where the gep is all-zeros. There's more we could do here but this is a common case. llvm-svn: 108101
-
Chris Lattner authored
llvm-svn: 108100
-
Jakob Stoklund Olesen authored
The only folding these load/store architectures can do is converting COPY into a load or store, and the target independent part of foldMemoryOperand already knows how to do that. llvm-svn: 108099
-
Jakob Stoklund Olesen authored
operations in x87 code. llvm-svn: 108098
-
Jakob Stoklund Olesen authored
llvm-svn: 108097
-
Jakob Stoklund Olesen authored
We are generating movaps for all XMM register copies, including scalar floating point values. This is known to be at least as good as movss and movsd for all known architectures up to and including Nehalem because it avoids a partial register stall. The SSEDomainFix pass will switch movaps to movdqa when appropriate (i.e., when operands come from the integer unit). We don't now that switching movaps to movapd has any benefit. The same applies to andps -> pand. llvm-svn: 108096
-
Jakob Stoklund Olesen authored
Targets must now implement TargetInstrInfo::copyPhysReg instead. There is no longer a default implementation forwarding to copyRegToReg. llvm-svn: 108095
-
Rafael Espindola authored
llvm-svn: 108094
-
Rafael Espindola authored
The first one was used just to call isSafeToMoveRegClassDefs. In general, using a more specific reg class is better, in practice only x86 implements that method and the results are always the same. The second one is in FindFreeRegister and is used to check if a register is in a register class, a much more direct call to contains is better as it should cover more cases and is faster. llvm-svn: 108093
-
Jakob Stoklund Olesen authored
llvm-svn: 108092
-
Jakob Stoklund Olesen authored
llvm-svn: 108091
-
Chandler Carruth authored
assert()s, switching to void-casts. Removed an unneeded Compiler.h include as a result. There are two other uses in LLVM, but they're not due to assert()s, so I've left them alone. llvm-svn: 108088
-
Jakob Stoklund Olesen authored
llvm-svn: 108087
-
Jakob Stoklund Olesen authored
llvm-svn: 108086
-
Jakob Stoklund Olesen authored
llvm-svn: 108084
-
Jakob Stoklund Olesen authored
llvm-svn: 108083
-
Jakob Stoklund Olesen authored
llvm-svn: 108082
-
Jakob Stoklund Olesen authored
llvm-svn: 108081
-
Jakob Stoklund Olesen authored
llvm-svn: 108080
-
Jakob Stoklund Olesen authored
llvm-svn: 108079
-
Jakob Stoklund Olesen authored
llvm-svn: 108078
-
Jakob Stoklund Olesen authored
llvm-svn: 108077
-
Jakob Stoklund Olesen authored
llvm-svn: 108076
-
Jakob Stoklund Olesen authored
Don't try a cross-class copy. That is very unlikely anywy since return value registers are usually register class friendly. (%EAX, %XMM0, etc). llvm-svn: 108074
-
Jakob Stoklund Olesen authored
This doesn't change the behavior of SelectBitcast for X86. llvm-svn: 108073
-
Rafael Espindola authored
correct alignment information, which simplifies ExpandRes_VAARG a bit. The patch introduces a new alignment information to TargetLoweringInfo. This is needed since the two natural candidates cannot be used: * The 's' in target data: If this is set to the minimal alignment of any argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for example. * The getTransientStackAlignment method. It is possible for an architecture to have argument less aligned than what we maintain the stack pointer. llvm-svn: 108072
-
Jakob Stoklund Olesen authored
This assumes that the registers can be copied which is probably a safe assumption. llvm-svn: 108070
-
Jakob Stoklund Olesen authored
The remaining copyRegToReg calls actually check the return value (shock!), so we cannot trivially replace them with COPY instructions. llvm-svn: 108069
-
Jakob Stoklund Olesen authored
llvm-svn: 108066
-
Jakob Stoklund Olesen authored
llvm-svn: 108065
-
Jakob Stoklund Olesen authored
llvm-svn: 108063
-
Jakob Stoklund Olesen authored
llvm-svn: 108062
-