Skip to content

Commit 8d1af73

Browse files
authored
Merge pull request #2215 from folkertdev/stabilize-s390x-vector-registers
stabilize s390x vector registers
2 parents 6d20724 + 41a2fc8 commit 8d1af73

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

src/inline-assembly.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,9 @@ unsafe { core::arch::asm!("/* {} */", in(reg) 5); }
318318
# }
319319
```
320320

321+
> [!NOTE]
322+
> If the value's type is smaller than the register, the value of the upper bits is platform-specific. Some targets zero out the upper bits, while others leave them untouched.
323+
321324
r[asm.operand-type.supported-operands.out]
322325
* `out(<reg>) <expr>`
323326
- `<reg>` can refer to a register class or an explicit register. The allocated register name is substituted into the asm template string.
@@ -626,7 +629,7 @@ Here is the list of currently supported register classes:
626629
| s390x | `reg` | `r[0-10]`, `r[12-14]` | `r` |
627630
| s390x | `reg_addr` | `r[1-10]`, `r[12-14]` | `a` |
628631
| s390x | `freg` | `f[0-15]` | `f` |
629-
| s390x | `vreg` | `v[0-31]` | Only clobbers |
632+
| s390x | `vreg` | `v[0-31]` | `v` |
630633
| s390x | `areg` | `a[2-15]` | Only clobbers |
631634
| PowerPC | `reg` | `r0`, `r[3-12]`, `r[14-28]` | `r` |
632635
| PowerPC | `reg_nonzero` | `r[3-12]`, `r[14-28]` | `b` |
@@ -683,7 +686,7 @@ Each register class has constraints on which value types they can be used with.
683686
| LoongArch | `freg` | `d` | `f64` |
684687
| s390x | `reg`, `reg_addr` | None | `i8`, `i16`, `i32`, `i64` |
685688
| s390x | `freg` | None | `f32`, `f64` |
686-
| s390x | `vreg` | N/A | Only clobbers |
689+
| s390x | `vreg` | `vector` | `i32`, `f32`, `i64`, `f64`, `i128`, <br> `i8x16`, `i16x8`, `i32x4`, `i64x2`, `f32x4`, `f64x2` |
687690
| s390x | `areg` | N/A | Only clobbers |
688691
| PowerPC | `spe_acc` | None | Only clobbers |
689692
| PowerPC/PowerPC64 | `reg` | None | `i8`, `i16`, `i32`, `i64` (PowerPC64 only) |
@@ -945,6 +948,7 @@ The supported modifiers are a subset of LLVM's (and GCC's) [asm template argumen
945948
| s390x | `reg` | None | `%r0` | None |
946949
| s390x | `reg_addr` | None | `%r1` | None |
947950
| s390x | `freg` | None | `%f0` | None |
951+
| s390x | `vreg` | None | `%v0` | None |
948952
| PowerPC/PowerPC64 | `reg` | None | `0` | None |
949953
| PowerPC/PowerPC64 | `reg_nonzero` | None | `3` | None |
950954
| PowerPC/PowerPC64 | `freg` | None | `0` | None |

0 commit comments

Comments
 (0)