You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/inline-assembly.md
+2
Original file line number
Diff line number
Diff line change
@@ -416,8 +416,10 @@ Currently the following options are defined:
416
416
This allows the compiler to execute the `asm!` block fewer times than specified in the program (e.g. by hoisting it out of a loop) or even eliminate it entirely if the outputs are not used.
417
417
-`nomem`: The `asm!` blocks does not read or write to any memory.
418
418
This allows the compiler to cache the values of modified global variables in registers across the `asm!` block since it knows that they are not read or written to by the `asm!`.
419
+
The compiler also assumes that this `asm!` block does not perform any kind of synchronization with other threads, e.g. via fences.
419
420
-`readonly`: The `asm!` block does not write to any memory.
420
421
This allows the compiler to cache the values of unmodified global variables in registers across the `asm!` block since it knows that they are not written to by the `asm!`.
422
+
The compiler also assumes that this `asm!` block does not perform any kind of synchronization with other threads, e.g. via fences.
421
423
-`preserves_flags`: The `asm!` block does not modify the flags register (defined in the rules below).
422
424
This allows the compiler to avoid recomputing the condition flags after the `asm!` block.
423
425
-`noreturn`: The `asm!` block never returns, and its return type is defined as `!` (never).
0 commit comments