- Nov 01, 2012
-
-
Shuxin Yang authored
The adc/sbb optimization is to able to convert following expression into a single adc/sbb instruction: (ult) ... = x + 1 // where the ult is unsigned-less-than comparison (ult) ... = x - 1 This change is to flip the "x >u y" (i.e. ugt comparison) in order to expose the adc/sbb opportunity. llvm-svn: 167180
-
- Oct 31, 2012
-
-
Nadav Rotem authored
llvm-svn: 167174
-
Nadav Rotem authored
llvm-svn: 167170
-
Andrew Kaylor authored
llvm-svn: 167164
-
Rafael Espindola authored
llvm-svn: 167157
-
Akira Hatanaka authored
re-materialization of immediate loads. llvm-svn: 167153
-
Amara Emerson authored
MCJIT unit test: add calls to ensure that instruction caches are properly invalidated before code execution. llvm-svn: 167146
-
Amara Emerson authored
llvm-svn: 167145
-
Amara Emerson authored
llvm-svn: 167144
-
Arnold Schwaighofer authored
We no longer have a tail duplication pass that runs on LLVM IR. It was removed in 3.0. llvm-svn: 167140
-
Akira Hatanaka authored
mips16. llvm-svn: 167139
-
Eli Bendersky authored
llvm-svn: 167137
-
Benjamin Kramer authored
- Use value handle tricks to communicate use replacements instead of forgetLoop, this is a lot faster. - Move the "big hammer" out of the main loop so it's not called for every instruction. This should recover most (if not all) compile time regressions introduced by this code. llvm-svn: 167136
-
Nadav Rotem authored
llvm-svn: 167134
-
Ulrich Weigand authored
These tests were all failing since the old JIT doesn't work for PowerPC (any more), and there are no plans to attempt to fix it again (instead, work focuses on MCJIT). llvm-svn: 167133
-
Hans Wennborg authored
SimplifyCFG will have removed those cases for us. llvm-svn: 167132
-
Nadav Rotem authored
llvm-svn: 167131
-
Hans Wennborg authored
llvm-svn: 167130
-
Hal Finkel authored
BBVectorize would, except for loads and stores, always fuse instructions so that the first instruction (in the current source order) would always represent the low part of the input vectors and the second instruction would always represent the high part. This lead to too many shuffles being produced because sometimes the opposite order produces fewer of them. With this change, BBVectorize tracks the kind of pair connections that form the DAG of candidate pairs, and uses that information to reorder the pairs to avoid excess shuffles. Using this information, a future commit will be able to add VTTI-based shuffle costs to the pair selection procedure. Importantly, the number of remaining shuffles can now be estimated during pair selection. There are some trivial instruction reorderings in the test cases, and one simple additional test where we certainly want to do a reordering to avoid an unnecessary shuffle. llvm-svn: 167122
-
Hans Wennborg authored
- Use 0 instead of NULL - Helper function for "dyn_cast, else lookup in the constant pool". llvm-svn: 167121
-
Meador Inge authored
This patch migrates the strto* optimizations from the simplify-libcalls pass into the instcombine library call simplifier. llvm-svn: 167119
-
Hans Wennborg authored
llvm-svn: 167117
-
Benjamin Kramer authored
No functionality change. llvm-svn: 167116
-
Hans Wennborg authored
By propagating the value for the switch condition, LLVM can now build lookup tables for code such as: switch (x) { case 1: return 5; case 2: return 42; case 3: case 4: case 5: return x - 123; default: return 123; } Given that x is known for each case, "x - 123" becomes a constant for cases 3, 4, and 5. llvm-svn: 167115
-
Benjamin Kramer authored
llvm-svn: 167113
-
Benjamin Kramer authored
I'm not entirely happy with this solution, but I don't see a smarter way currently. Fixes PR14214. llvm-svn: 167112
-
Evgeniy Stepanov authored
llvm-svn: 167111
-
Benjamin Kramer authored
This makes the code match the comments. Resolves a crash in loop idiom (PR14219). llvm-svn: 167110
-
James Molloy authored
Patch by Pete Chou! llvm-svn: 167109
-
James Molloy authored
No testcase, as this is only testable on a C-A15 board. llvm-svn: 167108
-
Reed Kotler authored
llvm-svn: 167107
-
Craig Topper authored
llvm-svn: 167106
-
Meador Inge authored
This patch migrates the strpbrk optimizations from the simplify-libcalls pass into the instcombine library call simplifier. llvm-svn: 167105
-
Michael Liao authored
llvm-svn: 167104
-
Meador Inge authored
This patch migrates the strlen optimizations from the simplify-libcalls pass into the instcombine library call simplifier. llvm-svn: 167103
-
Meador Inge authored
This patch migrates the strncpy optimizations from the simplify-libcalls pass into the instcombine library call simplifier. llvm-svn: 167102
-
Nadav Rotem authored
llvm-svn: 167101
-
Bill Schmidt authored
parameters. Examples of these are: struct { } a; union { } b[256]; int a[0]; An empty aggregate has an address, although dereferencing that address is pointless. When passed as a parameter, an empty aggregate does not consume a protocol register, nor does it consume a doubleword in the parameter save area. Passing an empty aggregate by reference passes an address just as for any other aggregate. Returning an empty aggregate uses GPR3 as a hidden address of the return value location, just as for any other aggregate. The patch modifies PPCTargetLowering::LowerFormalArguments_64SVR4 and PPCTargetLowering::LowerCall_64SVR4 to properly skip empty aggregate parameters passed by value. The handling of return values and by-reference parameters was already correct. Built on powerpc64-unknown-linux-gnu and tested with no new regressions. A test case is included to test proper handling of empty aggregate parameters on both sides of the function call protocol. llvm-svn: 167090
-
Akira Hatanaka authored
type MachineInstr* and MachineBasicBlock::iterator. llvm-svn: 167088
-
Rafael Espindola authored
Patch by Kai. llvm-svn: 167087
-