#
cbd2a198 |
| 05-Sep-2012 |
Chad Rosier <mcrosier@apple.com> |
[ms-inline asm] We only need one bit to represent the AsmDialect in the MachineInstr.
llvm-svn: 163257
|
#
994f4040 |
| 05-Sep-2012 |
Chad Rosier <mcrosier@apple.com> |
[ms-inline asm] Propagate the asm dialect into the MachineInstr representation.
llvm-svn: 163243
|
#
2db2353b |
| 05-Sep-2012 |
Craig Topper <craig.topper@gmail.com> |
Convert vextracti128/vextractf128 intrinsics to extract_subvector at DAG build time. Similar was previously done for vinserti128/vinsertf128. Add patterns for folding these extract_subvectors with st
Convert vextracti128/vextractf128 intrinsics to extract_subvector at DAG build time. Similar was previously done for vinserti128/vinsertf128. Add patterns for folding these extract_subvectors with stores.
llvm-svn: 163192
show more ...
|
#
cf10446f |
| 24-Aug-2012 |
Manman Ren <mren@apple.com> |
BranchProb: modify the definition of an edge in BranchProbabilityInfo to handle the case of multiple edges from one block to another.
A simple example is a switch statement with multiple values to t
BranchProb: modify the definition of an edge in BranchProbabilityInfo to handle the case of multiple edges from one block to another.
A simple example is a switch statement with multiple values to the same destination. The definition of an edge is modified from a pair of blocks to a pair of PredBlock and an index into the successors.
Also set the weight correctly when building SelectionDAG from LLVM IR, especially when converting a Switch. IntegersSubsetMapping is updated to calculate the weight for each cluster.
llvm-svn: 162572
show more ...
|
#
3fb2047f |
| 22-Aug-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Initialize SelectionDAGBuilder's Context in 'init', not in its constructor. The SelectionDAG's 'init' has not been called when the SelectionDAGBuilder is constructed (in SelectionDAGISel's constructo
Initialize SelectionDAGBuilder's Context in 'init', not in its constructor. The SelectionDAG's 'init' has not been called when the SelectionDAGBuilder is constructed (in SelectionDAGISel's constructor), so this was previously always initialized with 0.
llvm-svn: 162333
show more ...
|
#
7d33c573 |
| 20-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't add CFG edges for redundant conditional branches.
IR that hasn't been through SimplifyCFG can look like this:
br i1 %b, label %r, label %r
Make sure we don't create duplicate Machine CFG e
Don't add CFG edges for redundant conditional branches.
IR that hasn't been through SimplifyCFG can look like this:
br i1 %b, label %r, label %r
Make sure we don't create duplicate Machine CFG edges in this case.
Fix the machine code verifier to accept conditional branches with a single CFG edge.
llvm-svn: 162230
show more ...
|
#
79a6b30d |
| 17-Aug-2012 |
Eli Friedman <eli.friedman@gmail.com> |
Make atomic load and store of pointers work. Tighten verification of atomic operations so other unexpected operations don't slip through. Based on patch by Logan Chien. PR11786/PR13186.
llvm-svn:
Make atomic load and store of pointers work. Tighten verification of atomic operations so other unexpected operations don't slip through. Based on patch by Logan Chien. PR11786/PR13186.
llvm-svn: 162146
show more ...
|
#
874886cd |
| 03-Aug-2012 |
Bob Wilson <bob.wilson@apple.com> |
Refactor and check "onlyReadsMemory" before optimizing builtins.
This patch is mostly just refactoring a bunch of copy-and-pasted code, but it also adds a check that the call instructions are readno
Refactor and check "onlyReadsMemory" before optimizing builtins.
This patch is mostly just refactoring a bunch of copy-and-pasted code, but it also adds a check that the call instructions are readnone or readonly. That check was already present for sin, cos, sqrt, log2, and exp2 calls, but it was missing for the rest of the builtins being handled in this code.
llvm-svn: 161282
show more ...
|
#
871701c6 |
| 03-Aug-2012 |
Bob Wilson <bob.wilson@apple.com> |
Try to reduce the compile time impact of r161232.
The previous change caused fast isel to not attempt handling any calls to builtin functions. That included things like "printf" and caused some not
Try to reduce the compile time impact of r161232.
The previous change caused fast isel to not attempt handling any calls to builtin functions. That included things like "printf" and caused some noticable regressions in compile time. I wanted to avoid having fast isel keep a separate list of functions that had to be kept in sync with what the code in SelectionDAGBuilder.cpp was handling. I've resolved that here by moving the list into TargetLibraryInfo. This is somewhat redundant in SelectionDAGBuilder but it will ensure that we keep things consistent.
llvm-svn: 161263
show more ...
|
#
fa59485b |
| 03-Aug-2012 |
Bob Wilson <bob.wilson@apple.com> |
Fix memcmp code-gen to honor -fno-builtin.
I noticed that SelectionDAGBuilder::visitCall was missing a check for memcmp in TargetLibraryInfo, so that it would use custom code for memcmp calls even w
Fix memcmp code-gen to honor -fno-builtin.
I noticed that SelectionDAGBuilder::visitCall was missing a check for memcmp in TargetLibraryInfo, so that it would use custom code for memcmp calls even with -fno-builtin. I also had to add a new -disable-simplify-libcalls option to llc so that I could write a test for this.
llvm-svn: 161262
show more ...
|
#
0b3d7829 |
| 26-Jul-2012 |
Dan Gohman <gohman@apple.com> |
Add a floor intrinsic.
llvm-svn: 160791
|
#
aaf97359 |
| 19-Jul-2012 |
Galina Kistanova <gkistanova@gmail.com> |
Fixed few warnings.
llvm-svn: 160493
|
#
d163405d |
| 19-Jul-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove tabs.
llvm-svn: 160475
|
#
2151497d |
| 18-Jul-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
ignore 'invoke @llvm.donothing', but still keep the edge to the continuation BB
llvm-svn: 160411
|
#
7ff588f9 |
| 04-Jul-2012 |
Stepan Dyatkovskiy <stpworld@narod.ru> |
Reverted r156659, due to probable performance regressions, DenseMap should be used here: IntegersSubsetMapping - Replaced type of Items field from std::list with std::map. In neares future I'll t
Reverted r156659, due to probable performance regressions, DenseMap should be used here: IntegersSubsetMapping - Replaced type of Items field from std::list with std::map. In neares future I'll test it with DenseMap and do the correspond replacement if possible.
llvm-svn: 159703
show more ...
|
#
8b0c97e0 |
| 03-Jul-2012 |
Stepan Dyatkovskiy <stpworld@narod.ru> |
Part of r159527. Splitted into series of patches and gone with fixed PR13256: IntegersSubsetMapping - Replaced type of Items field from std::list with std::map. In neares future I'll test it with
Part of r159527. Splitted into series of patches and gone with fixed PR13256: IntegersSubsetMapping - Replaced type of Items field from std::list with std::map. In neares future I'll test it with DenseMap and do the correspond replacement if possible.
llvm-svn: 159659
show more ...
|
#
b65acc61 |
| 02-Jul-2012 |
Eric Christopher <echristo@apple.com> |
Revert "IntRange:" as it appears to be breaking self hosting.
This reverts commit b2833d9dcba88c6f0520cad760619200adc0442c.
llvm-svn: 159618
|
#
39e90029 |
| 02-Jul-2012 |
Evan Cheng <evan.cheng@apple.com> |
Target option DisableJumpTables is a gross hack. Move it to TargetLowering instead.
llvm-svn: 159611
|
#
dd8638fb |
| 02-Jul-2012 |
Eric Christopher <echristo@apple.com> |
Turn an assert into an error to make it a bit more friendly.
Part of rdar://6880388 and rdar://11766377
llvm-svn: 159590
|
#
8b9ecca4 |
| 02-Jul-2012 |
Stepan Dyatkovskiy <stpworld@narod.ru> |
IntRange: - Changed isSingleNumber method behaviour. Now this flag is calculated on demand. IntegersSubsetMapping - Optimized diff operation. - Replaced type of Items field from std::list with
IntRange: - Changed isSingleNumber method behaviour. Now this flag is calculated on demand. IntegersSubsetMapping - Optimized diff operation. - Replaced type of Items field from std::list with std::map. - Added new methods: bool isOverlapped(self &RHS) void add(self& RHS, SuccessorClass *S) void detachCase(self& NewMapping, SuccessorClass *Succ) void removeCase(SuccessorClass *Succ) SuccessorClass *findSuccessor(const IntTy& Val) const IntTy* getCaseSingleNumber(SuccessorClass *Succ) IntegersSubsetTest - DiffTest: Added checks for successors. SimplifyCFG Updated SwitchInst usage (now it is case-ragnes compatible) for - SimplifyEqualityComparisonWithOnlyPredecessor - FoldValueComparisonIntoPredecessors
llvm-svn: 159527
show more ...
|
#
ec9653b3 |
| 28-Jun-2012 |
Nuno Lopes <nunoplopes@sapo.pt> |
add a new @llvm.donothing intrinsic that, well, does nothing, and teach CodeGen to ignore calls to it
llvm-svn: 159383
|
#
e38859dc |
| 28-Jun-2012 |
Bill Wendling <isanbard@gmail.com> |
Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.
The reasoning is because the DebugInfo module is simply an interface to
Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.
The reasoning is because the DebugInfo module is simply an interface to the debug info MDNodes and has nothing to do with analysis.
llvm-svn: 159312
show more ...
|
#
b8650f10 |
| 22-Jun-2012 |
Lang Hames <lhames@gmail.com> |
Rename -allow-excess-fp-precision flag to -fuse-fp-ops, and switch from a boolean flag to an enum: { Fast, Standard, Strict } (default = Standard).
This option controls the creation by optimizations
Rename -allow-excess-fp-precision flag to -fuse-fp-ops, and switch from a boolean flag to an enum: { Fast, Standard, Strict } (default = Standard).
This option controls the creation by optimizations of fused FP ops that store intermediate results in higher precision than IEEE allows (E.g. FMAs). The behavior of this option is intended to match the behaviour specified by a soon-to-be-introduced frontend flag: '-ffuse-fp-ops'.
Fast mode - allows formation of fused FP ops whenever they're profitable.
Standard mode - allow fusion only for 'blessed' FP ops. At present the only blessed op is the fmuladd intrinsic. In the future more blessed ops may be added.
Strict mode - allow fusion only if/when it can be proven that the excess precision won't effect the result.
Note: This option only controls formation of fused ops by the optimizers. Fused operations that are explicitly requested (e.g. FMA via the llvm.fma.* intrinsic) will always be honored, regardless of the value of this option.
Internally TargetOptions::AllowExcessFPPrecision has been replaced by TargetOptions::AllowFPOpFusion.
llvm-svn: 158956
show more ...
|
#
a59100cc |
| 05-Jun-2012 |
Lang Hames <lhames@gmail.com> |
Add a new intrinsic: llvm.fmuladd. This intrinsic represents a multiply-add expression (a * b + c) that can be implemented as a fused multiply-add (fma) if the target determines that this will be mor
Add a new intrinsic: llvm.fmuladd. This intrinsic represents a multiply-add expression (a * b + c) that can be implemented as a fused multiply-add (fma) if the target determines that this will be more efficient. This intrinsic will be used to implement FP_CONTRACT support and an aggressive FMA formation mode.
If your target has a fast FMA instruction you should override the isFMAFasterThanMulAndAdd method in TargetLowering to return true.
llvm-svn: 158014
show more ...
|
#
bde91766 |
| 02-Jun-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Fix typos found by http://github.com/lyda/misspell-check
llvm-svn: 157885
|