| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X = sext x; x >s c ? X : C+1 --> X = sext x; X <s C+1 ? C+1 : X
X = sext x; x <s c ? X : C-1 --> X = sext x; X >s C-1 ? C-1 : X
X = zext x; x >u c ? X : C+1 --> X = zext x; X <u C+1 ? C+1 : X
X = zext x; x <u c ? X : C-1 --> X = zext x; X >u C-1 ? C-1 : X
X = sext x; x >u c ? X : C+1 --> X = sext x; X <u C+1 ? C+1 : X
X = sext x; x <u c ? X : C-1 --> X = sext x; X >u C-1 ? C-1 : X
Instead of calculating this with mixed types promote all to the
larger type. This enables scalar evolution to analyze this
expression. PR8866
llvm-svn: 123034
|
|
|
|
| |
llvm-svn: 123033
|
|
|
|
|
|
| |
Enable live debug variables pass.
llvm-svn: 123032
|
|
|
|
|
|
| |
cheap as a copy.
llvm-svn: 123031
|
|
|
|
|
|
| |
additional notes.
llvm-svn: 123030
|
|
|
|
|
|
| |
every BranchInst has a fixed number of operands.
llvm-svn: 123027
|
|
|
|
| |
llvm-svn: 123025
|
|
|
|
|
|
| |
regression (even on Nehalem) in edge cases. I also didn't see any real performance benefit.
llvm-svn: 123015
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also fix an off-by-one in SelectionDAGBuilder that was preventing shuffle
vectors from being translated to EXTRACT_SUBVECTOR.
Patch by Tim Northover.
The test changes are needed to keep those spill-q tests from testing aligned
spills and restores. If the only aligned stack objects are spill slots, we
no longer realign the stack frame. Prior to this patch, an EXTRACT_SUBVECTOR
was legalized by loading from the stack, which created an aligned frame index.
Now, however, there is nothing except the spill slot in the stack frame, so
I added an aligned alloca.
llvm-svn: 122995
|
|
|
|
| |
llvm-svn: 122994
|
|
|
|
|
|
|
|
| |
We were never generating any of these nodes with variable indices, and there
was one legalizer function asserting on a non-constant index. If we ever have
a need to support variable indices, we can add this back again.
llvm-svn: 122993
|
|
|
|
|
|
| |
we have invokes, so there is no functionality change here.
llvm-svn: 122990
|
|
|
|
|
|
| |
Nadav Rotem.
llvm-svn: 122983
|
|
|
|
|
|
| |
typed atomics. This will lower exclusively to libcalls at the moment.
llvm-svn: 122979
|
|
|
|
|
|
| |
things :)
llvm-svn: 122978
|
|
|
|
| |
llvm-svn: 122977
|
|
|
|
|
|
| |
This fixes PR 8913 crash.
llvm-svn: 122971
|
|
|
|
| |
llvm-svn: 122970
|
|
|
|
| |
llvm-svn: 122969
|
|
|
|
| |
llvm-svn: 122968
|
|
|
|
| |
llvm-svn: 122966
|
|
|
|
| |
llvm-svn: 122963
|
|
|
|
|
|
| |
Patch by Richard Simth.
llvm-svn: 122962
|
|
|
|
|
|
|
|
| |
langth are equal.
This happens when we take the (non-constant) length from a malloc.
llvm-svn: 122961
|
|
|
|
| |
llvm-svn: 122960
|
|
|
|
|
|
| |
with the size passed to malloc.
llvm-svn: 122959
|
|
|
|
| |
llvm-svn: 122958
|
|
|
|
| |
llvm-svn: 122957
|
|
|
|
|
|
|
|
| |
The theory is it's still faster than a pair of movq / a quad of movl. This
will probably hurt older chips like P4 but should run faster on current
and future Intel processors. rdar://8817010
llvm-svn: 122955
|
|
|
|
|
|
| |
179.art.
llvm-svn: 122954
|
|
|
|
| |
llvm-svn: 122953
|
|
|
|
|
|
|
| |
etc. takes an option OptSize. If OptSize is true, it would return
the inline limit for functions with attribute OptSize.
llvm-svn: 122952
|
|
|
|
|
|
|
|
|
|
| |
ret i64 ptrtoint (i8* getelementptr ([1000 x i8]* @X, i64 1, i64 sub (i64 0, i64 ptrtoint ([1000 x i8]* @X to i64))) to i64)
to "ret i64 1000". This allows us to correctly compute the trip count
on a loop in PR8883, which occurs with std::fill on a char array. This
allows us to transform it into a memset with a constant size.
llvm-svn: 122950
|
|
|
|
| |
llvm-svn: 122949
|
|
|
|
|
|
| |
OptimizeInst() so that they can be used on a worklist instruction.
llvm-svn: 122945
|
|
|
|
| |
llvm-svn: 122944
|
|
|
|
|
|
|
| |
into a separate function, so that it can be called from a loop using a worklist
rather than a loop traversing a whole basic block.
llvm-svn: 122943
|
|
|
|
|
|
| |
Simplify RALinScan::DowngradeRegister with TRI::getOverlaps while we are there.
llvm-svn: 122940
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This pass precomputes CFG block frequency information that can be used by the
register allocator to find optimal spill code placement.
Given an interference pattern, placeSpills() will compute which basic blocks
should have the current variable enter or exit in a register, and which blocks
prefer the stack.
The algorithm is ready to consume block frequencies from profiling data, but for
now it gets by with the static estimates used for spill weights.
This is a work in progress and still not hooked up to RegAllocGreedy.
llvm-svn: 122938
|
|
|
|
|
|
|
|
| |
up freebsd bootloader. However, this doesn't make much sense for Darwin, whose
-Os is meant to optimize for size only if it doesn't hurt performance.
rdar://8821501
llvm-svn: 122936
|
|
|
|
|
|
|
| |
the original type of the switch statement key.
rdar://8781238
llvm-svn: 122935
|
|
|
|
|
|
|
| |
works only on MinGW32. On 64-bit, the function to call is "__chkstk".
Patch by KS Sreeram!
llvm-svn: 122934
|
|
|
|
|
|
|
|
| |
beginning of the "main" function. The assembler complains about the invalid
suffix for the 'call' instruction. The right instruction is "callq __main".
Patch by KS Sreeram!
llvm-svn: 122933
|
|
|
|
|
|
| |
worklist, the key will need to become std::pair<BasicBlock*, Value*>.
llvm-svn: 122932
|
|
|
|
| |
llvm-svn: 122929
|
|
|
|
|
|
|
|
|
| |
r1025 = s/zext r1024, 4
r1026 = extract_subreg r1025, 4
to:
r1026 = copy r1024
llvm-svn: 122925
|
|
|
|
| |
llvm-svn: 122921
|
|
|
|
| |
llvm-svn: 122920
|
|
|
|
|
|
| |
calculated.
llvm-svn: 122912
|
|
|
|
| |
llvm-svn: 122911
|