diff options
author | Piotr Padlewski <piotr.padlewski@gmail.com> | 2018-05-03 11:03:01 +0000 |
---|---|---|
committer | Piotr Padlewski <piotr.padlewski@gmail.com> | 2018-05-03 11:03:01 +0000 |
commit | 5dde809404f73b30bb41b79f7060c0e14cfe0426 (patch) | |
tree | fecca61a8b4aadbc1d23e57be1793ac2d72c1d68 /llvm/docs | |
parent | 90b0a53499c98ec3b4903f1f4f0c7b404c236ab3 (diff) | |
download | bcm5719-llvm-5dde809404f73b30bb41b79f7060c0e14cfe0426.tar.gz bcm5719-llvm-5dde809404f73b30bb41b79f7060c0e14cfe0426.zip |
Rename invariant.group.barrier to launder.invariant.group
Summary:
This is one of the initial commit of "RFC: Devirtualization v2" proposal:
https://docs.google.com/document/d/16GVtCpzK8sIHNc2qZz6RN8amICNBtvjWUod2SujZVEo/edit?usp=sharing
Reviewers: rsmith, amharc, kuhar, sanjoy
Subscribers: arsenm, nhaehnle, javed.absar, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D45111
llvm-svn: 331448
Diffstat (limited to 'llvm/docs')
-rw-r--r-- | llvm/docs/LangRef.rst | 17 | ||||
-rw-r--r-- | llvm/docs/ReleaseNotes.rst | 2 |
2 files changed, 11 insertions, 8 deletions
diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index 963a66f0015..ba13d8e8b23 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -5318,7 +5318,7 @@ The experimental ``invariant.group`` metadata may be attached to 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 -value (but see the ``llvm.invariant.group.barrier`` intrinsic which affects +value (but see the ``llvm.launder.invariant.group`` intrinsic which affects when two pointers are considered the same). Pointers returned by bitcast or getelementptr with only zero indices are considered the same. @@ -5343,13 +5343,13 @@ Examples: store i8 %unknownValue, i8* %ptr, !invariant.group !0 ; Can assume that %unknownValue == 42 call void @foo(i8* %ptr) - %newPtr2 = call i8* @llvm.invariant.group.barrier(i8* %ptr) - %d = load i8, i8* %newPtr2, !invariant.group !0 ; Can't step through invariant.group.barrier to get value of %ptr + %newPtr2 = call i8* @llvm.launder.invariant.group(i8* %ptr) + %d = load i8, i8* %newPtr2, !invariant.group !0 ; Can't step through launder.invariant.group to get value of %ptr ... declare void @foo(i8*) declare i8* @getPointer(i8*) - declare i8* @llvm.invariant.group.barrier(i8*) + declare i8* @llvm.launder.invariant.group(i8*) !0 = !{!"magic ptr"} !1 = !{!"other ptr"} @@ -12908,7 +12908,7 @@ Semantics: This intrinsic indicates that the memory is mutable again. -'``llvm.invariant.group.barrier``' Intrinsic +'``llvm.launder.invariant.group``' Intrinsic ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Syntax: @@ -12919,12 +12919,12 @@ argument. :: - declare i8* @llvm.invariant.group.barrier.p0i8(i8* <ptr>) + declare i8* @llvm.launder.invariant.group.p0i8(i8* <ptr>) Overview: """"""""" -The '``llvm.invariant.group.barrier``' intrinsic can be used when an invariant +The '``llvm.launder.invariant.group``' 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. It is an experimental intrinsic, which means that its semantics might change in the future. @@ -12933,7 +12933,7 @@ intrinsic, which means that its semantics might change in the future. Arguments: """""""""" -The ``llvm.invariant.group.barrier`` takes only one argument, which is +The ``llvm.launder.invariant.group`` takes only one argument, which is the pointer to the memory for which the ``invariant.group`` no longer holds. Semantics: @@ -12941,6 +12941,7 @@ Semantics: Returns another pointer that aliases its argument but which is considered different for the purposes of ``load``/``store`` ``invariant.group`` metadata. +It does not read any accessible memory and the execution can be speculated. .. _constrainedfp: diff --git a/llvm/docs/ReleaseNotes.rst b/llvm/docs/ReleaseNotes.rst index be2355101c5..b8da1949643 100644 --- a/llvm/docs/ReleaseNotes.rst +++ b/llvm/docs/ReleaseNotes.rst @@ -107,6 +107,8 @@ Changes to the LLVM IR have changed. Alignment is no longer an argument, and are instead conveyed as parameter attributes. +* invariant.group.barrier has been renamed to launder.invariant.group. + Changes to the ARM Backend -------------------------- |