- Jul 16, 2010
-
-
Jakob Stoklund Olesen authored
pass that inserted it. It is no longer necessary to limit the live ranges of FP registers to a single basic block. llvm-svn: 108536
-
Jakob Stoklund Olesen authored
llvm-svn: 108535
-
Jakob Stoklund Olesen authored
FP_REG_KILL instructions are still inserted, but can be disabled by passing -live-x87 to llc. The X87FPRegKillInserterPass is going to be removed shortly. CFG edges are partioned into bundles where the x87 stack must be allocated identically. Code is insertad at the end of each basic block that shuffles the live FP registers to match the outgoing bundles expectations. This fix is in preparation for some upcoming register allocator improvements that may extend the live range of registers beyond a basic block, similar to LICM. It also provides a nice runtime speedup if you are building with -mfpmath=387. llvm-svn: 108529
-
Evan Cheng authored
-enable-no-nans-fp-math and -enable-no-infs-fp-math. All of the current codegen fp math optimizations only care whether the fp arithmetics arguments and results can never be NaN. llvm-svn: 108465
-
- Jul 15, 2010
-
-
Chris Lattner authored
this fixes rdar://8192860. Unfortunately it can only be triggered with llc because llvm-mc matches another (correctly encoded) version of this, so no testcase. llvm-svn: 108454
-
Jakob Stoklund Olesen authored
llvm-svn: 108387
-
Jakob Stoklund Olesen authored
lowering atomics. This will allow those copies to still be coalesced after TII::isMoveInstr is removed. llvm-svn: 108385
-
Chris Lattner authored
llvm-svn: 108368
-
Benjamin Kramer authored
llvm-svn: 108366
-
- Jul 14, 2010
-
-
Chris Lattner authored
patch by Michael Spencer! llvm-svn: 108342
-
Evan Cheng authored
address cannot be allocated a register is in 32-bit mode where the first three arguments are marked inreg. In that case EAX, EDX, and ECX will be used for argument passing. This fixes PR7610. llvm-svn: 108327
-
Dan Gohman authored
constants, since they may not be emited near the other instructions which get the same line, and this confuses debug info. llvm-svn: 108302
-
Bruno Cardoso Lopes authored
llvm-svn: 108286
-
- Jul 13, 2010
-
-
Bruno Cardoso Lopes authored
Add the x86 VEX_L form to handle special cases where VEX_L must be set. llvm-svn: 108274
-
Kevin Enderby authored
llvm-svn: 108265
-
Chris Lattner authored
disassembler. Remove some code from the disassembler to compensate, unbreaking disassembly of lea's. llvm-svn: 108226
-
Bruno Cardoso Lopes authored
llvm-svn: 108224
-
Bruno Cardoso Lopes authored
llvm-svn: 108223
-
Bruno Cardoso Lopes authored
llvm-svn: 108222
-
David Greene authored
Move some SIMD fragment code into X86InstrFragmentsSIMD so that the utility classes can be used from multiple files. This will aid transitioning to a new refactored x86 SIMD specification. llvm-svn: 108213
-
Bruno Cardoso Lopes authored
llvm-svn: 108207
-
Bruno Cardoso Lopes authored
llvm-svn: 108204
-
- Jul 12, 2010
-
-
Dan Gohman authored
SD instructions too, in addition to SS instructions. And add a comment about it. llvm-svn: 108191
-
Bruno Cardoso Lopes authored
llvm-svn: 108184
-
Dan Gohman authored
llvm-svn: 108167
-
Dan Gohman authored
support branching on x87 comparisons yet. This fixes PR7624. llvm-svn: 108149
-
Rafael Espindola authored
llvm-svn: 108123
-
Jakob Stoklund Olesen authored
This fixes PR7375. llvm-svn: 108120
-
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
-
- Jul 11, 2010
-
-
Jakob Stoklund Olesen authored
operations in x87 code. llvm-svn: 108098
-
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
llvm-svn: 108091
-
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
The remaining copyRegToReg calls actually check the return value (shock!), so we cannot trivially replace them with COPY instructions. llvm-svn: 108069
-
- Jul 10, 2010
-
-
Jakob Stoklund Olesen authored
Based on a patch by Rafael Espíndola. Attempt to make the FpSET_ST1 hack more robust, but we are still relying on FpSET_ST0 preceeding it. This is only for supporting really weird x87 inline asm. We support: FpSET_ST0 INLINEASM FpSET_ST0 FpSET_ST1 INLINEASM with and without kills on the arguments. We don't support: FpSET_ST1 FpSET_ST0 INLINEASM nor FpSET_ST1 INLINEASM Just Don't Do It! llvm-svn: 108047
-
Dan Gohman authored
- Check getBytesToPopOnReturn(). - Eschew ST0 and ST1 for return values. - Fix the PIC base register initialization so that it doesn't ever fail to end up the top of the entry block. llvm-svn: 108039
-
Jakob Stoklund Olesen authored
it is popped, even if it is ununsed. A CopyFromReg node is too weak to represent the required sideeffect, so insert an FpGET_ST0 instruction directly instead. This will matter when CopyFromReg gets lowered to a generic COPY instruction. llvm-svn: 108037
-
- Jul 09, 2010
-
-
Bruno Cardoso Lopes authored
llvm-svn: 108022
-
Bruno Cardoso Lopes authored
llvm-svn: 108021
-