Files
rust/tests/ui
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-10-28 14:20:28 +11:00
2024-07-18 00:00:04 +00:00
2024-11-22 11:12:15 -08:00
2024-11-22 11:12:15 -08:00
2024-11-05 21:54:45 +00:00
2024-11-22 11:12:15 -08:00
2024-08-10 12:07:17 +02:00
2024-11-03 18:59:31 +00:00
2024-11-22 11:12:15 -08:00
2024-09-20 01:20:10 +03:00
2024-09-05 06:37:38 -04:00
2024-11-17 21:49:10 +01:00
2024-11-22 11:12:15 -08:00
2024-10-30 16:47:47 -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-11-16 20:03:31 +00:00
2024-11-04 12:06:19 +01:00
2024-08-18 19:46:53 +02:00
2024-09-27 14:40:38 +01:00
2024-11-02 21:29:59 +01:00
2024-10-22 12:55:16 +00:00
2024-08-03 07:57:31 -04:00
2024-10-12 13:01:36 +02:00
2024-11-22 11:12:15 -08:00
2024-11-24 00:19:47 +00:00
2024-11-22 11:12:15 -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-11-15 16:37:18 +01:00
2024-11-17 22:15:54 +00:00
2024-11-07 20:56:36 +00:00
2024-11-22 11:12:15 -08:00
2024-11-22 11:12:15 -08:00
2024-10-28 14:20:28 +11:00
2024-10-28 14:20:28 +11:00
2024-10-30 16:47:47 -07:00

UI Tests

This folder contains rustc's UI tests.

Test Directives (Headers)

Typically, a UI test will have some test directives / headers which are special comments that tell compiletest how to build and intepret a test.

As part of an on-going effort to rewrite compiletest (see https://github.com/rust-lang/compiler-team/issues/536), a major change proposal to change legacy compiletest-style headers // <directive> to ui_test-style headers //@ <directive> was accepted (see https://github.com/rust-lang/compiler-team/issues/512.

An example directive is ignore-test. In legacy compiletest style, the header would be written as

// ignore-test

but in ui_test style, the header would be written as

//@ ignore-test

compiletest is changed to accept only //@ directives for UI tests (currently), and will reject and report an error if it encounters any comments // <content> that may be parsed as an legacy compiletest-style test header. To fix this, you should migrate to the ui_test-style header //@ <content>.