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
@@ -162,6 +162,7 @@ Here is the list of currently supported register classes:
162
162
| x86 |`kreg0`|`k0`| Only clobbers |
163
163
| x86 |`x87_reg`|`st([0-7])`| Only clobbers |
164
164
| x86 |`mmx_reg`|`mm[0-7]`| Only clobbers |
165
+
| x86-64 |`tmm_reg`|`tmm[0-7]`| Only clobbers |
165
166
| AArch64 |`reg`|`x[0-30]`|`r`|
166
167
| AArch64 |`vreg`|`v[0-31]`|`w`|
167
168
| AArch64 |`vreg_low16`|`v[0-15]`|`x`|
@@ -185,7 +186,7 @@ Here is the list of currently supported register classes:
185
186
>
186
187
> - On x86-64 the high byte registers (e.g. `ah`) are not available in the `reg_byte` register class.
187
188
>
188
-
> - Some register classes are marked as "Only clobbers" which means that they cannot be used for inputs or outputs, only clobbers of the form `out("reg") _` or `lateout("reg") _`.
189
+
> - Some register classes are marked as "Only clobbers" which means that registers in these classes cannot be used for inputs or outputs, only clobbers of the form `out(<explicit register>) _` or `lateout(<explicit register>) _`.
189
190
190
191
Each register class has constraints on which value types they can be used with.
191
192
This is necessary because the way a value is loaded into a register depends on its type.
@@ -204,6 +205,7 @@ The availability of supported types for a particular register class may depend o
@@ -356,7 +358,7 @@ If all references to an operand already have modifiers then the warning is suppr
356
358
## ABI clobbers
357
359
358
360
The `clobber_abi` keyword can be used to apply a default set of clobbers to an `asm!` block.
359
-
This will automatically insert the necessary clobber constraints as needed for calling a function with a particular calling convention: if the calling convention does not fully preserve the value of a register across a call then a `lateout("reg") _` is implicitly added to the operands list.
361
+
This will automatically insert the necessary clobber constraints as needed for calling a function with a particular calling convention: if the calling convention does not fully preserve the value of a register across a call then `lateout("...") _` is implicitly added to the operands list (where the `...` is replaced by the register's name).
360
362
361
363
`clobber_abi` may be specified any number of times. It will insert a clobber for all unique registers in the union of all specified calling conventions.
362
364
@@ -367,8 +369,8 @@ The following ABIs can be used with `clobber_abi`:
0 commit comments