- Apr 27, 2012
-
-
Kostya Serebryany authored
llvm-svn: 155701
-
Richard Barton authored
Refactor IT handling not to store the bottom bit of the condition code in the mask operand in the MCInst. llvm-svn: 155700
-
NAKAMURA Takumi authored
It broke stage2 build. stage1/clang sometimes crashed. llvm-svn: 155699
-
Kostya Serebryany authored
llvm-svn: 155698
-
Evan Cheng authored
llvm-svn: 155686
-
Evan Cheng authored
instructions. - However, it does support dmb, dsb, isb, mrs, and msr. rdar://11331541 llvm-svn: 155685
-
Dan Gohman authored
instead of getAggregateElement. This has the advantage of being more consistent and allowing higher-level constant folding to procede even if an inner extract element cannot be folded. Make ConstantFoldInstruction call ConstantFoldConstantExpression on the instruction's operands, making it more consistent with ConstantFoldConstantExpression itself. This makes sure that ConstantExprs get TargetData-aware folding before being handed off as operands for further folding. This causes more expressions to be folded, but due to a known shortcoming in constant folding, this currently has the side effect of stripping a few more nuw and inbounds flags in the non-targetdata side of constant-fold-gep.ll. This is mostly harmless. This fixes rdar://11324230. llvm-svn: 155682
-
Jakob Stoklund Olesen authored
The required checks are moved to ChainInstruction() itself and the policy decisions are moved to IVChain::isProfitableInc(). Also cache the ExprBase in IVChain to avoid frequent recomputations. No functional change intended. llvm-svn: 155676
-
Jakob Stoklund Olesen authored
No functional change intended. llvm-svn: 155675
-
Chad Rosier authored
(x & y) | (x ^ y) -> x | y (x & y) + (x ^ y) -> x | y Patch by Manman Ren. rdar://10770603 llvm-svn: 155674
-
- Apr 26, 2012
-
-
Andrew Trick authored
DAGCombine strangeness may result in multiple loads from the same offset. They both may try to glue themselves to another load. We could insist that the redundant loads glue themselves to each other, but the beter fix is to bail out from bad gluing at the time we detect it. Fixes rdar://11314175: BuildSchedUnits assert. llvm-svn: 155668
-
Jim Grosbach authored
The base address for the PC-relative load is Align(PC,4), so it's the address of the word containing the 16-bit instruction, not the address of the instruction itself. Ugh. rdar://11314619 llvm-svn: 155659
-
Preston Gurd authored
Trivial change to set UseLeaForSP flag in addition to toggling the FeatureLeaForSP feature bit when llvm auto detects Intel Atom. Patch by Andy Zhang llvm-svn: 155655
-
Michael J. Spencer authored
'REPLACEMENT CHARACTER' (U+FFFD) when getAsInteger fails. llvm-svn: 155653
-
Tim Northover authored
On some cores it's a bad idea for performance to mix VFP and NEON instructions and since these patterns are NEON anyway, the NEON load should be used. llvm-svn: 155630
-
Tim Northover authored
llvm-svn: 155626
-
Craig Topper authored
Enable detection of AVX and AVX2 support through CPUID. Add AVX/AVX2 to corei7-avx, core-avx-i, and core-avx2 cpu names. llvm-svn: 155618
-
Chandler Carruth authored
elements to minimize the number of multiplies required to compute the final result. This uses a heuristic to attempt to form near-optimal binary exponentiation-style multiply chains. While there are some cases it misses, it seems to at least a decent job on a very diverse range of inputs. Initial benchmarks show no interesting regressions, and an 8% improvement on SPASS. Let me know if any other interesting results (in either direction) crop up! Credit to Richard Smith for the core algorithm, and helping code the patch itself. llvm-svn: 155616
-
Evan Cheng authored
the feature set of v7a. This comes about if the user specifies something like -arch armv7 -mcpu=cortex-m3. We shouldn't be generating instructions such as uxtab in this case. rdar://11318438 llvm-svn: 155601
-
Bill Wendling authored
llvm-svn: 155599
-
- Apr 25, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 155567
-
Jakob Stoklund Olesen authored
llvm-svn: 155566
-
Richard Barton authored
Unify internal representation of ARM instructions with a register right-shifted by #32. These are stored as shifts by #0 in the MCInst and correctly marshalled when transforming from or to assembly representation. llvm-svn: 155565
-
Jakob Stoklund Olesen authored
Cross-class joins have been normal and fully supported for a while now. With TableGen generating the getMatchingSuperRegClass() hook, they are unlikely to cause problems again. llvm-svn: 155552
-
Jakob Stoklund Olesen authored
Remove the heuristic for disabling cross-class joins. The greedy register allocator can handle the narrow register classes, and when it splits a live range, it can pick a larger register class. Benchmarks were unaffected by this change. <rdar://problem/11302212> llvm-svn: 155551
-
Craig Topper authored
Add ifdef around getSubtargetFeatureName in tablegen output file so that only targets that want the function get it. This prevents other targets from getting an unused function warning. llvm-svn: 155538
-
Craig Topper authored
Use vector_shuffles instead of target specific unpack nodes for AVX ZERO_EXTEND/ANY_EXTEND combine. These will be converted to target specific nodes during lowering. This is more consistent with other code. llvm-svn: 155537
-
Lang Hames authored
in poor taste. Talking through some alternate solutions with Chandler. llvm-svn: 155530
-
Akira Hatanaka authored
llvm-svn: 155522
-
Dan Gohman authored
of a precise count. Also, move RRInfo's Partial field into PtrState, now that it won't increase the size. llvm-svn: 155513
-
Dan Gohman authored
These lists exclude invoke unwind edges and loop backedges which are being ignored. This makes it easier to ignore them consistently. llvm-svn: 155500
-
Jim Grosbach authored
When an instruction match is found, but the subtarget features it requires are not available (missing floating point unit, or thumb vs arm mode, for example), issue a diagnostic that identifies what the feature mismatch is. rdar://11257547 llvm-svn: 155499
-
- Apr 24, 2012
-
-
Andrew Trick authored
llvm-svn: 155486
-
Nadav Rotem authored
Fix 12592. Patch by Matt Pharr. llvm-svn: 155480
-
Evan Cheng authored
MachineBasicBlock::SplitCriticalEdge() should follow LLVM IR variant and refuse to break edge to EH landing pad. rdar://11300144 llvm-svn: 155470
-
Lang Hames authored
<rdar://problem/11291436>. llvm-svn: 155468
-
Chandler Carruth authored
constants in C++11 mode. I have no idea why it required such particular circumstances to get here, the code seems clearly to rely upon unchecked assumptions. Specifically, when we decide to form an index into a struct type, we may have gone through (at least one) zero-length array indexing round, which would have left the offset un-adjusted, and thus not necessarily valid for use when indexing the struct type. This is just an canonicalization step, so the correct thing is to refuse to canonicalize nonsensical GEPs of this form. Implemented, and test case added. Fixes PR12642. Pair debugged and coded with Richard Smith. =] I credit him with most of the debugging, and preventing me from writing the wrong code. llvm-svn: 155466
-
Jim Grosbach authored
r154362 was supposed to delete this bit, but obviously didn't. rdar://11305594 llvm-svn: 155465
-
Nadav Rotem authored
Remove the v2f64 patterns because it does not match any vbroadcast instruction. llvm-svn: 155461
-
Andrew Trick authored
llvm-svn: 155460
-