| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
pow(x, 0.5) calls
Also, propagate the FMF to the newly created sqrt() call.
llvm-svn: 257503
|
| |
|
|
| |
llvm-svn: 257500
|
| |
|
|
|
|
| |
Patch by Jakob Bornecrantz
llvm-svn: 257499
|
| |
|
|
| |
llvm-svn: 257496
|
| |
|
|
|
|
|
|
|
| |
The findExternalCalls routine ignores calls to functions already
defined in the dest module. This was not handling the case where
the definition in the current module is actually an alias to a
function call.
llvm-svn: 257493
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
pow(exp(x)) calls
See also:
http://reviews.llvm.org/rL255555
http://reviews.llvm.org/rL256871
http://reviews.llvm.org/rL256964
http://reviews.llvm.org/rL257400
http://reviews.llvm.org/rL257404
http://reviews.llvm.org/rL257414
llvm-svn: 257491
|
| |
|
|
|
|
|
|
|
|
| |
This is a very limited implementation of DFG-based copy propagation.
It only handles actual COPY instructions (does not handle other equivalents
such as add-immediate with a 0 operand).
The major limitation is that it does not update the DFG: that will be the
change required to make it more robust (hopefully coming up soon).
llvm-svn: 257490
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: arsenm, echristo
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D16010
llvm-svn: 257488
|
| |
|
|
|
|
| |
Utility class to perform DFG-based dead code elimination.
llvm-svn: 257485
|
| |
|
|
| |
llvm-svn: 257483
|
| |
|
|
| |
llvm-svn: 257482
|
| |
|
|
|
|
| |
Compute block live-ins and operand kill flags from the DFG.
llvm-svn: 257480
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: The result register is the second operand as per the other mt* instructions.
Reviewers: vkalintiris
Subscribers: llvm-commits, dsanders
Differential Revision: http://reviews.llvm.org/D15993
llvm-svn: 257478
|
| |
|
|
|
|
|
|
|
| |
Target independent, SSA-based data flow framework for representing
data flow between physical registers.
This commit implements the creation of the actual data flow graph.
llvm-svn: 257477
|
| |
|
|
| |
llvm-svn: 257476
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This fixes three bugs, in all of which state is not or incorrecly reset between
objects (i.e. when reusing the same pass manager to create multiple object
files):
1) AttributeSection needs to be reset to nullptr, because otherwise the backend
will try to emit into the old object file's attribute section causing a
segmentation fault.
2) MappingSymbolCounter needs to be reset, otherwise the second object file
will start where the first one left off.
3) The MCStreamer base class resets the Streamer's e_flags settings. Since
EF_ARM_EABI_VER5 is set on streamer creation, we need to set it again
after the MCStreamer was rest.
Also rename Reset (uppser case) to EHReset to avoid confusion with
reset (lower case).
Reviewers: rengolin
Differential Revision: http://reviews.llvm.org/D15950
llvm-svn: 257473
|
| |
|
|
| |
llvm-svn: 257472
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(64 to 128-bit) matches against the pattern fragment 'vzmovl_v2i64'
(a zero-extended 64-bit load).
However, a change in r248784 teaches the instruction combiner that only
the lower 64 bits of the input to a 128-bit vcvtph2ps are used. This means
the instruction combiner will ordinarily optimize away the upper 64-bit
insertelement instruction in the zero-extension and so we no longer select
the memory-register form. To fix this a new pattern has been added.
Differential Revision: http://reviews.llvm.org/D16067
llvm-svn: 257470
|
| |
|
|
|
|
|
|
|
| |
This means that the DEBUG_TYPE cannot take a comma anymore. All existing passes
conform to this rule.
Differential Revision: http://reviews.llvm.org/D15645
llvm-svn: 257466
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D16042
llvm-svn: 257463
|
| |
|
|
|
|
|
| |
This is pure code motion - break the actual work out of runOnLoop into
a reusable standalone function.
llvm-svn: 257445
|
| |
|
|
|
|
|
| |
This is using an extremely simple temporary made-up binary format, not the
official binary format (which isn't defined yet).
llvm-svn: 257440
|
| |
|
|
| |
llvm-svn: 257439
|
| |
|
|
| |
llvm-svn: 257438
|
| |
|
|
|
|
| |
dictionary entries
llvm-svn: 257435
|
| |
|
|
|
|
| |
like (a eq a) or (a neq a)
llvm-svn: 257434
|
| |
|
|
| |
llvm-svn: 257433
|
| |
|
|
|
|
|
| |
This is the same change on x86-64 as r255821 on AArch64.
rdar://9001553
llvm-svn: 257428
|
| |
|
|
| |
llvm-svn: 257427
|
| |
|
|
|
|
|
|
|
|
| |
The layering of where the various loop unroll parameters are
initialized and overridden here was very confusing, making it pretty
difficult to tell just how the various sources interacted. Instead, we
put all of the initialization logic together in a single function so
that it's obvious what overrides what.
llvm-svn: 257426
|
| |
|
|
|
|
|
| |
This is the same change on ARM as r255821 on AArch64.
rdar://9001553
llvm-svn: 257424
|
| |
|
|
|
|
| |
the result of the computations. With that, don't do any mutations if memcmp/etc returned 0
llvm-svn: 257423
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Function::copyAttributesFrom will copy the personality function, prefix
data and prolog data from the source function to the new function, and
is invoked when the IRMover copies the function prototype. This puts a
reference to a constant in the source module on a function in the dest
module, which causes an error when deleting the source module after
importing, since the personality function in the source module still has
uses (this would presumably also be an issue for the prologue and prefix
data). Remove the copies added to the dest copy when creating the new
prototype, as they are mapped properly when/if we link the function body.
llvm-svn: 257420
|
| |
|
|
|
|
| |
rdar://9001553
llvm-svn: 257417
|
| |
|
|
|
|
|
|
| |
Currently WebAssembly has two kinds of relocations; data addresses and
function addresses. This adds ELF relocations for them, as well as an
MC symbol kind to indicate which type of relocation is needed.
llvm-svn: 257416
|
| |
|
|
|
|
|
|
|
| |
Apparently the preferred version is the incredibly complicated
VerifyVersionInfoW function.
Rename the function to avoid potential future name clashes.
llvm-svn: 257415
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also, add tests to verify that we're checking 'fast' on both calls of each transform pair,
tighten the CHECK lines, and give the tests more meaningful names.
This is a continuation of:
http://reviews.llvm.org/rL255555
http://reviews.llvm.org/rL256871
http://reviews.llvm.org/rL256964
http://reviews.llvm.org/rL257400
http://reviews.llvm.org/rL257404
llvm-svn: 257414
|
| |
|
|
|
|
|
| |
There is no reason the value being printed has to be positive.
Fixes pr25802.
llvm-svn: 257412
|
| |
|
|
|
|
|
| |
Fix the FIXME added with:
http://reviews.llvm.org/rL257400
llvm-svn: 257404
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Currently we're unrolling loops more in minsize than in optsize, which
means -Oz will have a larger code size than -Os. That doesn't make any
sense.
This resolves the FIXME about this in LoopUnrollPass and extends the
optsize test to make sure we use the smaller threshold for minsize as
well.
llvm-svn: 257402
|
| |
|
|
| |
llvm-svn: 257401
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
calls
This is a continuation of adding FMF to call instructions:
http://reviews.llvm.org/rL255555
The intent of the patch is to preserve the current behavior of the transform except
that we use the sqrt instruction's 'fast' attribute as a trigger rather than the
function-level attribute.
But this raises a bug noted by the new FIXME comment.
In order to do this transform:
sqrt((x * x) * y) ---> fabs(x) * sqrt(y)
...we need all of the sqrt, the first fmul, and the second fmul to be 'fast'.
If any of those ops is strict, we should bail out.
Differential Revision: http://reviews.llvm.org/D15937
llvm-svn: 257400
|
| |
|
|
| |
llvm-svn: 257399
|
| |
|
|
| |
llvm-svn: 257396
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Always expect tglobaladdr and texternalsym to be wrapped in
WebAssemblywrapper nodes. Also, split out a regPlusGA from regPlusImm so
that it can special-case global addresses, as they can be folded in more
cases.
Unfortunately this doesn't enable any new optimizations yet due to
SelectionDAG limitations. I'll be submitting changes to the SelectionDAG
infrastructure, along with tests, in a separate patch.
llvm-svn: 257394
|
| |
|
|
|
|
|
| |
The old lowering for uint_to_fp failed opencl conformance.
It might be OK for fast math mode, but I'm not sure.
llvm-svn: 257393
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Address review feedback from r255909.
Move body of resolveCycles(bool AllowTemps) to
resolveRecursivelyImpl(bool AllowTemps). Revert resolveCycles back
to asserting on temps, and add new resolveNonTemporaries interface
to invoke the new implementation with AllowTemps=true. Document
the differences between these interfaces, specifically the effect
on RAUW support and uniquing. Call appropriate interface from
ValueMapper.
llvm-svn: 257389
|
| |
|
|
|
|
| |
It might be better to let this be a select failure instead.
llvm-svn: 257386
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r254363.
load64BitDebugHelp() has the side effect of loading dbghelp and setting
globals. It should be called in no-asserts builds as well as debug
builds.
llvm_unreachable is also not appropriate here, since we actually want to
return if dbghelp couldn't be loaded in a non-asserts build.
llvm-svn: 257384
|
| |
|
|
|
|
|
|
| |
This removes ifdefs and fixes the build for users of the Win8.0 SDK,
which I happen to be. Upgrading is not hard, but executing the same code
everywhere seems better.
llvm-svn: 257379
|