Index: llvm/trunk/docs/LangRef.rst =================================================================== --- llvm/trunk/docs/LangRef.rst +++ llvm/trunk/docs/LangRef.rst @@ -5313,7 +5313,8 @@ '``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 @@ ; 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 @@ 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: Index: llvm/trunk/include/llvm/IR/Intrinsics.td =================================================================== --- llvm/trunk/include/llvm/IR/Intrinsics.td +++ llvm/trunk/include/llvm/IR/Intrinsics.td @@ -717,6 +717,8 @@ // 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]>;