| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
This was considered a good practice but it was not documented. Now it is.
Differential Revision: http://reviews.llvm.org/D14733
llvm-svn: 253281
|
|
|
|
| |
llvm-svn: 253167
|
|
|
|
| |
llvm-svn: 253082
|
|
|
|
| |
llvm-svn: 253045
|
|
|
|
| |
llvm-svn: 253006
|
|
|
|
|
|
|
|
|
|
| |
Several backends have instructions to reverse the order of bits in an integer. Conceptually matching such patterns is similar to @llvm.bswap, and it was mentioned in http://reviews.llvm.org/D14234 that it would be best if these patterns were matched in InstCombine instead of reimplemented in every different target.
This patch introduces an intrinsic @llvm.bitreverse.i* that operates similarly to @llvm.bswap. For plumbing purposes there is also a new ISD node ISD::BITREVERSE, with simple expansion and promotion support.
The intention is that InstCombine's BSWAP detection logic will be extended to support BITREVERSE too, and @llvm.bitreverse intrinsics emitted (if the backend supports lowering it efficiently).
llvm-svn: 252878
|
|
|
|
| |
llvm-svn: 252812
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When working with tokens, it is often the case that one has instructions
which consume a token and produce a new token. Currently, we have no
mechanism to represent an initial token state.
Instead, we can create a notional "empty token" by inventing a new
constant which captures the semantics we would like. This new constant
is called ConstantTokenNone and is written textually as "token none".
Differential Revision: http://reviews.llvm.org/D14581
llvm-svn: 252811
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change introduces the notion of "deoptimization" operand bundles.
LLVM can recognize and optimize these in more precise ways than it can a
generic "unknown" operand bundles.
The current form of this special recognition / optimization is an enum
entry in LLVMContext, a LangRef blurb and a verifier rule. Over time we
will teach LLVM to do more aggressive optimization around deoptimization
operand bundles, exploiting known facts about kinds of state
deoptimization operand bundles are allowed to track.
Reviewers: reames, majnemer, chandlerc, dexonsmith
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14551
llvm-svn: 252806
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D13671
llvm-svn: 252798
|
|
|
|
| |
llvm-svn: 252770
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D13671
llvm-svn: 252760
|
|
|
|
| |
llvm-svn: 252705
|
|
|
|
| |
llvm-svn: 252704
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch adds documentation on compiling CUDA with LLVM as requested by many
engineers and researchers. It includes not only user guides but also some
internals (mostly optimizations) so that early adopters can start hacking and
contributing.
Quite a few researchers who contacted us haven't used LLVM before, which is
unsurprising as it hasn't been long since LLVM picked up CUDA. So I added a
short summary to help these folks get started with LLVM.
I expect this document to evolve substantially down the road. The user guides
will be much simplified after the Clang integration is done. However, the
internals should continue growing to include for example performance debugging
and key areas to improve.
Reviewers: chandlerc, meheff, broune, tra
Subscribers: silvas, jingyue, llvm-commits, eliben
Differential Revision: http://reviews.llvm.org/D14370
llvm-svn: 252660
|
|
|
|
|
|
|
|
| |
As per the very positive feedback from llvm-dev (http://lists.llvm.org/pipermail/llvm-dev/2015-November/092150.html), this commit officially deprecates the LLVM autoconf-based build system.
Anyone still using it should switch to CMake.
llvm-svn: 252520
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"GCC requires the freestanding environment provide memcpy, memmove, memset
and memcmp": https://gcc.gnu.org/onlinedocs/gcc-5.2.0/gcc/Standards.html
Hence in GNUEABI targets LLVM should not convert 'memops' to their equivalent
'__aeabi_memops'. This convertion violates GCC contract.
The -meabi flag controls whether or not LLVM will modify 'memops' in GNUEABI
targets.
Without -meabi: use the triple default EABI.
With -meabi=default: use the triple default EABI.
With -meabi=gnu: use 'memops'.
With -meabi=4 or -meabi=5: use '__aeabi_memops'.
With -meabi set to an unknown value: same as -meabi=default.
Patch by Vinicius Tinti.
llvm-svn: 252462
|
|
|
|
|
|
|
|
|
|
|
|
| |
This marker prevents optimization passes from adding 'tail' or
'musttail' markers to a call. Is is used to prevent tail call
optimization from being performed on the call.
rdar://problem/22667622
Differential Revision: http://reviews.llvm.org/D12923
llvm-svn: 252368
|
|
|
|
| |
llvm-svn: 252329
|
|
|
|
|
|
| |
This attribute allows the compiler to assume that the function never recurses into itself, either directly or indirectly (transitively). This can be used among other things to demote global variables to locals.
llvm-svn: 252282
|
|
|
|
| |
llvm-svn: 252268
|
|
|
|
| |
llvm-svn: 252257
|
|
|
|
| |
llvm-svn: 252226
|
|
|
|
|
|
|
| |
Windows has two different mangling specifiers. `x` is used on x86 for the `_`
UserLabelPrefix. Others use `w` for the no UserLabelPrefix.
llvm-svn: 251260
|
|
|
|
| |
llvm-svn: 251168
|
|
|
|
| |
llvm-svn: 251127
|
|
|
|
|
|
|
| |
I accidentally messed this up after a merge conflict in a previous
commit.
llvm-svn: 251089
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This makes attribute accessors on `CallInst` and `InvokeInst` do the
(conservatively) right thing. This essentially involves, in some
cases, *not* falling back querying the attributes on the called
`llvm::Function` when operand bundles are present.
Attributes locally present on the `CallInst` or `InvokeInst` will still
override operand bundle semantics. The LangRef has been amended to
reflect this. Note: this change does not do anything prevent
`-function-attrs` from inferring `CallSite` local attributes after
inspecting the called function -- that will be done as a separate
change.
I've used `-adce` and `-early-cse` to test these changes. There is
nothing special about these passes (and they did not require any
changes) except that they seemed be the easiest way to write the tests.
This change does not add deal with `argmemonly`. That's a later change
because alias analysis requires a related fix before `argmemonly` can be
tested.
Reviewers: reames, chandlerc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D13961
llvm-svn: 250973
|
|
|
|
| |
llvm-svn: 250968
|
|
|
|
|
|
| |
typeless pointer work
llvm-svn: 250967
|
|
|
|
| |
llvm-svn: 250451
|
|
|
|
|
|
|
|
| |
The DEBUG() macro has required that a DEBUG_TYPE be set since r206822.
Update the programmers manual to reflect that, and also update the
wording to point out that DEBUG_TYPE should be defined after #includes.
llvm-svn: 250436
|
|
|
|
| |
llvm-svn: 250314
|
|
|
|
|
|
|
|
|
|
| |
error out if it is specified when not using clang.
Also updated the CMake docs.
Based on post-commit review of r250108 from Sean Silvas.
llvm-svn: 250150
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D13518
llvm-svn: 250086
|
|
|
|
| |
llvm-svn: 250076
|
|
|
|
| |
llvm-svn: 250072
|
|
|
|
|
|
| |
Differential Revision http://reviews.llvm.org/D13518
llvm-svn: 250067
|
|
|
|
| |
llvm-svn: 249933
|
|
|
|
|
|
|
|
|
|
| |
control dependencies.
This covers the common case of operations that cannot be sunk.
Operations that cannot be hoisted should already be handled properly via
the safe-to-speculate rules and mechanisms.
llvm-svn: 249865
|
|
|
|
| |
llvm-svn: 249807
|
|
|
|
| |
llvm-svn: 249332
|
|
|
|
|
|
| |
int instead of void. The actual return value is not *yet* used (and expected to be 0). This change is API breaking, so the fuzzers will need to be updated.
llvm-svn: 249214
|
|
|
|
| |
llvm-svn: 249181
|
|
|
|
|
|
|
|
|
|
| |
-test_single_input flag specifies a file name with test data.
Review URL: http://reviews.llvm.org/D13359
Patch by Mike Aizatsky!
llvm-svn: 249096
|
|
|
|
| |
llvm-svn: 249067
|
|
|
|
|
|
|
|
| |
Reviewed By: hfinkel
Differential Revision: http://reviews.llvm.org/D12853
llvm-svn: 248721
|
|
|
|
|
|
|
|
|
| |
The fuzzer argument parser will ignore all options starting with '--' so
operation mode options should begin with '--' and fuzzer options should begin
with '-'. Fuzzer arguments must still follow --fuzzer-args so that they escape
the parsing performed by the CommandLine library.
llvm-svn: 248671
|
|
|
|
|
|
|
| |
r248551 introduced some breakage due to incorrectly terminated
``literals`` s.
llvm-svn: 248552
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This also adds the first set of tests for operand bundles.
The optimizer has not been audited to ensure that it does the right
thing with operand bundles.
Depends on D12456.
Reviewers: reames, chandlerc, majnemer, dexonsmith, kmod, JosephTremoulet, rnk, bogner
Subscribers: maksfb, llvm-commits
Differential Revision: http://reviews.llvm.org/D12457
llvm-svn: 248551
|