- Mar 05, 2013
-
-
Bill Wendling authored
llvm-svn: 176467
-
- Mar 02, 2013
-
-
Eli Bendersky authored
llvm-svn: 176391
-
- Mar 01, 2013
-
-
Akira Hatanaka authored
llvm-svn: 176378
-
Chad Rosier authored
handle indirect register inputs. rdar://13322011 llvm-svn: 176367
-
Michael Liao authored
- ISD::SHL/SRL/SRA must have either both scalar or both vector operands but TLI.getShiftAmountTy() so far only return scalar type. As a result, backend logic assuming that breaks. - Rename the original TLI.getShiftAmountTy() to TLI.getScalarShiftAmountTy() and re-define TLI.getShiftAmountTy() to return target-specificed scalar type or the same vector type as the 1st operand. - Fix most TICG logic assuming TLI.getShiftAmountTy() a simple scalar type. llvm-svn: 176364
-
Andrew Trick authored
llvm-svn: 176316
-
Andrew Trick authored
We avoided computing DAG height/depth during Node printing because it shouldn't depend on an otherwise valid DAG. But this has become far too annoying for the common case of a valid DAG where we want to see valid values. If doing the computation on-the-fly turns out to be a problem in practice, then I'll add a mode to the diagnostics to only force it when we're likely to have a valid DAG, otherwise explicitly print INVALID instead of bogus numbers. For now, just go for it all the time. llvm-svn: 176314
-
Eli Bendersky authored
SelectionDAGIsel::LowerArguments needs a function, not a basic block. So it makes sense to pass it the function instead of extracting a basic-block from the function and then tossing it. This is also more self-documenting (functions have arguments, BBs don't). In addition, added comments to a couple of Select* methods. llvm-svn: 176305
-
- Feb 28, 2013
-
-
Benjamin Kramer authored
We make the cost for calling libm functions extremely high as emitting the calls is expensive and causes spills (on x86) so performance suffers. We still vectorize important calls like ceilf and friends on SSE4.1. and fabs. Differential Revision: http://llvm-reviews.chandlerc.com/D466 llvm-svn: 176287
-
Eli Bendersky authored
other per-instruction statistics. llvm-svn: 176273
-
Eric Christopher authored
a few lines above. llvm-svn: 176224
-
Eric Christopher authored
llvm-svn: 176223
-
Eric Christopher authored
llvm-svn: 176222
-
Manman Ren authored
definition DIE (TAG_variable), and put AT_MIPS_linkage_name to TAG_member when DarwinGDBCompat is true. Darwin GDB needs AT_MIPS_linkage_name at both places to work. Follow-up patch to r176143. rdar://problem/13291234 llvm-svn: 176220
-
- Feb 27, 2013
-
-
Nadav Rotem authored
llvm-svn: 176218
-
Nadav Rotem authored
The FastISEL should be fast. But when we record statistics we use atomic operations to increment the counters. This patch disables the counters on non-debug builds. This reduces the runtime of SelectionDAGISel::SelectCodeCommon by ~5%. llvm-svn: 176214
-
Michael Ilseman authored
llvm-svn: 176204
-
Manman Ren authored
CurrentCallSite to avoid an assertion failure: assert(MMI.getCurrentCallSite() == 0 && "Overlapping call sites!"); rdar://problem/13228754 llvm-svn: 176154
-
Manman Ren authored
definition DIE, to make old GDB happy. We have a regression for old GDB when Clang uses DW_TAG_member to declare static members inside a class, instead of DW_TAG_variable. This patch will fix this regression. rdar://problem/13291234 llvm-svn: 176143
-
Michael Ilseman authored
llvm-svn: 176136
-
- Feb 26, 2013
-
-
Manman Ren authored
llvm-svn: 176129
-
Manman Ren authored
TAG_member inside a class to the specification DIE. Having AT_MIPS_linkage_name on TAG_member caused old gdb (GNU 6.3.50) to error out. Also gcc 4.7 has AT_MIPS_linkage_name on the specification DIE. rdar://problem/13291234 llvm-svn: 176120
-
- Feb 25, 2013
-
-
Chad Rosier authored
llvm-svn: 176055
-
Chad Rosier authored
fewer scalar integer (i32 or i64) arguments. It completely eliminates the need for SDISel for trivial functions. Also, add the new llc -fast-isel-abort-args option, which is similar to -fast-isel-abort option, but for formal argument lowering. llvm-svn: 176052
-
Andrew Trick authored
Fixes rdar:13279013: scheduler was blowing up on select instructions. llvm-svn: 176037
-
Matt Beaumont-Gay authored
llvm-svn: 176031
-
Chandler Carruth authored
llvm-svn: 176023
-
Chandler Carruth authored
memory intrinsics in the SDAG builder. When alignment is zero, the lang ref says that *no* alignment assumptions can be made. This is the exact opposite of the internal API contracts of the DAG where alignment 0 indicates that the alignment can be made to be anything desired. There is another, more explicit alignment that is better suited for the role of "no alignment at all": an alignment of 1. Map the intrinsic alignment to this early so that we don't end up generating aligned DAGs. It is really terrifying that we've never seen this before, but we suddenly started generating a large number of alignment 0 memcpys due to the new code to do memcpy-based copying of POD class members. That patch contains a bug that rounds bitfield alignments down when they are the first field. This can in turn produce zero alignments. This fixes weird crashes I've seen in library users of LLVM on 32-bit hosts, etc. llvm-svn: 176022
-
- Feb 24, 2013
-
-
Cameron Zwarich authored
builds. llvm-svn: 175981
-
Cameron Zwarich authored
true when shouldOnlyCommute is false, so we can remove code that checks otherwise. llvm-svn: 175980
-
Cameron Zwarich authored
itself recursively with a new instruction that has not been finalized, in order to determine whether to keep the instruction. On 'make check' and test-suite the only cases where the recursive invocation made any transformations were simple instruction commutations, so I am restricting the recursive invocation to do only this. The other cases wouldn't work correctly when updating LiveIntervals, since the new instructions don't have slot indices and LiveIntervals hasn't yet been updated. If the other transformations were actually triggering in any test case it would be possible to support it with a lot of effort, but since they don't it's not worth it. llvm-svn: 175979
-
Cameron Zwarich authored
unless it was requested to with an optional parameter that defaults to false, so we don't need to handle that case in TwoAddressInstructionPass. llvm-svn: 175974
-
- Feb 23, 2013
-
-
Cameron Zwarich authored
MachineInstrs don't have a slot index. llvm-svn: 175961
-
Cameron Zwarich authored
running ASCI_Purple/SMG2000 in the test-suite. llvm-svn: 175957
-
Cameron Zwarich authored
llvm-svn: 175956
-
Cameron Zwarich authored
TwoAddressInstructionPass. The code in rescheduleMIBelowKill() is a bit tricky, since multiple instructions need to be moved down, one-at-a-time, in reverse order. llvm-svn: 175955
-
Eric Christopher authored
update testcase accordingly to give the correct name to the cu. llvm-svn: 175934
-
Nadav Rotem authored
One of the phases of SelectionDAG is LegalizeVectors. We don't need to sort the DAG and copy nodes around if there are no vector ops. Speeds up the compilation time of SelectionDAG on a big scalar workload by ~8%. llvm-svn: 175929
-
- Feb 22, 2013
-
-
Pete Cooper authored
It was incorrectly checking a Function* being an IntrinsicInst* which isn't possible. It should always have been checking the CallInst* instead. Added test case for x86 which ensures we only get one constant load. It was 2 before this change. rdar://problem/13267920 llvm-svn: 175853
-
- Feb 21, 2013
-
-
Cameron Zwarich authored
pass. One of the callers of isKilled() can cope with overapproximation of kills and the other can't, so I added a flag to indicate this. In theory this could pessimize code slightly, but in practice most physical register uses are kills, and most important kills of physical registers are the only uses of that register prior to register allocation, so we can recognize them as kills even without kill flags. This is relevant because LiveIntervals gets rid of all kill flags. llvm-svn: 175821
-