- Apr 21, 2013
-
-
Benjamin Kramer authored
This is an edge case that can happen if we modify a chain of multiple selects. Update all operands in that case and remove the assert. PR15805. llvm-svn: 179982
-
Arnold Schwaighofer authored
There is the temptation to make this tranform dependent on target information as it is not going to be beneficial on all (sub)targets. Therefore, we should probably do this in MI Early-Ifconversion. This reverts commit r179957. Original commit message: "SimplifyCFG: If convert single conditional stores This transformation will transform a conditional store with a preceeding uncondtional store to the same location: a[i] = may-alias with a[i] load if (cond) a[i] = Y into an unconditional store. a[i] = X may-alias with a[i] load tmp = cond ? Y : X; a[i] = tmp We assume that on average the cost of a mispredicted branch is going to be higher than the cost of a second store to the same location, and that the secondary benefits of creating a bigger basic block for other optimizations to work on outway the potential case were the branch would be correctly predicted and the cost of the executing the second store would be noticably reflected in performance. hmmer's execution time improves by 30% on an imac12,2 on ref data sets. With this change we are on par with gcc's performance (gcc also performs this transformation). There was a 1.2 % performance improvement on a ARM swift chip. Other tests in the test-suite+external seem to be mostly uninfluenced in my experiments: This optimization was triggered on 41 tests such that the executable was different before/after the patch. Only 1 out of the 40 tests (dealII) was reproducable below 100% (by about .4%). Given that hmmer benefits so much I believe this to be a fair trade off. I am going to watch performance numbers across the builtbots and will revert this if anything unexpected comes up." llvm-svn: 179980
-
Tim Northover authored
This allows common sp-offsets to be part of the instruction and is probably faster on modern CPUs too. llvm-svn: 179977
-
Nadav Rotem authored
llvm-svn: 179975
-
Nadav Rotem authored
We did not terminate the switch case and we executed the search routine twice. llvm-svn: 179974
-
Michael Gottesman authored
When we strength reduce an objc_retainBlock call to objc_retain, increment NumPeeps and make sure that Changed is set to true. llvm-svn: 179968
-
Michael Gottesman authored
llvm-svn: 179967
-
Michael Gottesman authored
llvm-svn: 179966
-
Michael Gottesman authored
llvm-svn: 179965
-
Michael Gottesman authored
[objc-arc] Refactored OptimizeReturns so that it uses continue instead of a large multi-level nested if statement. llvm-svn: 179964
-
Michael Gottesman authored
This will make it clearer when we are actually resetting a sequence's progress vs just changing state. This is an important distinction because the former case clears any pointers that we are tracking while the later does not. llvm-svn: 179963
-
Jakob Stoklund Olesen authored
With a little help from the frontend, it looks like the standard va_* intrinsics can do the job. Also clean up an old bitcast hack in LowerVAARG that dealt with unaligned double loads. Load SDNodes can specify an alignment now. Still missing: Calling varargs functions with float arguments. llvm-svn: 179961
-
Nadav Rotem authored
llvm-svn: 179960
-
- Apr 20, 2013
-
-
Arnold Schwaighofer authored
This transformation will transform a conditional store with a preceeding uncondtional store to the same location: a[i] = may-alias with a[i] load if (cond) a[i] = Y into an unconditional store. a[i] = X may-alias with a[i] load tmp = cond ? Y : X; a[i] = tmp We assume that on average the cost of a mispredicted branch is going to be higher than the cost of a second store to the same location, and that the secondary benefits of creating a bigger basic block for other optimizations to work on outway the potential case were the branch would be correctly predicted and the cost of the executing the second store would be noticably reflected in performance. hmmer's execution time improves by 30% on an imac12,2 on ref data sets. With this change we are on par with gcc's performance (gcc also performs this transformation). There was a 1.2 % performance improvement on a ARM swift chip. Other tests in the test-suite+external seem to be mostly uninfluenced in my experiments: This optimization was triggered on 41 tests such that the executable was different before/after the patch. Only 1 out of the 40 tests (dealII) was reproducable below 100% (by about .4%). Given that hmmer benefits so much I believe this to be a fair trade off. I am going to watch performance numbers across the builtbots and will revert this if anything unexpected comes up. llvm-svn: 179957
-
Tim Northover authored
Previously, when spilling 64-bit paired registers, an LDMIA with both a FrameIndex and an offset was produced. This kind of instruction shouldn't exist, and the extra operand was being confused with the predicate, causing aborts later on. This removes the invalid 0-offset from the instruction being produced. llvm-svn: 179956
-
Tim Northover authored
llvm-svn: 179952
-
Stephen Lin authored
Move 'kw_align' case to proper section, reorganize function attribute keyword case statements to be consistent with r179119 llvm-svn: 179948
-
Tim Northover authored
I think it's almost impossible to fold atomic fences profitably under LLVM/C++11 semantics. As a result, this is now unused and just cluttering up the target interface. llvm-svn: 179940
-
Tim Northover authored
llvm-svn: 179939
-
Benjamin Kramer authored
llvm-svn: 179936
-
Benjamin Kramer authored
Avoids a couple of copies and allows more flexibility in the clients. llvm-svn: 179935
-
Nadav Rotem authored
SLPVectorizer: Reduce the compile time by eliminating the search for some of the more expensive patterns. After this change will only check basic arithmetic trees that start at cmpinstr. llvm-svn: 179933
-
Nadav Rotem authored
llvm-svn: 179932
-
Nadav Rotem authored
llvm-svn: 179931
-
Nadav Rotem authored
llvm-svn: 179930
-
Nadav Rotem authored
llvm-svn: 179929
-
Nadav Rotem authored
llvm-svn: 179928
-
Nadav Rotem authored
llvm-svn: 179927
-
Hal Finkel authored
The getSwappedPredicate function can be used in other places (such as in improvements to the PPCCTRLoops pass). Instead of trapping it as a static function in PPCInstrInfo, move it into PPCPredicates with other predicate-related things. No functionality change intended. llvm-svn: 179926
-
Stephen Lin authored
Add CodeGen support for functions that always return arguments via a new parameter attribute 'returned', which is taken advantage of in target-independent tail call opportunity detection and in ARM call lowering (when placed on an integral first parameter). llvm-svn: 179925
-
Stephen Lin authored
Allow tail call opportunity detection through nested and/or multiple iterations of extractelement/insertelement indirection llvm-svn: 179924
-
Stephen Lin authored
llvm-svn: 179913
-
Eli Bendersky authored
llvm-svn: 179908
-
Akira Hatanaka authored
llvm-svn: 179906
-
Benjamin Kramer authored
The logic that actually compares the types considers pointers and integers the same if they are of the same size. This created a strange mismatch between hash and reality and made the test case for this fail on some platforms (yay, test cases). llvm-svn: 179905
-
Eli Bendersky authored
trying to move as much FastISel logic as possible out of the main path in SelectionDAGISel - intermixing them just adds confusion. llvm-svn: 179902
-
Michael Liao authored
llvm-svn: 179901
-
Hal Finkel authored
When matching a compare with a subtract where the arguments of the compare are swapped w.r.t. the arguments of the subtract, we need to negate the predicates (or CR bit indices) of the users. This, however, is not the same as inverting the predicate (negating LT -> GT, but inverting LT -> GE, for example). The ARM backend seems to do this correctly, but when I adapted the code for the PPC backend, I introduced an error in this logic. Comparison optimization is now enabled again by default. llvm-svn: 179899
-
- Apr 19, 2013
-
-
Jakob Stoklund Olesen authored
This checks the sanity of the register use lists in the MI intermediate representation. llvm-svn: 179895
-
Eli Bendersky authored
llvm-svn: 179894
-