| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
Vector types: <8 x 64>, <16 x 32>, <32 x 16> float and integer.
Differential Revision: http://reviews.llvm.org/D10683
llvm-svn: 246981
|
| |
|
|
|
|
|
|
| |
FLOOR.W.fmt, TRUNC.L.fmt, TRUNC.W.fmt, RSQRT.fmt and SQRT.fmt instructions
Differential Revision: http://reviews.llvm.org/D11674
llvm-svn: 246968
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D11181
llvm-svn: 246963
|
| |
|
|
|
|
|
|
|
| |
SelectT2ShifterOperandReg has identical behaviour to SelectImmShifterOperand,
so get rid of it and use SelectImmShifterOperand instead.
Differential Revision: http://reviews.llvm.org/D12195
llvm-svn: 246962
|
| |
|
|
|
|
|
|
| |
MAX.fmt, MIN.fmt, MAXA.fmt, MINA.fmt and CMP.condn.fmt instructions
Differential Revision: http://reviews.llvm.org/D12141
llvm-svn: 246960
|
| |
|
|
| |
llvm-svn: 246953
|
| |
|
|
|
|
|
|
|
|
| |
Trivial multiplication by zero may survive the worklist. We tried to
reassociate the multiplication with a division instruction, causing us
to divide by zero; bail out instead.
This fixes PR24726.
llvm-svn: 246939
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In searching for a fix for the underlying code-quality bug highlighted by
r246937 (that SDAG simplification can lead to us generating an ISD::OR node
with a constant zero LHS), I ran across this:
We generically canonicalize commutative binary-operation nodes in SDAG getNode
so that, if only one operand is a constant, it will be on the RHS. However, we
were doing this only after a bunch of constant-based simplification checks that
all assume this canonical form (that any constant will be on the RHS). Moving
the operand-swapping canonicalization prior to these checks seems like the
right thing to do (and, as it turns out, causes SDAG to completely fold away the
computation in test/CodeGen/ARM/2012-11-14-subs_carry.ll, just like InstCombine
would do).
llvm-svn: 246938
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To commute a trivial rlwimi instructions (meaning one with a full mask and zero
shift), we'd need to ability to form an all-zero mask (instead of an all-one
mask) using rlwimi. We can't represent this, however, and we'll miscompile code
if we try.
The code quality problem that this highlights (that SDAG simplification can
lead to us generating an ISD::OR node with a constant zero LHS) will be fixed
as a follow-up.
Fixes PR24719.
llvm-svn: 246937
|
| |
|
|
|
|
| |
This fixes PR24713.
llvm-svn: 246933
|
| |
|
|
|
| |
Differential: http://reviews.llvm.org/D11590
llvm-svn: 246930
|
| |
|
|
|
|
|
|
| |
MADDF.fmt, MSUBF.fmt and NEG.fmt instructions
Differential Revision: http://reviews.llvm.org/D11978
llvm-svn: 246919
|
| |
|
|
| |
llvm-svn: 246908
|
| |
|
|
|
|
|
| |
We want a deterministic output. GNU AS leaves it zero.
FIXME: It may be optional by its user, like llc and clang.
llvm-svn: 246905
|
| |
|
|
| |
llvm-svn: 246903
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PPCISelDAGToDAG has a transformation that generates a rlwimi instruction from
an input pattern that looks like this:
and(or(x, c1), c2)
but the associated logic does not work if there are bits that are 1 in c1 but 0
in c2 (these are normally canonicalized away, but that can't happen if the 'or'
has other users. Make sure we abort the transformation if such bits are
discovered.
Fixes PR24704.
llvm-svn: 246900
|
| |
|
|
| |
llvm-svn: 246899
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D12434
llvm-svn: 246896
|
| |
|
|
| |
llvm-svn: 246888
|
| |
|
|
| |
llvm-svn: 246865
|
| |
|
|
| |
llvm-svn: 246851
|
| |
|
|
|
|
|
| |
Casting to unsigned long can cause the time to get truncated to 32-bits,
making it appear to be a valid timestamp. Just use isUInt<32> instead.
llvm-svn: 246840
|
| |
|
|
|
|
| |
[-Wsign-compare]
llvm-svn: 246839
|
| |
|
|
|
|
| |
mutations before returning un-mutated data
llvm-svn: 246828
|
| |
|
|
| |
llvm-svn: 246825
|