| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Patch by Joshua Magee.
llvm-svn: 180842
|
| |
|
|
| |
llvm-svn: 180838
|
| |
|
|
| |
llvm-svn: 180837
|
| |
|
|
|
|
|
|
|
| |
This reverts commit r180802
There's ongoing discussion about whether this is the right place to make
this transformation. Reverting for now while we figure it out.
llvm-svn: 180834
|
| |
|
|
|
|
|
|
|
| |
Expand copy instructions between two accumulator registers before callee-saved
scan is done. Handle copies between integer GPR and hi/lo registers in
MipsSEInstrInfo::copyPhysReg. Delete pseudo-copy instructions that are not
needed.
llvm-svn: 180827
|
| |
|
|
|
|
| |
entire register is guaranteed to be preserved.
llvm-svn: 180825
|
| |
|
|
|
|
| |
instructions.
llvm-svn: 180820
|
| |
|
|
|
|
|
|
|
|
| |
can express a"
because it breaks some buildbots.
This reverts commit 180816.
llvm-svn: 180819
|
| |
|
|
|
|
|
|
|
|
|
|
| |
register-indirect address with an offset of 0.
It used to be that a DBG_VALUE is a register-indirect value if the offset
(operand 1) is nonzero. The new convention is that a DBG_VALUE is
register-indirect if the first operand is a register and the second
operand is an immediate. For plain registers use the combination reg, reg.
rdar://problem/13658587
llvm-svn: 180816
|
| |
|
|
|
|
| |
Patch by Zoran Jovanovic.
llvm-svn: 180804
|
| |
|
|
|
|
|
|
|
|
|
| |
Always fold a shuffle-of-shuffle into a single shuffle when there's only one
input vector in the first place. Continue to be more conservative when there's
multiple inputs.
rdar://13402653
PR15866
llvm-svn: 180802
|
| |
|
|
|
|
|
|
|
|
|
|
| |
First, taking advantage of the fact that the virtual base registers are allocated in order of the local frame offsets, remove the quadratic register-searching behavior. Because of the ordering, we only need to check the last virtual base register created.
Second, store the frame index in the FrameRef structure, and get the frame index and the local offset from this structure at the top of the loop iteration. This allows us to de-nest the loops in insertFrameReferenceRegisters (and I think makes the code cleaner). I also moved the needsFrameBaseReg check into the first loop over instructions so that we don't bother pushing FrameRefs for instructions that don't want a virtual base register anyway.
Lastly, and this is the only functionality change, avoid the creation of single-use virtual base registers. These are currently not useful because, in general, they end up replacing what would be one r+r instruction with an add and a r+i instruction. Committing this removes the XFAIL in CodeGen/PowerPC/2007-09-07-LoadStoreIdxForms.ll
Jim has okayed this off-list.
llvm-svn: 180799
|
| |
|
|
|
|
|
| |
This will make it easier to turn on struct-path aware TBAA since the metadata
format will change.
llvm-svn: 180796
|
| |
|
|
|
|
|
|
| |
the inlined function has multiple returns.
rdar://problem/12415623
llvm-svn: 180793
|
| |
|
|
| |
llvm-svn: 180790
|
| |
|
|
|
|
| |
Texture cache is now used when shader type is not specified
llvm-svn: 180785
|
| |
|
|
|
|
| |
instructions. All instructions in this class have bit 4 cleared. It turns out that there is a test case for this, but it was marked XFAIL.
llvm-svn: 180778
|
| |
|
|
|
|
|
|
|
| |
This fixes the optimization introduced in r179748 and reverted in r179750.
While the optimization was sound, it did not properly respect differences in
bit-width.
llvm-svn: 180777
|
| |
|
|
| |
llvm-svn: 180776
|
| |
|
|
|
|
|
| |
This fixes 2013-04-04-RelocAddend.ll. We don't have a testcase for non external
relocs with an Addend. I will try to write one.
llvm-svn: 180767
|
| |
|
|
| |
llvm-svn: 180761
|
| |
|
|
|
|
| |
v2[Vincent Lejeune]: Split FetchInst into usesTextureCache/usesVertexCache
llvm-svn: 180755
|
| |
|
|
| |
llvm-svn: 180754
|
| |
|
|
|
|
|
| |
This will make it easier to turn on struct-path aware TBAA since the metadata
format will change.
llvm-svn: 180745
|
| |
|
|
| |
llvm-svn: 180744
|
| |
|
|
|
|
|
| |
This will make it easier to turn on struct-path aware TBAA since the metadata
format will change.
llvm-svn: 180743
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- Revise previous patches of the same purpose by fixing
*) grep <PA> | not grep <PB> semantically is not the same as
CHECK: <PA>{{^<PB>.*$}} as the former will check all occurrences of <PA>
while the later only check the first match. As the result, CHECK needs
putting in all place where <PA> occurs.
*) grep <PA> | count <N> needs a final CHECK-NOT of the same pattern.
(As 'CHECK-<N>' is proposed for discussion, converting 'grep | count <N>'
where N > 1 is postponed.)
llvm-svn: 180742
|
| |
|
|
| |
llvm-svn: 180738
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
For regular object files this is only meaningful for common symbols. An object
file format with direct support for atoms should be able to provide alignment
information for all symbols.
This replaces getCommonSymbolAlignment and fixes
test-common-symbols-alignment.ll on darwin. This also includes a fix to
MachOObjectFile::getSymbolFlags. It was marking undefined symbols as common
(already tested by existing mcjit tests now that it is used).
llvm-svn: 180736
|
| |
|
|
| |
llvm-svn: 180735
|
| |
|
|
|
|
| |
The EOP bit was not being encoded.
llvm-svn: 180734
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This resurrects r179957, but adds code that makes sure we don't touch
atomic/volatile stores:
This transformation will transform a conditional store with a preceeding
uncondtional store to the same location:
a[i] =
may-alias with a[i] load
if (cond)
a[i] = Y
into an unconditional store.
a[i] = X
may-alias with a[i] load
tmp = cond ? Y : X;
a[i] = tmp
We assume that on average the cost of a mispredicted branch is going to be
higher than the cost of a second store to the same location, and that the
secondary benefits of creating a bigger basic block for other optimizations to
work on outway the potential case where the branch would be correctly predicted
and the cost of the executing the second store would be noticably reflected in
performance.
hmmer's execution time improves by 30% on an imac12,2 on ref data sets. With
this change we are on par with gcc's performance (gcc also performs this
transformation). There was a 1.2 % performance improvement on a ARM swift chip.
Other tests in the test-suite+external seem to be mostly uninfluenced in my
experiments:
This optimization was triggered on 41 tests such that the executable was
different before/after the patch. Only 1 out of the 40 tests (dealII) was
reproducable below 100% (by about .4%). Given that hmmer benefits so much I
believe this to be a fair trade off.
llvm-svn: 180731
|
| |
|
|
|
|
|
| |
I recently enabled them on 32 and 64 bit darwin, but it looks like 32 bit is
still fairly broken.
llvm-svn: 180730
|
| |
|
|
|
|
| |
This gets most of the MCJITs tests passing with MachO.
llvm-svn: 180716
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ObjCARCContract instead of ObjCARCOpts.
Turning retains into retainRV calls disrupts the data flow analysis in
ObjCARCOpts. Thus we move it as late as we can by moving it into
ObjCARCContract.
We leave in the conversion from retainRV -> retain in ObjCARCOpt since
it enables the dataflow analysis.
rdar://10813093
llvm-svn: 180698
|
| |
|
|
|
|
|
|
|
|
| |
When Reassociator optimize "(x | C1)" ^ "(X & C2)", it may swap the two
subexpressions, however, it forgot to swap cached constants (of C1 and C2)
accordingly.
rdar://13739160
llvm-svn: 180676
|
| |
|
|
|
|
|
|
| |
The CodeGen aspects of this test are already covered by cfi-frame.ll;
making it an assembly file reduces the risk of incidental changes
affecting the test.
llvm-svn: 180671
|
| |
|
|
|
|
|
|
|
| |
Mainly adding paranoid checks for the closing brace of a function to
help with FileCheck error readability. Also some other minor changes.
No actual CHECK changes.
llvm-svn: 180668
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to determine whether or not we're on a darwin platform for debug code
emitting.
Solves the problem of a module with no triple on the command line
and no triple in the module using non-gdb ok features on darwin. Fix
up the member-pointers test to check the correct things for cross
platform (DW_FORM_flag is a good prefix).
Unfortunately no testcase because I have no ideas how to test something
without a triple and without a triple in the module yet check
precisely on two platforms. Ideas welcome.
llvm-svn: 180660
|
| |
|
|
| |
llvm-svn: 180659
|
| |
|
|
|
|
|
| |
This fixes pr15763.
Patch by David Fang.
llvm-svn: 180657
|
| |
|
|
|
|
|
|
| |
We switch the order of offset and field type to make TBAAStructType node
(name, parent node, offset) similar to scalar TBAA node (name, parent node).
TypeIsImmutable is added to TBAAStructTag node.
llvm-svn: 180654
|
| |
|
|
|
|
| |
Hopefully brings the windows buildbots back to life.
llvm-svn: 180630
|
| |
|
|
|
|
|
|
| |
arithmetic operations.
Patch by Yuri Veselov.
llvm-svn: 180626
|
| |
|
|
|
|
|
|
|
| |
We need to intialize this to something and since clang does not set
the shader type attribute and clang is used only for compute shaders,
initializing it to COMPUTE seems like the best choice.
Reviewed-by: Christian König <christian.koenig@amd.com>
llvm-svn: 180620
|
| |
|
|
|
|
| |
rdar://problem/13056109
llvm-svn: 180619
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"hint" space for Thumb actually overlaps the encoding space of the CPS
instruction. In actuality, hints can be defined as CPS instructions where imod
and M bits are all nil.
Handle decoding of permitted nop-compatible hints (i.e. nop, yield, wfi, wfe,
sev) in DecodeT2CPSInstruction.
This commit adds a proper diagnostic message for Imm0_4 and updates all tests.
Patch by Mihail Popa <Mihail.Popa@arm.com>.
llvm-svn: 180617
|
| |
|
|
| |
llvm-svn: 180616
|
| |
|
|
|
|
|
|
|
|
|
| |
Since we can't guarantee that the original dbg.declare instrinsic
is removed by LowerDbgDeclare(), we need to make sure that we are
not inserting the same dbg.value intrinsic over and over.
This removes tons of redundant DIEs when compiling optimized code.
rdar://problem/13056109
llvm-svn: 180615
|
| |
|
|
| |
llvm-svn: 180604
|