- 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
-
- Apr 03, 2009
-
-
Mon P Wang authored
movq for v2i64 on x86-32. llvm-svn: 68368
-
- Apr 02, 2009
-
-
Chris Lattner authored
llvm-svn: 68253
-
- Mar 31, 2009
-
-
Evan Cheng authored
llvm-svn: 68133
-
Dan Gohman authored
entered via fall-through. Don't miss fallthroughs from blocks terminated by conditional branches. Also, move isOnlyReachableByFallthrough out of line. llvm-svn: 68129
-
Rafael Espindola authored
llvm-svn: 68109
-
Bill Wendling authored
llvm-svn: 68100
-
Bill Wendling authored
llvm-svn: 68099
-
Bill Wendling authored
llvm-svn: 68092
-
Evan Cheng authored
X86 address mode isel tweak. If the base of the address is also used by a CopyToReg (i.e. it's likely live-out), do not fold the sub-expressions into the addressing mode to avoid computing the address twice. The CopyToReg use will be isel'ed to a LEA, re-use it for address instead. This is not yet enabled. llvm-svn: 68082
-
Dan Gohman authored
only reachable via fall-through edges. This dramatically reduces the number of labels printed, and thus also the number of labels the assembler must parse and remember. llvm-svn: 68073
-
- 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
-
Anton Korobeynikov authored
Do not propagate ELF-specific stuff (data.rel) into other targets. This simplifies code and also ensures correctness. llvm-svn: 68032
-
Anton Korobeynikov authored
llvm-svn: 68031
-
- Mar 28, 2009
-
-
Rafael Espindola authored
llvm-svn: 67950
-
Rafael Espindola authored
llvm-svn: 67949
-
Rafael Espindola authored
of operands in an address in so many places. llvm-svn: 67945
-
Evan Cheng authored
Optimize some 64-bit multiplication by constants into two lea's or one lea + shl since imulq is slow (latency 5). e.g. x * 40 => shlq $3, %rdi leaq (%rdi,%rdi,4), %rax This has the added benefit of allowing more multiply to be folded into addressing mode. e.g. a * 24 + b => leaq (%rdi,%rdi,2), %rax leaq (%rsi,%rax,8), %rax llvm-svn: 67917
-
- Mar 27, 2009
-
-
Rafael Espindola authored
llvm-svn: 67848
-
Rafael Espindola authored
llvm-svn: 67846
-
Rafael Espindola authored
improve TLS support (see http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090309/075220.html), but that code is VERY brittle. This patch just makes it a bit more resistant. llvm-svn: 67843
-
Evan Cheng authored
llvm-svn: 67784
-
- Mar 26, 2009
-
-
Bill Wendling authored
llvm-svn: 67742
-
Bill Wendling authored
%a = ... %b = and i32 %a, 2 %c = srl i32 %b, 1 %d = br i32 %c, into %a = ... %b = and %a, 2 %c = X86ISD::CMP %b, 0 %d = X86ISD::BRCOND %c ... This applies only when the AND constant value has one bit set and the SRL constant is equal to the log2 of the AND constant. The back-end is smart enough to convert the result into a TEST/JMP sequence. llvm-svn: 67728
-
Bill Wendling authored
llvm-svn: 67727
-
- Mar 25, 2009
-
-
Evan Cheng authored
llvm-svn: 67668
-
Evan Cheng authored
llvm-svn: 67667
-
- Mar 24, 2009
-
-
Dan Gohman authored
to be returned in DL. LLVM's multiple-return-value support is not ABI-conforming; front-ends that wish to have code emitted that conforms to an ABI are currently expected to make arrangements for this on their own rather than assuming that multiple-return-values will automatically do the right thing. This commit doesn't fundamentally change this situation. llvm-svn: 67588
-
Evan Cheng authored
llvm-svn: 67580
-
- Mar 23, 2009
-
-
Dan Gohman authored
llvm-svn: 67518
-
Evan Cheng authored
Model inline asm constraint which ties an input to an output register as machine operand TIED_TO constraint. This eliminated the need to pre-allocate registers for these. This also allows register allocator can eliminate the unneeded copies. llvm-svn: 67512
-
Dan Gohman authored
llvm-svn: 67507
-
Dan Gohman authored
i8 return values. llvm-svn: 67502
-
- Mar 19, 2009
-
-
Nick Lewycky authored
llvm-svn: 67287
-
- Mar 18, 2009
-
-
Chris Lattner authored
not safe in general because the immediate could be an arbitrary value that does not fit in a 32-bit pcrel displacement. Conservatively fall back to loading the value into a register and calling through it. We still do the optzn on X86-32. llvm-svn: 67142
-
- Mar 17, 2009
-
-
Dan Gohman authored
llvm-svn: 67072
-
Dan Gohman authored
llvm-svn: 67071
-
- Mar 14, 2009
-
-
Dan Gohman authored
it has a smaller encoding than absolute addressing. llvm-svn: 67002
-
Dan Gohman authored
operand is a signed 32-bit immediate. Unlike with the 8-bit signed immediate case, it isn't actually smaller to fold a 32-bit signed immediate instead of a load. In fact, it's larger in the case of 32-bit unsigned immediates, because they can be materialized with movl instead of movq. llvm-svn: 67001
-
Dan Gohman authored
ptrtoint and inttoptr in X86FastISel. These casts aren't always handled in the generic FastISel code because X86 sometimes needs custom code to do truncation and zero-extension. llvm-svn: 66988
-