- Jul 05, 2010
-
-
Chris Lattner authored
the example in the testcase, we now generate: _test1: ## @test1 movss 4(%esp), %xmm0 addss 8(%esp), %xmm0 movl 12(%esp), %eax movss %xmm0, (%eax) ret instead of: _test1: ## @test1 subl $20, %esp movl 24(%esp), %eax movq %mm0, (%esp) movq %mm0, 8(%esp) movss (%esp), %xmm0 addss 12(%esp), %xmm0 movss %xmm0, (%eax) addl $20, %esp ret v2f32 support did not work reliably because most of the X86 backend didn't know it was legal. It was apparently only added to support returning source-level v2f32 values in MMX registers in x86-32 mode. If ABI compatibility is important on this GCC-extended-vector type for some reason, then the frontend should generate IR that returns v2i32 instead of v2f32. However, we generally don't try very hard to be abi compatible on gcc extended vectors. llvm-svn: 107601
-
Chris Lattner authored
v2f32 as legal in 32-bit mode. It is just as terrible there, but I just care about x86-64 and noone claims it is valuable in 64-bit mode. llvm-svn: 107600
-
Chris Lattner authored
llvm-svn: 107599
-
- Jul 04, 2010
-
-
Evan Cheng authored
Infer alignments of fixed frame objects when they are constructed. This ensures remat'ed loads from fixed slots have the right alignments. llvm-svn: 107591
-
Bill Wendling authored
llvm-svn: 107585
-
Bill Wendling authored
(SDNPMemOperand). This way when they're morphed the memory operands will be copied as well. llvm-svn: 107583
-
Bill Wendling authored
llvm-svn: 107581
-
- Jul 03, 2010
-
-
Eli Friedman authored
llvm-svn: 107569
-
Eli Friedman authored
llvm-svn: 107565
-
Bruno Cardoso Lopes authored
llvm-svn: 107560
-
Bruno Cardoso Lopes authored
llvm-svn: 107558
-
Eric Christopher authored
llvm-svn: 107556
-
Bruno Cardoso Lopes authored
llvm-svn: 107552
-
Evan Cheng authored
Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots so it's always false. llvm-svn: 107550
-
Bruno Cardoso Lopes authored
llvm-svn: 107549
-
Jakob Stoklund Olesen authored
This code is transitional, it will soon be possible to eliminate isExtractSubreg, isInsertSubreg, and isMoveInstr in most places. llvm-svn: 107547
-
Bruno Cardoso Lopes authored
llvm-svn: 107540
-
Eric Christopher authored
llvm-svn: 107537
-
Jakob Stoklund Olesen authored
The COPY instruction is intended to replace the target specific copy instructions for virtual registers as well as the EXTRACT_SUBREG and INSERT_SUBREG instructions in MachineFunctions. It won't we used in a selection DAG. COPY is lowered to native register copies by LowerSubregs. llvm-svn: 107529
-
Bruno Cardoso Lopes authored
- Fix VEX prefix to be emitted with 3 bytes whenever VEX_5M represents a REX equivalent two byte leading opcode llvm-svn: 107523
-
- Jul 02, 2010
-
-
Jim Grosbach authored
new basic blocks, and if used as a function argument, that can cause call frame setup / destroy pairs to be split across a basic block boundary. That prevents us from doing a simple assertion to check that the pairs match and alloc/ dealloc the same amount of space. Modify the assertion to only check the amount allocated when there are matching pairs in the same basic block. rdar://8022442 llvm-svn: 107517
-
Devang Patel authored
llvm-svn: 107516
-
Evan Cheng authored
llvm-svn: 107513
-
Evan Cheng authored
- X86 unfolding should check if the instructions being unfolded has memoperands. If there is no memoperands, then it must assume conservative alignment. If this would introduce an expensive sse unaligned load / store, then unfoldMemoryOperand etc. should not unfold the instruction. llvm-svn: 107509
-
Dale Johannesen authored
PrologEpilog code, and use it to determine whether the asm forces stack alignment or not. gcc consistently does not do this for GCC-style asms; Apple gcc inconsistently sometimes does it for asm blocks. There is no convenient place to put a bit in either the SDNode or the MachineInstr form, so I've added an extra operand to each; unlovely, but it does allow for expansion for more bits, should we need it. PR 5125. Some existing testcases are affected. The operand lists of the SDNode and MachineInstr forms are indexed with awesome mnemonics, like "2"; I may fix this someday, but not now. I'm not making it any worse. If anyone is inspired I think you can find all the right places from this patch. llvm-svn: 107506
-
Jakob Stoklund Olesen authored
llvm-svn: 107505
-
Jakob Stoklund Olesen authored
llvm-svn: 107503
-
Gabor Greif authored
llvm-svn: 107500
-
Gabor Greif authored
llvm-svn: 107498
-
Dan Gohman authored
have any effect, and second, deleting stores can potentially invalidate an AliasAnalysis, and there's currently no notification for this. llvm-svn: 107496
-
Jakob Stoklund Olesen authored
This allows us to recognize the common case where all uses could be rematerialized, and no stack slot allocation is necessary. If some values could be fully rematerialized, remove them from the live range before allocating a stack slot for the rest. llvm-svn: 107492
-
Jim Grosbach authored
llvm-svn: 107490
-
Jim Grosbach authored
llvm-svn: 107489
-
Bob Wilson authored
that it checks the immediate values, not just the instructions opcodes. Radar 8110263. llvm-svn: 107487
-
Gabor Greif authored
llvm-svn: 107482
-
Dan Gohman authored
llvm-svn: 107454
-
Dan Gohman authored
llvm-svn: 107451
-
Bruno Cardoso Lopes authored
llvm-svn: 107448
-
Bill Wendling authored
will still be stripped by the linker when it generates the final image. llvm-svn: 107440
-
Bruno Cardoso Lopes authored
llvm-svn: 107438
-