- Jun 15, 2009
-
-
Bill Wendling authored
llvm-svn: 73417
-
Bill Wendling authored
that push immediate operands of 1, 2, and 4 bytes (extended to the native register size in each case). The assembly mnemonics are "pushl" and "pushq." One such instruction appears at the beginning of the "start" function , so this is essential for accurate disassembly when unwinding." Patch by Sean Callanan! llvm-svn: 73407
-
- Jun 03, 2009
-
-
Dan Gohman authored
relocation model on x86-64. Higher level logic should override the relocation model to PIC on x86_64-apple-darwin. llvm-svn: 72746
-
- Jun 02, 2009
-
-
Evan Cheng authored
llvm-svn: 72734
-
Dale Johannesen authored
llvm-svn: 72712
-
Dale Johannesen authored
ADDC/ADDE use MVT::i1 (later, whatever it gets legalized to) instead of MVT::Flag. Remove CARRY_FALSE in favor of 0; adjust all target-independent code to use this format. Most targets will still produce a Flag-setting target-dependent version when selection is done. X86 is converted to use i32 instead, which means TableGen needs to produce different code in xxxGenDAGISel.inc. This keys off the new supportsHasI1 bit in xxxInstrInfo, currently set only for X86; in principle this is temporary and should go away when all other targets have been converted. All relevant X86 instruction patterns are modified to represent setting and using EFLAGS explicitly. The same can be done on other targets. The immediate behavior change is that an ADC/ADD pair are no longer tightly coupled in the X86 scheduler; they can be separated by instructions that don't clobber the flags (MOV). I will soon add some peephole optimizations based on using other instructions that set the flags to feed into ADC. llvm-svn: 72707
-
- May 29, 2009
-
-
Evan Cheng authored
llvm-svn: 72558
-
- May 20, 2009
-
-
Evan Cheng authored
llvm-svn: 72160
-
Evan Cheng authored
llvm-svn: 72154
-
- May 18, 2009
-
-
Dale Johannesen authored
llvm-svn: 72045
-
Dale Johannesen authored
Some comment cleanup. llvm-svn: 72022
-
- May 11, 2009
-
-
Dan Gohman authored
address folding. llvm-svn: 71446
-
- May 05, 2009
-
-
Chris Lattner authored
addrspace(257) -> FS relative on x86. Patch by Zoltan Varga! llvm-svn: 70992
-
- Apr 30, 2009
-
-
Dan Gohman authored
llvm-svn: 70466
-
Evan Cheng authored
llvm-svn: 70461
-
- Apr 27, 2009
-
-
Nate Begeman authored
PR2957 ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes as the shuffle mask. A value of -1 represents UNDEF. In addition to eliminating the creation of illegal BUILD_VECTORS just to represent shuffle masks, we are better about canonicalizing the shuffle mask, resulting in substantially better code for some classes of shuffles. llvm-svn: 70225
-
Dan Gohman authored
to precisely describe the h-register subreg register classes. Thanks to Jakob Stoklund Olesen for spotting this and for the initial patch! Also, make getStoreRegOpcode and getLoadRegOpcode aware of the needs of h registers. llvm-svn: 70211
-
Dan Gohman authored
GR32_ABCD, and GR64_ABCD, respectively, to help describe them. llvm-svn: 70210
-
Dan Gohman authored
llvm-svn: 70209
-
Mon P Wang authored
llvm-svn: 70197
-
- Apr 24, 2009
-
-
Rafael Espindola authored
very elegant, but neither is the tls specification :-( llvm-svn: 69968
-
Rafael Espindola authored
llvm-svn: 69967
-
Nate Begeman authored
ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes as the shuffle mask. A value of -1 represents UNDEF. In addition to eliminating the creation of illegal BUILD_VECTORS just to represent shuffle masks, we are better about canonicalizing the shuffle mask, resulting in substantially better code for some classes of shuffles. A clean up of x86 shuffle code, and some canonicalizing in DAGCombiner is next. llvm-svn: 69952
-
- Apr 21, 2009
-
-
Rafael Espindola authored
This fixes PR4002. llvm-svn: 69672
-
- Apr 17, 2009
-
-
Rafael Espindola authored
leaq foo@TLSGD(%rip), %rdi as part of the instruction sequence. Using a register other than %rdi and then copying it to %rdi is not valid. llvm-svn: 69350
-
- Apr 15, 2009
-
-
Dan Gohman authored
llvm-svn: 69204
-
Dan Gohman authored
either the source or destination is a physical h register. This fixes sqlite3 with the post-RA scheduler enabled. llvm-svn: 69111
-
- Apr 13, 2009
-
-
Dan Gohman authored
it accordingly. Thanks to Jakob Stoklund Olesen for pointing out how this might be useful. llvm-svn: 68986
-
Dan Gohman authored
- Add patterns for h-register extract, which avoids a shift and mask, and in some cases a temporary register. - Add address-mode matching for turning (X>>(8-n))&(255<<n), where n is a valid address-mode scale value, into an h-register extract and a scaled-offset address. - Replace X86's MOV32to32_ and related instructions with the new target-independent COPY_TO_SUBREG instruction. On x86-64 there are complicated constraints on h registers, and CodeGen doesn't currently provide a high-level way to express all of them, so they are handled with a bunch of special code. This code currently only supports extracts where the result is used by a zero-extend or a store, though these are fairly common. These transformations are not always beneficial; since there are only 4 h registers, they sometimes require extra move instructions, and this sometimes increases register pressure because it can force out values that would otherwise be in one of those registers. However, this appears to be relatively uncommon. llvm-svn: 68962
-
- Apr 10, 2009
-
-
Chris Lattner authored
It turns out that there are still several problems with this, will file a bugzilla. llvm-svn: 68749
-
- Apr 08, 2009
-
-
Rafael Espindola authored
Tested by bootstrapping llvm-gcc and using that to build llvm. llvm-svn: 68645
-
Bill Wendling authored
builds. --- Reverse-merging (from foreign repository) r68552 into '.': U test/CodeGen/X86/tls8.ll U test/CodeGen/X86/tls10.ll U test/CodeGen/X86/tls2.ll U test/CodeGen/X86/tls6.ll U lib/Target/X86/X86Instr64bit.td U lib/Target/X86/X86InstrSSE.td U lib/Target/X86/X86InstrInfo.td U lib/Target/X86/X86RegisterInfo.cpp U lib/Target/X86/X86ISelLowering.cpp U lib/Target/X86/X86CodeEmitter.cpp U lib/Target/X86/X86FastISel.cpp U lib/Target/X86/X86InstrInfo.h U lib/Target/X86/X86ISelDAGToDAG.cpp U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h U lib/Target/X86/X86ISelLowering.h U lib/Target/X86/X86InstrInfo.cpp U lib/Target/X86/X86InstrBuilder.h U lib/Target/X86/X86RegisterInfo.td llvm-svn: 68560
-
- Apr 07, 2009
-
-
Rafael Espindola authored
This introduces a small regression on the generated code quality in the case we are just computing addresses, not loading values. Will work on it and on X86-64 support. llvm-svn: 68552
-
- Mar 30, 2009
-
-
Evan Cheng authored
When optimzing a mul by immediate into two, the resulting mul's should get a x86 specific node to avoid dag combiner from hacking on them further. llvm-svn: 68066
-
- Mar 13, 2009
-
-
Rafael Espindola authored
add a fixme note on how to remove code duplication. llvm-svn: 66932
-
Rafael Espindola authored
llvm-svn: 66922
-
- Mar 12, 2009
-
-
Evan Cheng authored
Re-apply 66024 with fixes: 1. Fixed indirect call to immediate address assembly. 2. Fixed JIT encoding by making the address pc-relative. llvm-svn: 66803
-
Dan Gohman authored
assembly text output uses an indirect call ("call *") instead of a direct call. llvm-svn: 66735
-
- Mar 11, 2009
-
-
Rafael Espindola authored
llvm-svn: 66725
-
- Mar 05, 2009
-
-
Dan Gohman authored
INC64_32r and INC64_16r, because these instructions are encoded differently on x86-64. This fixes JIT regressions on x86-64 in kimwitu++ and others. llvm-svn: 66207
-