Matthias Krüger
3f86eddf83
Rollup merge of #131664 - taiki-e:s390x-asm-vreg-inout, r=Amanieu
...
Support input/output in vector registers of s390x inline assembly (under asm_experimental_reg feature)
This extends currently clobber-only vector registers (`vreg`) support to allow passing `#[repr(simd)]` types, floats (f32/f64/f128), and integers (i32/i64/i128) as input/output.
This is unstable and gated under new `#![feature(asm_experimental_reg)]` (tracking issue: https://github.com/rust-lang/rust/issues/133416 ). If the feature is not enabled, only clober is supported as before.
| Architecture | Register class | Target feature | Allowed types |
| ------------ | -------------- | -------------- | -------------- |
| s390x | `vreg` | `vector` | `i32`, `f32`, `i64`, `f64`, `i128`, `f128`, `i8x16`, `i16x8`, `i32x4`, `i64x2`, `f32x4`, `f64x2` |
This matches the list of types that are supported by the vector registers in LLVM:
https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td#L301-L313
In addition to `core::simd` types and floats listed above, custom `#[repr(simd)]` types of the same size and type are also allowed. All allowed types other than i32/f32/i64/f64/i128, and relevant target features are currently unstable.
Currently there is no SIMD type for s390x in `core::arch`, but this is tracked in https://github.com/rust-lang/rust/issues/130869 .
cc https://github.com/rust-lang/rust/issues/130869 about vector facility support in s390x
cc https://github.com/rust-lang/rust/issues/125398 & https://github.com/rust-lang/rust/issues/116909 about f128 support in asm
`@rustbot` label +O-SystemZ +A-inline-assembly
2024-11-25 07:01:37 +01:00
..
2024-11-09 03:22:09 +09:00
2024-10-10 01:13:29 +02:00
2024-07-18 00:19:27 +00:00
2024-10-20 17:14:53 +08:00
2024-10-28 14:20:28 +11:00
2024-11-14 04:20:18 +08:00
2024-11-25 07:01:37 +01:00
2024-10-29 16:26:57 +00:00
2024-11-03 13:55:52 -08:00
2024-09-25 13:26:48 +02:00
2024-10-30 16:22:23 +00:00
2024-11-12 02:08:39 +00:00
2024-11-22 21:07:39 -05:00
2024-11-23 20:19:51 +08:00
2024-10-29 16:26:57 +00:00
2024-10-11 20:38:43 +02:00
2024-11-21 19:32:07 +01:00
2024-10-16 12:22:14 +02:00
2024-09-13 14:10:56 +03:00
2024-10-29 16:26:57 +00:00
2024-07-18 00:00:04 +00:00
2024-10-29 16:26:57 +00:00
2024-11-17 19:59:52 +08:00
2024-10-25 20:31:40 +02:00
2024-11-03 13:55:52 -08:00
2024-07-26 14:41:56 -04:00
2024-09-23 14:04:22 +02:00
2024-10-29 16:26:57 +00:00
2024-10-16 09:41:49 +02:00
2024-11-18 18:52:27 +01:00
2024-11-23 08:57:25 -07:00
2024-10-14 22:32:32 +02:00
2024-10-21 15:22:17 +01:00
2024-11-18 18:04:59 +11:00
2024-11-12 18:23:57 +08:00
2024-10-29 16:26:57 +00:00
2024-10-17 06:33:35 -07:00
2024-07-06 21:00:30 +08:00
2024-10-31 18:20:11 +08:00
2024-11-03 13:55:52 -08:00
2024-11-02 03:53:59 +00:00
2024-11-21 01:35:34 +00:00
2024-08-01 14:25:19 +02:00
2024-11-24 11:08:20 +01:00
2024-11-22 11:12:15 -08:00
2024-10-09 20:58:27 +11:00
2024-11-19 05:19:09 -08:00
2024-11-12 22:23:01 +01:00
2024-11-04 20:40:44 -08:00
2024-10-29 16:26:57 +00:00
2024-11-23 08:57:25 -07:00
2024-11-18 10:45:26 -08:00
2024-11-18 18:04:59 +11:00
2024-09-27 21:35:08 +02:00
2024-11-22 11:12:15 -08:00
2024-11-05 21:54:45 +00:00
2024-10-29 16:26:57 +00:00
2024-09-18 19:36:44 +02:00
2024-10-11 17:36:04 +02:00
2024-10-11 17:36:04 +02:00
2024-11-20 16:36:12 +00:00
2024-11-22 11:12:15 -08:00
2024-11-23 08:57:25 -07:00
2024-11-03 18:55:19 +00:00
2024-08-10 12:07:17 +02:00
2024-11-23 08:57:25 -07:00
2024-11-18 18:04:59 +11:00
2024-10-29 16:26:57 +00:00
2024-07-07 18:16:38 +02:00
2024-07-18 18:20:35 +00:00
2024-11-08 09:16:00 +01:00
2024-11-14 10:51:28 -05:00
2024-11-25 07:01:37 +01:00
2024-10-05 10:13:18 +02:00
2024-10-29 16:26:57 +00:00
2024-08-05 09:55:14 -04:00
2024-10-29 16:26:57 +00:00
2024-09-13 14:10:56 +03:00
2024-08-16 14:10:06 -04:00
2024-10-29 16:26:57 +00:00
2024-09-13 14:10:56 +03:00
2024-11-21 01:35:34 +00:00
2024-11-03 18:59:31 +00:00
2024-11-20 18:57:02 +00:00
2024-11-23 08:57:25 -07:00
2024-11-22 11:12:15 -08:00
2024-09-20 01:20:10 +03:00
2024-11-23 13:52:56 +01:00
2024-09-05 06:37:38 -04:00
2024-11-03 13:55:52 -08:00
2024-11-02 03:08:04 +00:00
2024-11-03 13:55:52 -08:00
2024-10-02 17:36:31 +08:00
2024-11-16 13:09:10 +01:00
2024-10-08 11:15:24 +08:00
2024-10-29 16:26:57 +00:00
2024-11-03 13:55:52 -08:00
2024-11-17 21:49:10 +01:00
2024-11-16 01:07:51 +01:00
2024-11-05 20:10:49 +01:00
2024-07-11 12:23:44 +10:00
2024-11-25 00:39:04 +08:00
2024-11-22 11:12:15 -08:00
2024-10-30 16:47:47 -07:00
2024-07-29 23:49:51 +00:00
2024-10-29 16:26:57 +00:00
2024-07-12 03:02:57 +00:00
2024-07-25 15:14:42 -04:00
2024-07-22 22:51:53 +00:00
2024-11-23 20:50:16 +08:00
2024-11-21 01:35:34 +00:00
2024-11-23 08:57:25 -07:00
2024-10-30 16:47:47 -07:00
2024-11-22 11:12:15 -08:00
2024-09-20 10:02:14 -07:00
2024-10-27 21:23:28 -04:00
2024-11-20 01:54:24 -05:00
2024-11-23 08:57:25 -07:00
2024-09-13 14:10:56 +03:00
2024-11-23 20:19:53 +08:00
2024-07-18 20:08:38 +00:00
2024-11-23 08:57:25 -07:00
2024-10-12 09:41:42 +08:00
2024-09-29 11:57:18 -04:00
2024-11-23 23:26:19 +00:00
2024-11-09 00:23:53 -06:00
2024-11-16 20:03:31 +00:00
2024-10-29 16:26:57 +00:00
2024-11-17 18:09:36 -08:00
2024-10-29 16:26:57 +00:00
2024-11-18 15:55:12 +11:00
2024-11-23 08:57:25 -07:00
2024-11-21 01:35:34 +00:00
2024-10-29 16:26:57 +00:00
2024-09-22 13:55:06 -04:00
2024-07-18 18:20:35 +00:00
2024-09-06 17:06:35 +03:00
2024-11-03 13:55:52 -08:00
2024-11-04 18:12:48 +01:00
2024-07-12 03:02:57 +00:00
2024-11-23 08:57:25 -07:00
2024-11-04 12:06:19 +01:00
2024-08-18 19:46:53 +02:00
2024-10-05 17:12:46 +02:00
2024-09-27 14:40:38 +01:00
2024-11-23 08:57:25 -07:00
2024-11-23 23:26:19 +00:00
2024-11-03 13:55:52 -08:00
2024-08-08 20:53:25 -04:00
2024-10-19 12:40:12 +00:00
2024-10-31 17:33:42 +08:00
2024-11-02 21:29:59 +01:00
2024-10-22 12:55:16 +00:00
2024-11-11 21:20:02 +02:00
2024-10-15 14:25:55 +02:00
2024-08-03 07:57:31 -04:00
2024-10-29 16:26:57 +00:00
2024-10-05 19:10:47 -04:00
2024-10-05 19:10:47 -04:00
2024-11-23 08:57:25 -07:00
2024-09-24 23:12:02 +02:00
2024-07-11 20:39:24 +00:00
2024-11-04 23:27:45 +01:00
2024-11-23 08:57:25 -07:00
2024-08-25 20:30:06 +08:00
2024-11-23 08:57:25 -07:00
2024-10-12 13:01:36 +02:00
2024-08-09 16:16:16 -07:00
2024-10-11 17:36:04 +02:00
2024-11-22 11:12:15 -08:00
2024-07-18 20:08:38 +00:00
2024-11-23 13:52:56 +01:00
2024-11-24 00:19:47 +00:00
2024-09-18 13:53:31 -07:00
2024-11-23 08:57:25 -07:00
2024-11-22 11:12:15 -08:00
2024-11-22 21:07:38 -05:00
2024-11-20 17:04:05 +08:00
2024-11-07 16:16:38 -08:00
2024-10-06 22:36:51 -04:00
2024-11-07 18:48:21 -08:00
2024-11-21 19:32:07 +01:00
2024-11-07 18:18:34 -08:00
2024-11-02 03:08:04 +00:00
2024-10-24 03:17:28 -04:00
2024-11-15 16:37:18 +01:00
2024-11-23 08:57:25 -07:00
2024-11-17 22:15:54 +00:00
2024-10-29 16:26:57 +00:00
2024-11-09 03:17:24 +09:00
2024-07-15 22:21:41 +00:00
2024-11-21 19:32:07 +01:00
2024-09-20 17:25:34 +00:00
2024-08-24 05:32:52 +02:00
2024-07-10 18:56:06 -04:00
2024-07-11 12:23:44 +10:00
2024-11-20 18:57:02 +00:00
2024-11-23 20:50:15 +08:00
2024-11-03 13:55:52 -08:00
2024-07-11 12:23:44 +10:00
2024-07-11 12:23:44 +10:00
2024-07-23 01:48:03 +02:00
2024-11-02 03:08:04 +00:00
2024-11-02 03:08:04 +00:00
2024-07-14 13:50:09 +09:00
2024-11-03 13:55:52 -08:00
2024-07-23 01:26:25 +02:00
2024-08-28 22:55:57 +09:00
2024-11-23 13:52:56 +01:00
2024-07-15 22:05:45 +02:00
2024-11-07 20:56:36 +00:00
2024-07-11 20:39:24 +00:00
2024-09-22 13:55:06 -04:00
2024-07-22 22:51:53 +00:00
2024-07-29 23:49:51 +00:00
2024-11-23 08:57:25 -07:00
2024-10-29 16:26:57 +00:00
2024-07-26 14:41:56 -04:00
2024-11-22 11:12:15 -08:00
2024-07-29 23:49:51 +00:00
2024-11-22 11:12:15 -08:00
2024-10-29 16:26:57 +00:00
2024-10-29 16:26:57 +00:00
2024-10-14 14:40:11 -04:00
2024-10-15 14:58:54 -04:00
2024-07-18 00:00:04 +00:00
2024-11-10 07:45:14 -08:00
2024-11-21 01:35:34 +00:00
2024-11-02 03:08:04 +00:00
2024-07-26 14:41:56 -04:00
2024-07-26 14:41:56 -04:00
2024-07-22 22:51:53 +00:00
2024-07-11 12:23:44 +10:00
2024-08-22 09:36:14 -07:00
2024-08-22 09:36:14 -07:00
2024-11-02 14:40:37 -07:00
2024-11-18 08:07:46 +01:00
2024-11-03 13:55:52 -08:00
2024-10-28 14:20:28 +11:00
2024-10-28 14:20:28 +11:00
2024-10-15 13:11:00 +02:00
2024-10-15 13:11:00 +02:00
2024-11-02 03:08:04 +00:00
2024-09-13 14:10:56 +03:00
2024-07-25 20:53:33 +03:00
2024-07-06 21:00:30 +08:00
2024-07-06 21:00:30 +08:00
2024-10-29 16:26:57 +00:00
2024-10-29 16:26:57 +00:00
2024-10-29 16:26:57 +00:00
2024-11-06 20:02:42 +01:00
2024-11-06 20:02:42 +01:00
2024-11-13 20:29:40 -08:00
2024-07-14 13:50:09 +09:00
2024-08-03 20:09:42 -04:00
2024-09-21 13:04:14 +02:00
2024-07-22 22:51:53 +00:00
2024-08-06 04:08:10 +00:00
2024-11-12 22:34:31 +01:00
2024-11-23 09:15:25 +01:00
2024-11-14 22:14:11 +09:00
2024-11-23 09:15:25 +01:00
2024-11-23 09:15:25 +01:00
2024-11-23 09:15:25 +01:00
2024-11-24 09:54:04 +01:00
2024-11-24 09:54:04 +01:00
2024-11-12 22:34:31 +01:00
2024-11-23 09:15:25 +01:00
2024-07-12 21:16:09 -04:00
2024-10-28 14:20:28 +11:00
2024-10-28 14:20:28 +11:00
2024-07-11 12:23:44 +10:00
2024-11-21 19:32:07 +01:00
2024-11-21 19:32:07 +01:00
2024-11-21 19:32:07 +01:00
2024-11-21 19:32:07 +01:00
2024-11-21 19:32:07 +01:00
2024-11-21 19:32:07 +01:00
2024-07-05 00:52:01 +00:00
2024-10-30 16:47:47 -07:00