- Dec 30, 2012
-
-
Bill Wendling authored
llvm-svn: 171257
-
Bill Wendling authored
llvm-svn: 171256
-
Bill Wendling authored
llvm-svn: 171255
-
Bill Wendling authored
directly. This is in preparation for removing the use of the 'Attribute' class as a collection of attributes. That will shift to the AttributeSet class instead. llvm-svn: 171253
-
Bill Wendling authored
llvm-svn: 171252
-
Nadav Rotem authored
LCSSA PHIs may have undef values. The vectorizer updates values that are used by outside users such as PHIs. The bug happened because undefs are not loop values. This patch handles these PHIs. PR14725 llvm-svn: 171251
-
Bill Wendling authored
* One that accepts a single Attribute::AttrKind. * One that accepts an Attribute::AttrKind plus a list of values. This is for attributes defined like this: #1 = attributes { align = 4 } * One that accepts a string, for target-specific attributes like this: #2 = attributes { "cpu=cortex-a8" } llvm-svn: 171249
-
Bill Wendling authored
stored here is of a certain kind. This is in preparation for when an Attribute object represents a single attribute, instead of a bitmask of attributes. llvm-svn: 171247
-
Bill Wendling authored
already uniquified. Note: This will be expanded in the future to add more than just one pointer value. llvm-svn: 171245
-
Bill Wendling authored
s/Raw/getBitMask/g to be more in line with current naming conventions. This method won't be sticking around. llvm-svn: 171244
-
- Dec 29, 2012
-
-
Craig Topper authored
Remove intrinsic specific instructions for (V)SQRTPS/PD. Instead lower to target-independent ISD nodes and use the existing patterns for those. llvm-svn: 171237
-
Craig Topper authored
llvm-svn: 171229
-
Craig Topper authored
Remove intrinsic specific instructions for SSE/SSE2/AVX floating point max/min instructions. Lower them to target specific nodes and use those patterns instead. This also allows them to be commuted if UnsafeFPMath is enabled. llvm-svn: 171227
-
Jakub Staszak authored
llvm-svn: 171226
-
Jakub Staszak authored
llvm-svn: 171225
-
Bill Wendling authored
llvm-svn: 171221
-
Bill Wendling authored
llvm-svn: 171220
-
- Dec 28, 2012
-
-
Chandler Carruth authored
deleted this, but apparantly not. Charmingly, Clang didn't warn on it but GCC did. llvm-svn: 171197
-
Chandler Carruth authored
propagating one of the values it simplified to a constant across a myriad of instructions. Notably, ptrtoint instructions when we had a constant pointer (say, 0) didn't propagate that, blocking a massive number of down-stream optimizations. This was uncovered when investigating why we fail to inline and delete the boilerplate in: void f() { std::vector<int> v; v.push_back(1); } It turns out most of the efforts I've made thus far to improve the analysis weren't making it far purely because of this. After this is fixed, the store-to-load forwarding patch enables LLVM to optimize the above to an empty function. We still can't nuke a second push_back, but for different reasons. There is a very real chance this will cause somewhat noticable changes in inlining behavior, so please let me know if you see regressions (or improvements!) because of this patch. llvm-svn: 171196
-
Chandler Carruth authored
how to propagate constants through insert and extract value instructions. With the recent improvements to instsimplify, this allows inline cost analysis to constant fold through intrinsic functions, including notably the with.overflow intrinsic math routines which often show up inside of STL abstractions. This is yet another piece in the puzzle of breaking down the code for: void f() { std::vector<int> v; v.push_back(1); } But it still isn't enough. There are a pile of bugs in inline cost still blocking this. llvm-svn: 171195
-
Chandler Carruth authored
constant folding calls. Add the initial tests for this which show that now instsimplify can simplify blindingly obvious code patterns expressed with both intrinsics and library calls. llvm-svn: 171194
-
Chandler Carruth authored
are nice and decomposed so that we can simplify synthesized calls as easily as actually call instructions. The internal utility still has the same behavior, it just now operates on a more generic interface so that I can extend the set of call simplifications that instsimplify knows about. llvm-svn: 171189
-
Alexey Samsonov authored
llvm-svn: 171183
-
Nadav Rotem authored
llvm-svn: 171180
-
Nadav Rotem authored
llvm-svn: 171179
-
Nadav Rotem authored
AVX: Move the ZEXT/ANYEXT DAGCo optimizations to the lowering of these optimizations. The old test cases still cover all of these lowering/optimizations. The single change that we have is that now anyext does not need to zero a register, because it does not use the exact code path as the zero_extend. llvm-svn: 171178
-
Nadav Rotem authored
llvm-svn: 171172
-
- Dec 27, 2012
-
-
Craig Topper authored
llvm-svn: 171171
-
Nadav Rotem authored
llvm-svn: 171170
-
Craig Topper authored
llvm-svn: 171166
-
Chandler Carruth authored
getAnalysisUsage implementations. llvm-svn: 171157
-
Alexey Samsonov authored
[ASan] Fix lifetime intrinsics handling. Now for each intrinsic we check if it describes one of 'interesting' allocas. Assume that allocas can go through casts and phi-nodes before apperaring as llvm.lifetime arguments llvm-svn: 171153
-
Nadav Rotem authored
register. In most cases we actually compare or select YMM-sized registers and mixing the two types creates horrible code. This commit optimizes some of the transition sequences. PR14657. llvm-svn: 171148
-
Nadav Rotem authored
The vector truncs were scalarized during LegalizeVectorOps, later vectorized again by some DAGCombine optimization and finally, lowered by a dagcombing optimization. Now, they are properly lowered during LegalizeVectorOps. No new testcase because the original testcases still work. llvm-svn: 171146
-
Craig Topper authored
llvm-svn: 171143
-
Nadav Rotem authored
Refactor DAGCombinerInfo. Change the different booleans that indicate if we are before or after different runs of DAGCo, with the CombineLevel enum. Also, added a new API for checking if we are running before or after the LegalizeVectorOps phase. llvm-svn: 171142
-
Craig Topper authored
Move single letter 'P' prefix out of multiclass now that tablegen allows defm to start with #NAME. This makes instruction names more searchable again. llvm-svn: 171141
-
Craig Topper authored
llvm-svn: 171140
-
Craig Topper authored
Add hasSideEffects=0 to some shift and rotate instructions. None of which are currently used by code generation. llvm-svn: 171137
-
Craig Topper authored
llvm-svn: 171136
-