Mark invariant.group as experimental

Differential Revision: https://reviews.llvm.org/D33235

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@329531 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Piotr Padlewski 2018-04-08 13:53:04 +00:00
parent c2cdd67e91
commit 9b484d4e23
2 changed files with 8 additions and 2 deletions

View File

@ -5313,7 +5313,8 @@ Irreducible loop header weights are typically based on profile data.
'``invariant.group``' Metadata
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``invariant.group`` metadata may be attached to ``load``/``store`` instructions.
The experimental ``invariant.group`` metadata may be attached to
``load``/``store`` instructions.
The existence of the ``invariant.group`` metadata on the instruction tells
the optimizer that every ``load`` and ``store`` to the same pointer operand
within the same invariant group can be assumed to load or store the same
@ -5363,6 +5364,8 @@ to the SSA value of the pointer operand.
; if %x mustalias %y then we can replace the above instruction with
%v = load i8, i8* %y
Note that this is an experimental feature, which means that its semantics might
change in the future.
'``type``' Metadata
^^^^^^^^^^^^^^^^^^^
@ -12923,7 +12926,8 @@ Overview:
The '``llvm.invariant.group.barrier``' intrinsic can be used when an invariant
established by invariant.group metadata no longer holds, to obtain a new pointer
value that does not carry the invariant information.
value that does not carry the invariant information. It is an experimental
intrinsic, which means that its semantics might change in the future.
Arguments:

View File

@ -717,6 +717,8 @@ def int_invariant_end : Intrinsic<[],
// which is valid.
// The argument also can't be marked with 'returned' attribute, because
// it would remove barrier.
// Note that it is still experimental, which means that its semantics
// might change in the future.
def int_invariant_group_barrier : Intrinsic<[llvm_anyptr_ty],
[LLVMMatchType<0>],
[IntrReadMem, IntrArgMemOnly]>;