diff options
| -rw-r--r-- | llvm/docs/LangRef.rst | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index 9050f280c63..5392c9ff6cf 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -16078,3 +16078,263 @@ lowered to a call to the symbol ``__llvm_memset_element_unordered_atomic_*``. Wh is replaced with an actual element size. The optimizer is allowed to inline the memory assignment when it's profitable to do so. + +Objective-C ARC Runtime Intrinsics +---------------------------------- + +LLVM provides intrinsics that lower to Objective-C ARC runtime entry points. +LLVM is aware of the semantics of these functions, and optimizes based on that +knowledge. You can read more about the details of Objective-C ARC `here +<https://clang.llvm.org/docs/AutomaticReferenceCounting.html>`_. + +'``llvm.objc.autorelease``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.autorelease(i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_autorelease <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-autorelease>`_. + +'``llvm.objc.autoreleasePoolPop``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare void @llvm.objc.autoreleasePoolPop(i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_autoreleasePoolPop <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#void-objc-autoreleasepoolpop-void-pool>`_. + +'``llvm.objc.autoreleasePoolPush``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.autoreleasePoolPush() + +Lowering: +""""""""" + +Lowers to a call to `objc_autoreleasePoolPush <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#void-objc-autoreleasepoolpush-void>`_. + +'``llvm.objc.autoreleaseReturnValue``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.autoreleaseReturnValue(i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_autoreleaseReturnValue <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-autoreleasereturnvalue>`_. + +'``llvm.objc.copyWeak``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare void @llvm.objc.copyWeak(i8**, i8**) + +Lowering: +""""""""" + +Lowers to a call to `objc_copyWeak <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#void-objc-copyweak-id-dest-id-src>`_. + +'``llvm.objc.destroyWeak``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare void @llvm.objc.destroyWeak(i8**) + +Lowering: +""""""""" + +Lowers to a call to `objc_destroyWeak <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#void-objc-destroyweak-id-object>`_. + +'``llvm.objc.initWeak``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.initWeak(i8**, i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_initWeak <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-initweak>`_. + +'``llvm.objc.loadWeak``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.loadWeak(i8**) + +Lowering: +""""""""" + +Lowers to a call to `objc_loadWeak <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-loadweak>`_. + +'``llvm.objc.loadWeakRetained``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.loadWeakRetained(i8**) + +Lowering: +""""""""" + +Lowers to a call to `objc_loadWeakRetained <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-loadweakretained>`_. + +'``llvm.objc.moveWeak``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare void @llvm.objc.moveWeak(i8**, i8**) + +Lowering: +""""""""" + +Lowers to a call to `objc_moveWeak <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#void-objc-moveweak-id-dest-id-src>`_. + +'``llvm.objc.release``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare void @llvm.objc.release(i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_release <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#void-objc-release-id-value>`_. + +'``llvm.objc.retain``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.retain(i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_retain <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-retain>`_. + +'``llvm.objc.retainAutorelease``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.retainAutorelease(i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_retainAutorelease <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-retainautorelease>`_. + +'``llvm.objc.retainAutoreleaseReturnValue``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.retainAutoreleaseReturnValue(i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_retainAutoreleaseReturnValue <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-retainautoreleasereturnvalue>`_. + +'``llvm.objc.retainAutoreleasedReturnValue``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.retainAutoreleasedReturnValue(i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_retainAutoreleasedReturnValue <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-retainautoreleasedreturnvalue>`_. + +'``llvm.objc.retainBlock``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.retainBlock(i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_retainBlock <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-retainblock>`_. + +'``llvm.objc.storeStrong``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare void @llvm.objc.storeStrong(i8**, i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_storeStrong <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#void-objc-storestrong-id-object-id-value>`_. + +'``llvm.objc.storeWeak``' Intrinsic +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Syntax: +""""""" +:: + + declare i8* @llvm.objc.storeWeak(i8**, i8*) + +Lowering: +""""""""" + +Lowers to a call to `objc_storeWeak <https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-storeweak>`_. |

