| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
We called a variable ExitCount, stored the backedge count in it, then redefined it to be the exit count again.
llvm-svn: 247140
|
|
|
|
|
|
|
|
| |
Predicating stores requires creating extra blocks. It's much cleaner if we do this in one pass instead of mutating the CFG while writing vector instructions.
Besides which we can make use of helper functions to update domtree for us, reducing the work we need to do.
llvm-svn: 247139
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
One of the vector splitting paths for extract_vector_elt tries to lower:
define i1 @via_stack_bug(i8 signext %idx) {
%1 = extractelement <2 x i1> <i1 false, i1 true>, i8 %idx
ret i1 %1
}
to:
define i1 @via_stack_bug(i8 signext %idx) {
%base = alloca <2 x i1>
store <2 x i1> <i1 false, i1 true>, <2 x i1>* %base
%2 = getelementptr <2 x i1>, <2 x i1>* %base, i32 %idx
%3 = load i1, i1* %2
ret i1 %3
}
However, the elements of <2 x i1> are not byte-addressible. The result of this
is that the getelementptr expands to '%base + %idx * (1 / 8)' which simplifies
to '%base + %idx * 0', and then simply '%base' causing all values of %idx to
extract element zero.
This commit fixes this by promoting the vector elements of <8-bits to i8 before
splitting the vector.
This fixes a number of test failures in pocl.
Reviewers: pekka.jaaskelainen
Subscribers: pekka.jaaskelainen, llvm-commits
Differential Revision: http://reviews.llvm.org/D12591
llvm-svn: 247128
|
|
|
|
|
|
| |
nothing broke.
llvm-svn: 247127
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D11628
llvm-svn: 247125
|
|
|
|
|
|
|
| |
Broken by r247074. Should include an assembler test,
but the assembler is currently broken for VOP3b apparently.
llvm-svn: 247123
|
|
|
|
|
|
| |
IRCE was just using INITIALIZE_PASS(), which is incorrect.
llvm-svn: 247122
|
|
|
|
| |
llvm-svn: 247119
|
|
|
|
| |
llvm-svn: 247118
|
|
|
|
|
|
|
|
|
|
| |
Currently this hits an assert that extload should
always be supported, which assumes integer extloads.
This moves a hack out of SI's argument lowering and
is covered by existing tests.
llvm-svn: 247113
|
|
|
|
| |
llvm-svn: 247110
|
|
|
|
| |
llvm-svn: 247109
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Typically these are catchpads, which hold data used to decide whether to
catch the exception or continue unwinding. We also shouldn't create MBBs
for catchendpads, cleanupendpads, or terminatepads, since no real code
can live in them.
This fixes a problem where MI passes (like the register allocator) would
try to put code into catchpad blocks, which are not executed by the
runtime. In the new world, blocks ending in invokes now have many
possible successors.
llvm-svn: 247102
|
|
|
|
| |
llvm-svn: 247095
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
32-bit funclets have short prologues that allocate enough stack for the
largest call in the whole function. The runtime saves CSRs for the
funclet. It doesn't restore CSRs after we finally transfer control back
to the parent funciton via a CATCHRET, but that's a separate issue.
32-bit funclets also have to adjust the incoming EBP value, which is
what llvm.x86.seh.recoverframe does in the old model.
64-bit funclets need to spill CSRs as normal. For simplicity, this just
spills the same set of CSRs as the parent function, rather than trying
to compute different CSR sets for the parent function and each funclet.
64-bit funclets also allocate enough stack space for the largest
outgoing call frame, like 32-bit.
Reviewers: majnemer
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12546
llvm-svn: 247092
|
|
|
|
|
|
| |
members." as it causes test failures on a number of bots.
llvm-svn: 247088
|
|
|
|
|
|
| |
read CTR and count them as reading the CTR.
llvm-svn: 247083
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change extends the bitset lowering pass to support bitsets that may
contain either functions or global variables. A function bitset is lowered to
a jump table that is laid out before one of the functions in the bitset.
Also add support for non-string bitset identifier names. This allows for
distinct metadata nodes to stand in for names with internal linkage,
as done in D11857.
Differential Revision: http://reviews.llvm.org/D11856
llvm-svn: 247080
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Add a test for a data followed by 4-byte hash value.
I use a slightly modified Jenkins hash function,
as described in https://en.wikipedia.org/wiki/Jenkins_hash_function
The modification is to ensure that hash(zeros) != 0.
Reviewers: kcc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12648
llvm-svn: 247076
|
|
|
|
|
|
|
|
|
| |
Adds vcc to output string input for e32. Allows option
of using e64 encoding with assembler.
Also fixes these instructions not implicitly reading exec.
llvm-svn: 247074
|
|
|
|
|
|
|
|
|
| |
The pass is needed to remove __nvvm_reflect calls when we link in
libdevice bitcode that comes with CUDA.
Differential Revision: http://reviews.llvm.org/D11663
llvm-svn: 247072
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: This patch modifies X86TargetLowering::LowerVASTART so that
struct va_list is initialized with 32 bit pointers in x32. It also
includes tests that call @llvm.va_start() for x32.
Patch by João Porto
Subscribers: llvm-commits, hjl.tools
Differential Revision: http://reviews.llvm.org/D12346
llvm-svn: 247069
|
|
|
|
| |
llvm-svn: 247067
|
|
|
|
|
|
| |
if a file was there but disappeared)
llvm-svn: 247066
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CodeGen passes
This allows backends which don't use a traditional register allocator,
but do need PHI lowering and other passes, to use the default
TargetPassConfig::addFastRegAlloc and
TargetPassConfig::addOptimizedRegAlloc implementations.
Differential Revision: http://reviews.llvm.org/D12691
llvm-svn: 247065
|
|
|
|
| |
llvm-svn: 247061
|
|
|
|
|
|
|
|
|
|
|
| |
These were marked as WriteSALU, which is low latency.
I'm guessing at the value to use, but it should probably
be considered the highest latency instruction.
I'm not sure this has any actual effect since hasSideEffects
probably is preventing any moving of these.
llvm-svn: 247060
|
|
|
|
|
|
|
|
| |
This should be convergent. This is not a
barrier in the isBarrier sense, nor
hasCtrlDep.
llvm-svn: 247059
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old implementation assumed LP64 which is broken for x32. Specifically, the
MOVE8rm_NOREX and MOVE8mr_NOREX, when selected, would cause a 'Cannot emit
physreg copy instruction' error message to be reported.
This patch also enable the h-register*ll tests for x32.
Differential Revision: http://reviews.llvm.org/D12336
Patch by João Porto
llvm-svn: 247058
|
|
|
|
|
|
|
|
|
| |
sub C, x - > add (sub 0, x), C for DS offsets.
This is mostly to fix regressions that show up when
SeparateConstOffsetFromGEP is enabled.
llvm-svn: 247054
|
|
|
|
|
|
|
|
|
|
|
|
| |
This corner case happens when we have an irreducible SCC that is
deeply nested. As we work down the tree, the backedge masses start
getting smaller and smaller until we reach one that is down to 0.
Since we distribute the incoming mass using the backedge masses as
weight, the distributor does not allow zero weights. So, we simply
ignore them (which will just use the weights of the non-zero nodes).
llvm-svn: 247050
|
|
|
|
|
|
|
|
|
|
| |
.align directive refuses alignment 0 -- a comment in the code hints this is
done for GNU as compatibility, but it seems GNU as accepts .align 0
(and silently rounds up alignment to 1).
Differential Revision: http://reviews.llvm.org/D12682
llvm-svn: 247048
|
|
|
|
|
|
| |
Based on a patch by Jerome Witmann.
llvm-svn: 247047
|
|
|
|
| |
llvm-svn: 247043
|
|
|
|
|
|
|
|
|
|
| |
x86 call frame optimization
Patch by Dave Kreitzer
Differential Revision: http://reviews.llvm.org/D12620
llvm-svn: 247042
|
|
|
|
| |
llvm-svn: 247033
|
|
|
|
| |
llvm-svn: 247030
|
|
|
|
|
|
| |
Renamed from: https://github.com/WebAssembly/design/pull/332
llvm-svn: 247028
|
|
|
|
| |
llvm-svn: 247027
|
|
|
|
| |
llvm-svn: 247021
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D1179
llvm-svn: 247017
|
|
|
|
|
|
|
|
| |
Added tests for encoding.
Differential Revision: http://reviews.llvm.org/D12061
llvm-svn: 247010
|
|
|
|
| |
llvm-svn: 247008
|
|
|
|
| |
llvm-svn: 247006
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D11801
llvm-svn: 246999
|
|
|
|
|
|
|
|
|
|
|
| |
removes cast by performing the lshr on smaller types. However, currently there
is no trunc(lshr (sext A), Cst) variant.
This patch add such optimization by transforming trunc(lshr (sext A), Cst)
to ashr A, Cst.
Differential Revision: http://reviews.llvm.org/D12520
llvm-svn: 246997
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: And define them to have noop casts with address spaces 0-255.
Reviewers: pekka.jaaskelainen
Subscribers: pekka.jaaskelainen, llvm-commits
Differential Revision: http://reviews.llvm.org/D12678
llvm-svn: 246990
|
|
|
|
|
|
|
|
| |
16-bit LBU16, LHU16, LW16, LWGP and LWSP instructions
Differential Revision: http://reviews.llvm.org/D10956
llvm-svn: 246987
|
|
|
|
| |
llvm-svn: 246983
|
|
|
|
| |
llvm-svn: 246982
|