- Jul 11, 2012
-
-
Jakob Stoklund Olesen authored
This ordering allows nested if-conversion without using a work list, and it makes it possible to update the dominator tree on the fly as well. Any erased basic blocks will always be dominated by the current post-order position, so the domtree can be pruned without invalidating the iterator. llvm-svn: 160025
-
- Jul 10, 2012
-
-
Chad Rosier authored
X86MachineFunctionInfo as this is currently only used by X86. If this ever becomes an issue on another arch (e.g., ARM) then we can hoist it back out. llvm-svn: 160009
-
Chad Rosier authored
llvm-svn: 160006
-
Chad Rosier authored
llvm-svn: 160004
-
Chad Rosier authored
X86. Basically, this is a reapplication of r158087 with a few fixes. Specifically, (1) the stack pointer is restored from the base pointer before popping callee-saved registers and (2) in obscure cases (see comments in patch) we must cache the value of the original stack adjustment in the prologue and apply it in the epilogue. rdar://11496434 llvm-svn: 160002
-
Chandler Carruth authored
back of it. I don't have anything even remotely close to a test case for this. It only broke two build bots, both of them doing bootstrap builds, one of them a dragonegg bootstrap. It doesn't break for me when I bootstrap either. It doesn't reproduce every time or on many machines during the bootstrap. Many thanks to Duncan Sands who got the exact command (and stage of the bootstrap) which failed on the dragonegg bootstrap and managed to get it to trigger under valgrind with debug symbols. The fix was then found by inspection. llvm-svn: 159993
-
Nadav Rotem authored
Improve the loading of load-anyext vectors by allowing the codegen to load multiple scalars and insert them into a vector. Next, we shuffle the elements into the correct places, as before. Also fix a small dagcombine bug in SimplifyBinOpWithSameOpcodeHands, when the migration of bitcasts happened too late in the SelectionDAG process. llvm-svn: 159991
-
Richard Barton authored
Fix instruction description of VMOV (between two ARM core registers and two single-precision resiters) (and do it properly this time! llvm-svn: 159989
-
Craig Topper authored
llvm-svn: 159983
-
Chandler Carruth authored
quadratic behavior when performing pathological merges. Fixes the core element of PR12652. There is only one user of addRangeFrom left: join. I'm hoping to refactor further in a future patch and have join use this merge operation as well. llvm-svn: 159982
-
Chandler Carruth authored
of the trick merge routines. This adds a layer of testing that was necessary when implementing more efficient (and complex) merge logic for this datastructure. No functionality changed here. llvm-svn: 159981
-
Jim Grosbach authored
Some NEON instructions want to match against normal SDNodes for some operand types and Intrinsics for others. For example, CTLZ. To enable this, switch from explicitly requiring Intrinsic on the class templates to using SDPatternOperator instead. llvm-svn: 159974
-
Jim Grosbach authored
TableGen has support for using an intrinics name directly in a DAG, but this breaks down when referring to just a node, as that's handled initializer list stuff entirely via subclassing in the parser. That is, using an instrinsic like "(int_my_intrinsic ...)" works fine. Using it standalone for parameterizing the operator in such a DAG does not. Fixing this is simple enough, as we simply declare Intrinsic as deriving from SDPatternOperator, which is the class name intended for exactly this purpose in TargetSelectionDAG.td. When the intrinsic is actually used in the DAG pattern, it will be recognized and expanded to an intrinsic_wo_chain (et. al.) just like when it's used directly. Incoming ARM NEON cleanup based on this and a bit of functionality improvement after that. llvm-svn: 159973
-
Akira Hatanaka authored
llvm-svn: 159971
-
Dan Gohman authored
obscure ways, and it isn't actually important in the real world. llvm-svn: 159969
-
- Jul 09, 2012
-
-
Chad Rosier authored
llvm-svn: 159960
-
Andrew Trick authored
llvm-svn: 159959
-
Andrew Trick authored
llvm-svn: 159958
-
Owen Anderson authored
Teach the DAG combiner to turn sitofp/uitofp from i1 into a conditional move, since there are only two possible values. Previously, this would become an integer extension operation, followed by a real integer->float conversion. llvm-svn: 159957
-
Manman Ren authored
getCondFromSETOpc, getCondFromCMovOpc, getSETFromCond, getCMovFromCond No functional change intended. If we want to update the condition code of CMOV|SET|Jcc, we first analyze the opcode to get the condition code, then update the condition code, finally synthesize the new opcode form the new condition code. llvm-svn: 159955
-
Akira Hatanaka authored
Access mips register classes via MCRegisterInfo's functions instead of via the TargetRegisterClasses defined in MipsGenRegisterInfo.inc. llvm-svn: 159953
-
Nuno Lopes authored
This patch removes ~70 lines in InstCombineLoadStoreAlloca.cpp and makes both functions a bit more aggressive than before :) In theory, we can be more aggressive when removing an alloca than a malloc, because an alloca pointer should never escape, but we are not taking advantage of this anyway llvm-svn: 159952
-
Richard Barton authored
llvm-svn: 159948
-
Richard Barton authored
llvm-svn: 159945
-
Richard Barton authored
Fix instruction description of VMOV (between two ARM core registers and two single-precision resiters) llvm-svn: 159938
-
Richard Barton authored
llvm-svn: 159937
-
Richard Barton authored
llvm-svn: 159936
-
Richard Barton authored
Teach the assembler to use the narrow thumb encodings of various three-register dp instructions where permissable. llvm-svn: 159935
-
- Jul 08, 2012
-
-
Benjamin Kramer authored
Remove some trivial copy ctors so the classes become trivially copyable and get the optimized SmallVector implementation. llvm-svn: 159916
-
Benjamin Kramer authored
llvm-svn: 159914
-
- Jul 07, 2012
-
-
Andrew Trick authored
subtarget CPU descriptions and support new features of MachineScheduler. MachineModel has three categories of data: 1) Basic properties for coarse grained instruction cost model. 2) Scheduler Read/Write resources for simple per-opcode and operand cost model (TBD). 3) Instruction itineraties for detailed per-cycle reservation tables. These will all live side-by-side. Any subtarget can use any combination of them. Instruction itineraries will not change in the near term. In the long run, I expect them to only be relevant for in-order VLIW machines that have complex contraints and require a precise scheduling/bundling model. Once itineraries are only actively used by VLIW-ish targets, they could be replaced by something more appropriate for those targets. This tablegen backend rewrite sets things up for introducing MachineModel type #2: per opcode/operand cost model. llvm-svn: 159891
-
Andrew Trick authored
llvm-svn: 159890
-
Andrew Trick authored
llvm-svn: 159889
-
Manman Ren authored
It is safe if EFLAGS is killed or re-defined. When we are done with the basic block, check whether EFLAGS is live-out. Do not optimize away cmp if EFLAGS is live-out. llvm-svn: 159888
-
NAKAMURA Takumi authored
Thanks to Kai. llvm-svn: 159887
-
Bill Wendling authored
llvm-svn: 159881
-
Bill Wendling authored
llvm-svn: 159879
-
Chad Rosier authored
should be camel case, and start with a lower case letter. llvm-svn: 159877
-
Nuno Lopes authored
teach instcombine to remove allocated buffers even if there are stores, memcpy/memmove/memset, and objectsize users. This means we can do cheap DSE for heap memory. Nothing is done if the pointer excapes or has a load. The churn in the tests is mostly due to objectsize, since we want to make sure we don't delete the malloc call before evaluating the objectsize (otherwise it becomes -1/0) llvm-svn: 159876
-
Dmitri Gribenko authored
llvm-svn: 159874
-