stabilize s390x vector registers

This commit is contained in:
Folkert de Vries
2026-03-21 17:42:19 +01:00
parent bfc05d6b07
commit e182fef7ad
10 changed files with 126 additions and 673 deletions
+1 -1
View File
@@ -623,7 +623,7 @@ pub fn supported_types(
Self::Hexagon(r) => r.supported_types(arch),
Self::LoongArch(r) => r.supported_types(arch),
Self::Mips(r) => r.supported_types(arch),
Self::S390x(r) => r.supported_types(arch, allow_experimental_reg),
Self::S390x(r) => r.supported_types(arch),
Self::Sparc(r) => r.supported_types(arch),
Self::SpirV(r) => r.supported_types(arch),
Self::Wasm(r) => r.supported_types(arch),
+4 -12
View File
@@ -38,22 +38,14 @@ pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
pub fn supported_types(
self,
_arch: InlineAsmArch,
allow_experimental_reg: bool,
) -> &'static [(InlineAsmType, Option<Symbol>)] {
match self {
Self::reg | Self::reg_addr => types! { _: I8, I16, I32, I64; },
Self::freg => types! { _: F16, F32, F64; },
Self::vreg => {
if allow_experimental_reg {
// non-clobber-only vector register support is unstable.
types! {
vector: I32, F16, F32, I64, F64, I128, F128,
VecI8(16), VecI16(8), VecI32(4), VecI64(2), VecF16(8), VecF32(4), VecF64(2);
}
} else {
&[]
}
}
Self::vreg => types! {
vector: I32, F16, F32, I64, F64, I128, F128,
VecI8(16), VecI16(8), VecI32(4), VecI64(2), VecF16(8), VecF32(4), VecF64(2);
},
Self::areg => &[],
}
}
@@ -12,16 +12,11 @@ This tracks support for additional registers in architectures where inline assem
| Architecture | Register class | Registers | LLVM constraint code |
| ------------ | -------------- | --------- | -------------------- |
| s390x | `vreg` | `v[0-31]` | `v` |
> **Notes**:
> - s390x `vreg` is clobber-only in stable.
## Register class supported types
| Architecture | Register class | Target feature | Allowed types |
| ------------ | -------------- | -------------- | ------------- |
| s390x | `vreg` | `vector` | `i32`, `f32`, `i64`, `f64`, `i128`, `f128`, `i8x16`, `i16x8`, `i32x4`, `i64x2`, `f32x4`, `f64x2` |
| x86 | `xmm_reg` | `sse` | `i128` |
| x86 | `ymm_reg` | `avx` | `i128` |
| x86 | `zmm_reg` | `avx512f` | `i128` |
@@ -40,4 +35,3 @@ This tracks support for additional registers in architectures where inline assem
| Architecture | Register class | Modifier | Example output | LLVM modifier |
| ------------ | -------------- | -------- | -------------- | ------------- |
| s390x | `vreg` | None | `%v0` | None |
+10 -21
View File
@@ -8,7 +8,6 @@
//@ compile-flags: -Zmerge-functions=disabled
#![feature(no_core, repr_simd, f16, f128)]
#![cfg_attr(s390x_vector, feature(asm_experimental_reg))]
#![crate_type = "rlib"]
#![no_core]
#![allow(asm_sub_register, non_camel_case_types)]
@@ -19,27 +18,17 @@
type ptr = *const i32;
#[repr(simd)]
pub struct i8x16([i8; 16]);
#[repr(simd)]
pub struct i16x8([i16; 8]);
#[repr(simd)]
pub struct i32x4([i32; 4]);
#[repr(simd)]
pub struct i64x2([i64; 2]);
#[repr(simd)]
pub struct f16x8([f16; 8]);
#[repr(simd)]
pub struct f32x4([f32; 4]);
#[repr(simd)]
pub struct f64x2([f64; 2]);
pub struct Simd<T, const N: usize>([T; N]);
impl Copy for i8x16 {}
impl Copy for i16x8 {}
impl Copy for i32x4 {}
impl Copy for i64x2 {}
impl Copy for f16x8 {}
impl Copy for f32x4 {}
impl Copy for f64x2 {}
impl<T: Copy, const N: usize> Copy for Simd<T, N> {}
type i8x16 = Simd<i8, 16>;
type i16x8 = Simd<i16, 8>;
type i32x4 = Simd<i32, 4>;
type i64x2 = Simd<i64, 2>;
type f16x8 = Simd<f16, 8>;
type f32x4 = Simd<f32, 4>;
type f64x2 = Simd<f64, 2>;
extern "C" {
fn extern_func();
+1 -23
View File
@@ -1,16 +1,13 @@
//@ add-minicore
//@ revisions: s390x s390x_vector s390x_vector_stable
//@ revisions: s390x s390x_vector
//@[s390x] compile-flags: --target s390x-unknown-linux-gnu -C target-feature=-vector
//@[s390x] needs-llvm-components: systemz
//@[s390x_vector] compile-flags: --target s390x-unknown-linux-gnu -C target-feature=+vector
//@[s390x_vector] needs-llvm-components: systemz
//@[s390x_vector_stable] compile-flags: --target s390x-unknown-linux-gnu -C target-feature=+vector
//@[s390x_vector_stable] needs-llvm-components: systemz
//@ ignore-backends: gcc
#![crate_type = "rlib"]
#![feature(no_core, repr_simd)]
#![cfg_attr(not(s390x_vector_stable), feature(asm_experimental_reg))]
#![no_core]
#![allow(non_camel_case_types)]
@@ -73,46 +70,27 @@ fn f() {
asm!("", out("v0") _); // always ok
asm!("", in("v0") v); // requires vector & asm_experimental_reg
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector_stable]~^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
//[s390x_vector_stable]~| ERROR type `i64x2` cannot be used with this register class in stable [E0658]
asm!("", out("v0") v); // requires vector & asm_experimental_reg
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector_stable]~^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
//[s390x_vector_stable]~| ERROR type `i64x2` cannot be used with this register class in stable [E0658]
asm!("", in("v0") x); // requires vector & asm_experimental_reg
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector_stable]~^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
//[s390x_vector_stable]~| ERROR type `i32` cannot be used with this register class in stable [E0658]
asm!("", out("v0") x); // requires vector & asm_experimental_reg
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector_stable]~^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
//[s390x_vector_stable]~| ERROR type `i32` cannot be used with this register class in stable [E0658]
asm!("", in("v0") b);
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector]~^^ ERROR type `u8` cannot be used with this register class
//[s390x_vector_stable]~^^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
//[s390x_vector_stable]~| ERROR type `u8` cannot be used with this register class
asm!("", out("v0") b);
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector]~^^ ERROR type `u8` cannot be used with this register class
//[s390x_vector_stable]~^^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
//[s390x_vector_stable]~| ERROR type `u8` cannot be used with this register class
asm!("/* {} */", in(vreg) v); // requires vector & asm_experimental_reg
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector_stable]~^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
//[s390x_vector_stable]~| ERROR type `i64x2` cannot be used with this register class in stable [E0658]
asm!("/* {} */", in(vreg) x); // requires vector & asm_experimental_reg
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector_stable]~^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
//[s390x_vector_stable]~| ERROR type `i32` cannot be used with this register class in stable [E0658]
asm!("/* {} */", in(vreg) b);
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector]~^^ ERROR type `u8` cannot be used with this register class
//[s390x_vector_stable]~^^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
//[s390x_vector_stable]~| ERROR type `u8` cannot be used with this register class
asm!("/* {} */", out(vreg) _); // requires vector & asm_experimental_reg
//[s390x]~^ ERROR register class `vreg` requires the `vector` target feature
//[s390x_vector_stable]~^^ ERROR register class `vreg` can only be used as a clobber in stable [E0658]
// Clobber-only registers
// areg
+54 -54
View File
@@ -1,149 +1,149 @@
error: invalid register `r11`: The frame pointer cannot be used as an operand for inline asm
--> $DIR/bad-reg.rs:31:18
--> $DIR/bad-reg.rs:28:18
|
LL | asm!("", out("r11") _);
| ^^^^^^^^^^^^
error: invalid register `r15`: The stack pointer cannot be used as an operand for inline asm
--> $DIR/bad-reg.rs:33:18
--> $DIR/bad-reg.rs:30:18
|
LL | asm!("", out("r15") _);
| ^^^^^^^^^^^^
error: invalid register `c0`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:35:18
--> $DIR/bad-reg.rs:32:18
|
LL | asm!("", out("c0") _);
| ^^^^^^^^^^^
error: invalid register `c1`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:37:18
--> $DIR/bad-reg.rs:34:18
|
LL | asm!("", out("c1") _);
| ^^^^^^^^^^^
error: invalid register `c2`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:39:18
--> $DIR/bad-reg.rs:36:18
|
LL | asm!("", out("c2") _);
| ^^^^^^^^^^^
error: invalid register `c3`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:41:18
--> $DIR/bad-reg.rs:38:18
|
LL | asm!("", out("c3") _);
| ^^^^^^^^^^^
error: invalid register `c4`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:43:18
--> $DIR/bad-reg.rs:40:18
|
LL | asm!("", out("c4") _);
| ^^^^^^^^^^^
error: invalid register `c5`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:45:18
--> $DIR/bad-reg.rs:42:18
|
LL | asm!("", out("c5") _);
| ^^^^^^^^^^^
error: invalid register `c6`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:47:18
--> $DIR/bad-reg.rs:44:18
|
LL | asm!("", out("c6") _);
| ^^^^^^^^^^^
error: invalid register `c7`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:49:18
--> $DIR/bad-reg.rs:46:18
|
LL | asm!("", out("c7") _);
| ^^^^^^^^^^^
error: invalid register `c8`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:51:18
--> $DIR/bad-reg.rs:48:18
|
LL | asm!("", out("c8") _);
| ^^^^^^^^^^^
error: invalid register `c9`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:53:18
--> $DIR/bad-reg.rs:50:18
|
LL | asm!("", out("c9") _);
| ^^^^^^^^^^^
error: invalid register `c10`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:55:18
--> $DIR/bad-reg.rs:52:18
|
LL | asm!("", out("c10") _);
| ^^^^^^^^^^^^
error: invalid register `c11`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:57:18
--> $DIR/bad-reg.rs:54:18
|
LL | asm!("", out("c11") _);
| ^^^^^^^^^^^^
error: invalid register `c12`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:59:18
--> $DIR/bad-reg.rs:56:18
|
LL | asm!("", out("c12") _);
| ^^^^^^^^^^^^
error: invalid register `c13`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:61:18
--> $DIR/bad-reg.rs:58:18
|
LL | asm!("", out("c13") _);
| ^^^^^^^^^^^^
error: invalid register `c14`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:63:18
--> $DIR/bad-reg.rs:60:18
|
LL | asm!("", out("c14") _);
| ^^^^^^^^^^^^
error: invalid register `c15`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:65:18
--> $DIR/bad-reg.rs:62:18
|
LL | asm!("", out("c15") _);
| ^^^^^^^^^^^^
error: invalid register `a0`: a0 and a1 are reserved for system use and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:67:18
--> $DIR/bad-reg.rs:64:18
|
LL | asm!("", out("a0") _);
| ^^^^^^^^^^^
error: invalid register `a1`: a0 and a1 are reserved for system use and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:69:18
--> $DIR/bad-reg.rs:66:18
|
LL | asm!("", out("a1") _);
| ^^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:120:18
--> $DIR/bad-reg.rs:98:18
|
LL | asm!("", in("a2") x);
| ^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:123:18
--> $DIR/bad-reg.rs:101:18
|
LL | asm!("", out("a2") x);
| ^^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:126:26
--> $DIR/bad-reg.rs:104:26
|
LL | asm!("/* {} */", in(areg) x);
| ^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:129:26
--> $DIR/bad-reg.rs:107:26
|
LL | asm!("/* {} */", out(areg) _);
| ^^^^^^^^^^^
error: register `f0` conflicts with register `v0`
--> $DIR/bad-reg.rs:134:31
--> $DIR/bad-reg.rs:112:31
|
LL | asm!("", out("v0") _, out("f0") _);
| ----------- ^^^^^^^^^^^ register `f0`
@@ -151,7 +151,7 @@ LL | asm!("", out("v0") _, out("f0") _);
| register `v0`
error: register `f1` conflicts with register `v1`
--> $DIR/bad-reg.rs:136:31
--> $DIR/bad-reg.rs:114:31
|
LL | asm!("", out("v1") _, out("f1") _);
| ----------- ^^^^^^^^^^^ register `f1`
@@ -159,7 +159,7 @@ LL | asm!("", out("v1") _, out("f1") _);
| register `v1`
error: register `f2` conflicts with register `v2`
--> $DIR/bad-reg.rs:138:31
--> $DIR/bad-reg.rs:116:31
|
LL | asm!("", out("v2") _, out("f2") _);
| ----------- ^^^^^^^^^^^ register `f2`
@@ -167,7 +167,7 @@ LL | asm!("", out("v2") _, out("f2") _);
| register `v2`
error: register `f3` conflicts with register `v3`
--> $DIR/bad-reg.rs:140:31
--> $DIR/bad-reg.rs:118:31
|
LL | asm!("", out("v3") _, out("f3") _);
| ----------- ^^^^^^^^^^^ register `f3`
@@ -175,7 +175,7 @@ LL | asm!("", out("v3") _, out("f3") _);
| register `v3`
error: register `f4` conflicts with register `v4`
--> $DIR/bad-reg.rs:142:31
--> $DIR/bad-reg.rs:120:31
|
LL | asm!("", out("v4") _, out("f4") _);
| ----------- ^^^^^^^^^^^ register `f4`
@@ -183,7 +183,7 @@ LL | asm!("", out("v4") _, out("f4") _);
| register `v4`
error: register `f5` conflicts with register `v5`
--> $DIR/bad-reg.rs:144:31
--> $DIR/bad-reg.rs:122:31
|
LL | asm!("", out("v5") _, out("f5") _);
| ----------- ^^^^^^^^^^^ register `f5`
@@ -191,7 +191,7 @@ LL | asm!("", out("v5") _, out("f5") _);
| register `v5`
error: register `f6` conflicts with register `v6`
--> $DIR/bad-reg.rs:146:31
--> $DIR/bad-reg.rs:124:31
|
LL | asm!("", out("v6") _, out("f6") _);
| ----------- ^^^^^^^^^^^ register `f6`
@@ -199,7 +199,7 @@ LL | asm!("", out("v6") _, out("f6") _);
| register `v6`
error: register `f7` conflicts with register `v7`
--> $DIR/bad-reg.rs:148:31
--> $DIR/bad-reg.rs:126:31
|
LL | asm!("", out("v7") _, out("f7") _);
| ----------- ^^^^^^^^^^^ register `f7`
@@ -207,7 +207,7 @@ LL | asm!("", out("v7") _, out("f7") _);
| register `v7`
error: register `f8` conflicts with register `v8`
--> $DIR/bad-reg.rs:150:31
--> $DIR/bad-reg.rs:128:31
|
LL | asm!("", out("v8") _, out("f8") _);
| ----------- ^^^^^^^^^^^ register `f8`
@@ -215,7 +215,7 @@ LL | asm!("", out("v8") _, out("f8") _);
| register `v8`
error: register `f9` conflicts with register `v9`
--> $DIR/bad-reg.rs:152:31
--> $DIR/bad-reg.rs:130:31
|
LL | asm!("", out("v9") _, out("f9") _);
| ----------- ^^^^^^^^^^^ register `f9`
@@ -223,7 +223,7 @@ LL | asm!("", out("v9") _, out("f9") _);
| register `v9`
error: register `f10` conflicts with register `v10`
--> $DIR/bad-reg.rs:154:32
--> $DIR/bad-reg.rs:132:32
|
LL | asm!("", out("v10") _, out("f10") _);
| ------------ ^^^^^^^^^^^^ register `f10`
@@ -231,7 +231,7 @@ LL | asm!("", out("v10") _, out("f10") _);
| register `v10`
error: register `f11` conflicts with register `v11`
--> $DIR/bad-reg.rs:156:32
--> $DIR/bad-reg.rs:134:32
|
LL | asm!("", out("v11") _, out("f11") _);
| ------------ ^^^^^^^^^^^^ register `f11`
@@ -239,7 +239,7 @@ LL | asm!("", out("v11") _, out("f11") _);
| register `v11`
error: register `f12` conflicts with register `v12`
--> $DIR/bad-reg.rs:158:32
--> $DIR/bad-reg.rs:136:32
|
LL | asm!("", out("v12") _, out("f12") _);
| ------------ ^^^^^^^^^^^^ register `f12`
@@ -247,7 +247,7 @@ LL | asm!("", out("v12") _, out("f12") _);
| register `v12`
error: register `f13` conflicts with register `v13`
--> $DIR/bad-reg.rs:160:32
--> $DIR/bad-reg.rs:138:32
|
LL | asm!("", out("v13") _, out("f13") _);
| ------------ ^^^^^^^^^^^^ register `f13`
@@ -255,7 +255,7 @@ LL | asm!("", out("v13") _, out("f13") _);
| register `v13`
error: register `f14` conflicts with register `v14`
--> $DIR/bad-reg.rs:162:32
--> $DIR/bad-reg.rs:140:32
|
LL | asm!("", out("v14") _, out("f14") _);
| ------------ ^^^^^^^^^^^^ register `f14`
@@ -263,7 +263,7 @@ LL | asm!("", out("v14") _, out("f14") _);
| register `v14`
error: register `f15` conflicts with register `v15`
--> $DIR/bad-reg.rs:164:32
--> $DIR/bad-reg.rs:142:32
|
LL | asm!("", out("v15") _, out("f15") _);
| ------------ ^^^^^^^^^^^^ register `f15`
@@ -271,73 +271,73 @@ LL | asm!("", out("v15") _, out("f15") _);
| register `v15`
error: invalid register `f16`: unknown register
--> $DIR/bad-reg.rs:167:32
--> $DIR/bad-reg.rs:145:32
|
LL | asm!("", out("v16") _, out("f16") _);
| ^^^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:74:18
--> $DIR/bad-reg.rs:71:18
|
LL | asm!("", in("v0") v); // requires vector & asm_experimental_reg
| ^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:78:18
--> $DIR/bad-reg.rs:73:18
|
LL | asm!("", out("v0") v); // requires vector & asm_experimental_reg
| ^^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:82:18
--> $DIR/bad-reg.rs:75:18
|
LL | asm!("", in("v0") x); // requires vector & asm_experimental_reg
| ^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:86:18
--> $DIR/bad-reg.rs:77:18
|
LL | asm!("", out("v0") x); // requires vector & asm_experimental_reg
| ^^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:90:18
--> $DIR/bad-reg.rs:79:18
|
LL | asm!("", in("v0") b);
| ^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:95:18
--> $DIR/bad-reg.rs:82:18
|
LL | asm!("", out("v0") b);
| ^^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:100:26
--> $DIR/bad-reg.rs:85:26
|
LL | asm!("/* {} */", in(vreg) v); // requires vector & asm_experimental_reg
| ^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:104:26
--> $DIR/bad-reg.rs:87:26
|
LL | asm!("/* {} */", in(vreg) x); // requires vector & asm_experimental_reg
| ^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:108:26
--> $DIR/bad-reg.rs:89:26
|
LL | asm!("/* {} */", in(vreg) b);
| ^^^^^^^^^^
error: register class `vreg` requires the `vector` target feature
--> $DIR/bad-reg.rs:113:26
--> $DIR/bad-reg.rs:92:26
|
LL | asm!("/* {} */", out(vreg) _); // requires vector & asm_experimental_reg
| ^^^^^^^^^^^
error: type `i32` cannot be used with this register class
--> $DIR/bad-reg.rs:120:27
--> $DIR/bad-reg.rs:98:27
|
LL | asm!("", in("a2") x);
| ^
@@ -345,7 +345,7 @@ LL | asm!("", in("a2") x);
= note: register class `areg` supports these types:
error: type `i32` cannot be used with this register class
--> $DIR/bad-reg.rs:123:28
--> $DIR/bad-reg.rs:101:28
|
LL | asm!("", out("a2") x);
| ^
@@ -353,7 +353,7 @@ LL | asm!("", out("a2") x);
= note: register class `areg` supports these types:
error: type `i32` cannot be used with this register class
--> $DIR/bad-reg.rs:126:35
--> $DIR/bad-reg.rs:104:35
|
LL | asm!("/* {} */", in(areg) x);
| ^
+47 -47
View File
@@ -1,149 +1,149 @@
error: invalid register `r11`: The frame pointer cannot be used as an operand for inline asm
--> $DIR/bad-reg.rs:31:18
--> $DIR/bad-reg.rs:28:18
|
LL | asm!("", out("r11") _);
| ^^^^^^^^^^^^
error: invalid register `r15`: The stack pointer cannot be used as an operand for inline asm
--> $DIR/bad-reg.rs:33:18
--> $DIR/bad-reg.rs:30:18
|
LL | asm!("", out("r15") _);
| ^^^^^^^^^^^^
error: invalid register `c0`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:35:18
--> $DIR/bad-reg.rs:32:18
|
LL | asm!("", out("c0") _);
| ^^^^^^^^^^^
error: invalid register `c1`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:37:18
--> $DIR/bad-reg.rs:34:18
|
LL | asm!("", out("c1") _);
| ^^^^^^^^^^^
error: invalid register `c2`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:39:18
--> $DIR/bad-reg.rs:36:18
|
LL | asm!("", out("c2") _);
| ^^^^^^^^^^^
error: invalid register `c3`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:41:18
--> $DIR/bad-reg.rs:38:18
|
LL | asm!("", out("c3") _);
| ^^^^^^^^^^^
error: invalid register `c4`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:43:18
--> $DIR/bad-reg.rs:40:18
|
LL | asm!("", out("c4") _);
| ^^^^^^^^^^^
error: invalid register `c5`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:45:18
--> $DIR/bad-reg.rs:42:18
|
LL | asm!("", out("c5") _);
| ^^^^^^^^^^^
error: invalid register `c6`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:47:18
--> $DIR/bad-reg.rs:44:18
|
LL | asm!("", out("c6") _);
| ^^^^^^^^^^^
error: invalid register `c7`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:49:18
--> $DIR/bad-reg.rs:46:18
|
LL | asm!("", out("c7") _);
| ^^^^^^^^^^^
error: invalid register `c8`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:51:18
--> $DIR/bad-reg.rs:48:18
|
LL | asm!("", out("c8") _);
| ^^^^^^^^^^^
error: invalid register `c9`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:53:18
--> $DIR/bad-reg.rs:50:18
|
LL | asm!("", out("c9") _);
| ^^^^^^^^^^^
error: invalid register `c10`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:55:18
--> $DIR/bad-reg.rs:52:18
|
LL | asm!("", out("c10") _);
| ^^^^^^^^^^^^
error: invalid register `c11`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:57:18
--> $DIR/bad-reg.rs:54:18
|
LL | asm!("", out("c11") _);
| ^^^^^^^^^^^^
error: invalid register `c12`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:59:18
--> $DIR/bad-reg.rs:56:18
|
LL | asm!("", out("c12") _);
| ^^^^^^^^^^^^
error: invalid register `c13`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:61:18
--> $DIR/bad-reg.rs:58:18
|
LL | asm!("", out("c13") _);
| ^^^^^^^^^^^^
error: invalid register `c14`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:63:18
--> $DIR/bad-reg.rs:60:18
|
LL | asm!("", out("c14") _);
| ^^^^^^^^^^^^
error: invalid register `c15`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:65:18
--> $DIR/bad-reg.rs:62:18
|
LL | asm!("", out("c15") _);
| ^^^^^^^^^^^^
error: invalid register `a0`: a0 and a1 are reserved for system use and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:67:18
--> $DIR/bad-reg.rs:64:18
|
LL | asm!("", out("a0") _);
| ^^^^^^^^^^^
error: invalid register `a1`: a0 and a1 are reserved for system use and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:69:18
--> $DIR/bad-reg.rs:66:18
|
LL | asm!("", out("a1") _);
| ^^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:120:18
--> $DIR/bad-reg.rs:98:18
|
LL | asm!("", in("a2") x);
| ^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:123:18
--> $DIR/bad-reg.rs:101:18
|
LL | asm!("", out("a2") x);
| ^^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:126:26
--> $DIR/bad-reg.rs:104:26
|
LL | asm!("/* {} */", in(areg) x);
| ^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:129:26
--> $DIR/bad-reg.rs:107:26
|
LL | asm!("/* {} */", out(areg) _);
| ^^^^^^^^^^^
error: register `f0` conflicts with register `v0`
--> $DIR/bad-reg.rs:134:31
--> $DIR/bad-reg.rs:112:31
|
LL | asm!("", out("v0") _, out("f0") _);
| ----------- ^^^^^^^^^^^ register `f0`
@@ -151,7 +151,7 @@ LL | asm!("", out("v0") _, out("f0") _);
| register `v0`
error: register `f1` conflicts with register `v1`
--> $DIR/bad-reg.rs:136:31
--> $DIR/bad-reg.rs:114:31
|
LL | asm!("", out("v1") _, out("f1") _);
| ----------- ^^^^^^^^^^^ register `f1`
@@ -159,7 +159,7 @@ LL | asm!("", out("v1") _, out("f1") _);
| register `v1`
error: register `f2` conflicts with register `v2`
--> $DIR/bad-reg.rs:138:31
--> $DIR/bad-reg.rs:116:31
|
LL | asm!("", out("v2") _, out("f2") _);
| ----------- ^^^^^^^^^^^ register `f2`
@@ -167,7 +167,7 @@ LL | asm!("", out("v2") _, out("f2") _);
| register `v2`
error: register `f3` conflicts with register `v3`
--> $DIR/bad-reg.rs:140:31
--> $DIR/bad-reg.rs:118:31
|
LL | asm!("", out("v3") _, out("f3") _);
| ----------- ^^^^^^^^^^^ register `f3`
@@ -175,7 +175,7 @@ LL | asm!("", out("v3") _, out("f3") _);
| register `v3`
error: register `f4` conflicts with register `v4`
--> $DIR/bad-reg.rs:142:31
--> $DIR/bad-reg.rs:120:31
|
LL | asm!("", out("v4") _, out("f4") _);
| ----------- ^^^^^^^^^^^ register `f4`
@@ -183,7 +183,7 @@ LL | asm!("", out("v4") _, out("f4") _);
| register `v4`
error: register `f5` conflicts with register `v5`
--> $DIR/bad-reg.rs:144:31
--> $DIR/bad-reg.rs:122:31
|
LL | asm!("", out("v5") _, out("f5") _);
| ----------- ^^^^^^^^^^^ register `f5`
@@ -191,7 +191,7 @@ LL | asm!("", out("v5") _, out("f5") _);
| register `v5`
error: register `f6` conflicts with register `v6`
--> $DIR/bad-reg.rs:146:31
--> $DIR/bad-reg.rs:124:31
|
LL | asm!("", out("v6") _, out("f6") _);
| ----------- ^^^^^^^^^^^ register `f6`
@@ -199,7 +199,7 @@ LL | asm!("", out("v6") _, out("f6") _);
| register `v6`
error: register `f7` conflicts with register `v7`
--> $DIR/bad-reg.rs:148:31
--> $DIR/bad-reg.rs:126:31
|
LL | asm!("", out("v7") _, out("f7") _);
| ----------- ^^^^^^^^^^^ register `f7`
@@ -207,7 +207,7 @@ LL | asm!("", out("v7") _, out("f7") _);
| register `v7`
error: register `f8` conflicts with register `v8`
--> $DIR/bad-reg.rs:150:31
--> $DIR/bad-reg.rs:128:31
|
LL | asm!("", out("v8") _, out("f8") _);
| ----------- ^^^^^^^^^^^ register `f8`
@@ -215,7 +215,7 @@ LL | asm!("", out("v8") _, out("f8") _);
| register `v8`
error: register `f9` conflicts with register `v9`
--> $DIR/bad-reg.rs:152:31
--> $DIR/bad-reg.rs:130:31
|
LL | asm!("", out("v9") _, out("f9") _);
| ----------- ^^^^^^^^^^^ register `f9`
@@ -223,7 +223,7 @@ LL | asm!("", out("v9") _, out("f9") _);
| register `v9`
error: register `f10` conflicts with register `v10`
--> $DIR/bad-reg.rs:154:32
--> $DIR/bad-reg.rs:132:32
|
LL | asm!("", out("v10") _, out("f10") _);
| ------------ ^^^^^^^^^^^^ register `f10`
@@ -231,7 +231,7 @@ LL | asm!("", out("v10") _, out("f10") _);
| register `v10`
error: register `f11` conflicts with register `v11`
--> $DIR/bad-reg.rs:156:32
--> $DIR/bad-reg.rs:134:32
|
LL | asm!("", out("v11") _, out("f11") _);
| ------------ ^^^^^^^^^^^^ register `f11`
@@ -239,7 +239,7 @@ LL | asm!("", out("v11") _, out("f11") _);
| register `v11`
error: register `f12` conflicts with register `v12`
--> $DIR/bad-reg.rs:158:32
--> $DIR/bad-reg.rs:136:32
|
LL | asm!("", out("v12") _, out("f12") _);
| ------------ ^^^^^^^^^^^^ register `f12`
@@ -247,7 +247,7 @@ LL | asm!("", out("v12") _, out("f12") _);
| register `v12`
error: register `f13` conflicts with register `v13`
--> $DIR/bad-reg.rs:160:32
--> $DIR/bad-reg.rs:138:32
|
LL | asm!("", out("v13") _, out("f13") _);
| ------------ ^^^^^^^^^^^^ register `f13`
@@ -255,7 +255,7 @@ LL | asm!("", out("v13") _, out("f13") _);
| register `v13`
error: register `f14` conflicts with register `v14`
--> $DIR/bad-reg.rs:162:32
--> $DIR/bad-reg.rs:140:32
|
LL | asm!("", out("v14") _, out("f14") _);
| ------------ ^^^^^^^^^^^^ register `f14`
@@ -263,7 +263,7 @@ LL | asm!("", out("v14") _, out("f14") _);
| register `v14`
error: register `f15` conflicts with register `v15`
--> $DIR/bad-reg.rs:164:32
--> $DIR/bad-reg.rs:142:32
|
LL | asm!("", out("v15") _, out("f15") _);
| ------------ ^^^^^^^^^^^^ register `f15`
@@ -271,13 +271,13 @@ LL | asm!("", out("v15") _, out("f15") _);
| register `v15`
error: invalid register `f16`: unknown register
--> $DIR/bad-reg.rs:167:32
--> $DIR/bad-reg.rs:145:32
|
LL | asm!("", out("v16") _, out("f16") _);
| ^^^^^^^^^^^^
error: type `u8` cannot be used with this register class
--> $DIR/bad-reg.rs:90:27
--> $DIR/bad-reg.rs:79:27
|
LL | asm!("", in("v0") b);
| ^
@@ -285,7 +285,7 @@ LL | asm!("", in("v0") b);
= note: register class `vreg` supports these types: i32, f16, f32, i64, f64, i128, f128, i8x16, i16x8, i32x4, i64x2, f16x8, f32x4, f64x2
error: type `u8` cannot be used with this register class
--> $DIR/bad-reg.rs:95:28
--> $DIR/bad-reg.rs:82:28
|
LL | asm!("", out("v0") b);
| ^
@@ -293,7 +293,7 @@ LL | asm!("", out("v0") b);
= note: register class `vreg` supports these types: i32, f16, f32, i64, f64, i128, f128, i8x16, i16x8, i32x4, i64x2, f16x8, f32x4, f64x2
error: type `u8` cannot be used with this register class
--> $DIR/bad-reg.rs:108:35
--> $DIR/bad-reg.rs:89:35
|
LL | asm!("/* {} */", in(vreg) b);
| ^
@@ -301,7 +301,7 @@ LL | asm!("/* {} */", in(vreg) b);
= note: register class `vreg` supports these types: i32, f16, f32, i64, f64, i128, f128, i8x16, i16x8, i32x4, i64x2, f16x8, f32x4, f64x2
error: type `i32` cannot be used with this register class
--> $DIR/bad-reg.rs:120:27
--> $DIR/bad-reg.rs:98:27
|
LL | asm!("", in("a2") x);
| ^
@@ -309,7 +309,7 @@ LL | asm!("", in("a2") x);
= note: register class `areg` supports these types:
error: type `i32` cannot be used with this register class
--> $DIR/bad-reg.rs:123:28
--> $DIR/bad-reg.rs:101:28
|
LL | asm!("", out("a2") x);
| ^
@@ -317,7 +317,7 @@ LL | asm!("", out("a2") x);
= note: register class `areg` supports these types:
error: type `i32` cannot be used with this register class
--> $DIR/bad-reg.rs:126:35
--> $DIR/bad-reg.rs:104:35
|
LL | asm!("/* {} */", in(areg) x);
| ^
@@ -1,489 +0,0 @@
error: invalid register `r11`: The frame pointer cannot be used as an operand for inline asm
--> $DIR/bad-reg.rs:31:18
|
LL | asm!("", out("r11") _);
| ^^^^^^^^^^^^
error: invalid register `r15`: The stack pointer cannot be used as an operand for inline asm
--> $DIR/bad-reg.rs:33:18
|
LL | asm!("", out("r15") _);
| ^^^^^^^^^^^^
error: invalid register `c0`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:35:18
|
LL | asm!("", out("c0") _);
| ^^^^^^^^^^^
error: invalid register `c1`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:37:18
|
LL | asm!("", out("c1") _);
| ^^^^^^^^^^^
error: invalid register `c2`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:39:18
|
LL | asm!("", out("c2") _);
| ^^^^^^^^^^^
error: invalid register `c3`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:41:18
|
LL | asm!("", out("c3") _);
| ^^^^^^^^^^^
error: invalid register `c4`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:43:18
|
LL | asm!("", out("c4") _);
| ^^^^^^^^^^^
error: invalid register `c5`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:45:18
|
LL | asm!("", out("c5") _);
| ^^^^^^^^^^^
error: invalid register `c6`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:47:18
|
LL | asm!("", out("c6") _);
| ^^^^^^^^^^^
error: invalid register `c7`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:49:18
|
LL | asm!("", out("c7") _);
| ^^^^^^^^^^^
error: invalid register `c8`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:51:18
|
LL | asm!("", out("c8") _);
| ^^^^^^^^^^^
error: invalid register `c9`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:53:18
|
LL | asm!("", out("c9") _);
| ^^^^^^^^^^^
error: invalid register `c10`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:55:18
|
LL | asm!("", out("c10") _);
| ^^^^^^^^^^^^
error: invalid register `c11`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:57:18
|
LL | asm!("", out("c11") _);
| ^^^^^^^^^^^^
error: invalid register `c12`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:59:18
|
LL | asm!("", out("c12") _);
| ^^^^^^^^^^^^
error: invalid register `c13`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:61:18
|
LL | asm!("", out("c13") _);
| ^^^^^^^^^^^^
error: invalid register `c14`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:63:18
|
LL | asm!("", out("c14") _);
| ^^^^^^^^^^^^
error: invalid register `c15`: control registers are reserved by the kernel and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:65:18
|
LL | asm!("", out("c15") _);
| ^^^^^^^^^^^^
error: invalid register `a0`: a0 and a1 are reserved for system use and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:67:18
|
LL | asm!("", out("a0") _);
| ^^^^^^^^^^^
error: invalid register `a1`: a0 and a1 are reserved for system use and cannot be used as operands for inline asm
--> $DIR/bad-reg.rs:69:18
|
LL | asm!("", out("a1") _);
| ^^^^^^^^^^^
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:74:18
|
LL | asm!("", in("v0") v); // requires vector & asm_experimental_reg
| ^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:78:18
|
LL | asm!("", out("v0") v); // requires vector & asm_experimental_reg
| ^^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:82:18
|
LL | asm!("", in("v0") x); // requires vector & asm_experimental_reg
| ^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:86:18
|
LL | asm!("", out("v0") x); // requires vector & asm_experimental_reg
| ^^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:90:18
|
LL | asm!("", in("v0") b);
| ^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:95:18
|
LL | asm!("", out("v0") b);
| ^^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:100:26
|
LL | asm!("/* {} */", in(vreg) v); // requires vector & asm_experimental_reg
| ^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:104:26
|
LL | asm!("/* {} */", in(vreg) x); // requires vector & asm_experimental_reg
| ^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:108:26
|
LL | asm!("/* {} */", in(vreg) b);
| ^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/bad-reg.rs:113:26
|
LL | asm!("/* {} */", out(vreg) _); // requires vector & asm_experimental_reg
| ^^^^^^^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:120:18
|
LL | asm!("", in("a2") x);
| ^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:123:18
|
LL | asm!("", out("a2") x);
| ^^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:126:26
|
LL | asm!("/* {} */", in(areg) x);
| ^^^^^^^^^^
error: register class `areg` can only be used as a clobber, not as an input or output
--> $DIR/bad-reg.rs:129:26
|
LL | asm!("/* {} */", out(areg) _);
| ^^^^^^^^^^^
error: register `f0` conflicts with register `v0`
--> $DIR/bad-reg.rs:134:31
|
LL | asm!("", out("v0") _, out("f0") _);
| ----------- ^^^^^^^^^^^ register `f0`
| |
| register `v0`
error: register `f1` conflicts with register `v1`
--> $DIR/bad-reg.rs:136:31
|
LL | asm!("", out("v1") _, out("f1") _);
| ----------- ^^^^^^^^^^^ register `f1`
| |
| register `v1`
error: register `f2` conflicts with register `v2`
--> $DIR/bad-reg.rs:138:31
|
LL | asm!("", out("v2") _, out("f2") _);
| ----------- ^^^^^^^^^^^ register `f2`
| |
| register `v2`
error: register `f3` conflicts with register `v3`
--> $DIR/bad-reg.rs:140:31
|
LL | asm!("", out("v3") _, out("f3") _);
| ----------- ^^^^^^^^^^^ register `f3`
| |
| register `v3`
error: register `f4` conflicts with register `v4`
--> $DIR/bad-reg.rs:142:31
|
LL | asm!("", out("v4") _, out("f4") _);
| ----------- ^^^^^^^^^^^ register `f4`
| |
| register `v4`
error: register `f5` conflicts with register `v5`
--> $DIR/bad-reg.rs:144:31
|
LL | asm!("", out("v5") _, out("f5") _);
| ----------- ^^^^^^^^^^^ register `f5`
| |
| register `v5`
error: register `f6` conflicts with register `v6`
--> $DIR/bad-reg.rs:146:31
|
LL | asm!("", out("v6") _, out("f6") _);
| ----------- ^^^^^^^^^^^ register `f6`
| |
| register `v6`
error: register `f7` conflicts with register `v7`
--> $DIR/bad-reg.rs:148:31
|
LL | asm!("", out("v7") _, out("f7") _);
| ----------- ^^^^^^^^^^^ register `f7`
| |
| register `v7`
error: register `f8` conflicts with register `v8`
--> $DIR/bad-reg.rs:150:31
|
LL | asm!("", out("v8") _, out("f8") _);
| ----------- ^^^^^^^^^^^ register `f8`
| |
| register `v8`
error: register `f9` conflicts with register `v9`
--> $DIR/bad-reg.rs:152:31
|
LL | asm!("", out("v9") _, out("f9") _);
| ----------- ^^^^^^^^^^^ register `f9`
| |
| register `v9`
error: register `f10` conflicts with register `v10`
--> $DIR/bad-reg.rs:154:32
|
LL | asm!("", out("v10") _, out("f10") _);
| ------------ ^^^^^^^^^^^^ register `f10`
| |
| register `v10`
error: register `f11` conflicts with register `v11`
--> $DIR/bad-reg.rs:156:32
|
LL | asm!("", out("v11") _, out("f11") _);
| ------------ ^^^^^^^^^^^^ register `f11`
| |
| register `v11`
error: register `f12` conflicts with register `v12`
--> $DIR/bad-reg.rs:158:32
|
LL | asm!("", out("v12") _, out("f12") _);
| ------------ ^^^^^^^^^^^^ register `f12`
| |
| register `v12`
error: register `f13` conflicts with register `v13`
--> $DIR/bad-reg.rs:160:32
|
LL | asm!("", out("v13") _, out("f13") _);
| ------------ ^^^^^^^^^^^^ register `f13`
| |
| register `v13`
error: register `f14` conflicts with register `v14`
--> $DIR/bad-reg.rs:162:32
|
LL | asm!("", out("v14") _, out("f14") _);
| ------------ ^^^^^^^^^^^^ register `f14`
| |
| register `v14`
error: register `f15` conflicts with register `v15`
--> $DIR/bad-reg.rs:164:32
|
LL | asm!("", out("v15") _, out("f15") _);
| ------------ ^^^^^^^^^^^^ register `f15`
| |
| register `v15`
error: invalid register `f16`: unknown register
--> $DIR/bad-reg.rs:167:32
|
LL | asm!("", out("v16") _, out("f16") _);
| ^^^^^^^^^^^^
error[E0658]: type `i64x2` cannot be used with this register class in stable
--> $DIR/bad-reg.rs:74:27
|
LL | asm!("", in("v0") v); // requires vector & asm_experimental_reg
| ^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: type `i64x2` cannot be used with this register class in stable
--> $DIR/bad-reg.rs:78:28
|
LL | asm!("", out("v0") v); // requires vector & asm_experimental_reg
| ^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: type `i32` cannot be used with this register class in stable
--> $DIR/bad-reg.rs:82:27
|
LL | asm!("", in("v0") x); // requires vector & asm_experimental_reg
| ^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: type `i32` cannot be used with this register class in stable
--> $DIR/bad-reg.rs:86:28
|
LL | asm!("", out("v0") x); // requires vector & asm_experimental_reg
| ^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error: type `u8` cannot be used with this register class
--> $DIR/bad-reg.rs:90:27
|
LL | asm!("", in("v0") b);
| ^
|
= note: register class `vreg` supports these types:
error: type `u8` cannot be used with this register class
--> $DIR/bad-reg.rs:95:28
|
LL | asm!("", out("v0") b);
| ^
|
= note: register class `vreg` supports these types:
error[E0658]: type `i64x2` cannot be used with this register class in stable
--> $DIR/bad-reg.rs:100:35
|
LL | asm!("/* {} */", in(vreg) v); // requires vector & asm_experimental_reg
| ^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: type `i32` cannot be used with this register class in stable
--> $DIR/bad-reg.rs:104:35
|
LL | asm!("/* {} */", in(vreg) x); // requires vector & asm_experimental_reg
| ^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error: type `u8` cannot be used with this register class
--> $DIR/bad-reg.rs:108:35
|
LL | asm!("/* {} */", in(vreg) b);
| ^
|
= note: register class `vreg` supports these types:
error: type `i32` cannot be used with this register class
--> $DIR/bad-reg.rs:120:27
|
LL | asm!("", in("a2") x);
| ^
|
= note: register class `areg` supports these types:
error: type `i32` cannot be used with this register class
--> $DIR/bad-reg.rs:123:28
|
LL | asm!("", out("a2") x);
| ^
|
= note: register class `areg` supports these types:
error: type `i32` cannot be used with this register class
--> $DIR/bad-reg.rs:126:35
|
LL | asm!("/* {} */", in(areg) x);
| ^
|
= note: register class `areg` supports these types:
error: aborting due to 63 previous errors
For more information about this error, try `rustc --explain E0658`.
@@ -1,6 +1,6 @@
//@ add-minicore
//@ compile-flags: --target s390x-unknown-linux-gnu
//@ needs-llvm-components: systemz
//@ compile-flags: --target x86_64-unknown-linux-gnu
//@ needs-llvm-components: x86
//@ ignore-backends: gcc
#![feature(no_core, lang_items, rustc_attrs)]
@@ -11,7 +11,6 @@
use minicore::*;
unsafe fn main() {
asm!("", in("v0") 0);
//~^ ERROR register class `vreg` can only be used as a clobber in stable
//~| ERROR type `i32` cannot be used with this register class
asm!("{:x}", in(xmm_reg) 0u128);
//~^ ERROR type `u128` cannot be used with this register class in stable
}
@@ -1,23 +1,13 @@
error[E0658]: register class `vreg` can only be used as a clobber in stable
--> $DIR/feature-gate-asm_experimental_reg.rs:14:14
error[E0658]: type `u128` cannot be used with this register class in stable
--> $DIR/feature-gate-asm_experimental_reg.rs:14:30
|
LL | asm!("", in("v0") 0);
| ^^^^^^^^^^
LL | asm!("{:x}", in(xmm_reg) 0u128);
| ^^^^^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error[E0658]: type `i32` cannot be used with this register class in stable
--> $DIR/feature-gate-asm_experimental_reg.rs:14:23
|
LL | asm!("", in("v0") 0);
| ^
|
= note: see issue #133416 <https://github.com/rust-lang/rust/issues/133416> for more information
= help: add `#![feature(asm_experimental_reg)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error: aborting due to 2 previous errors
error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0658`.