-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of #131551 - taiki-e:ppc-asm-vreg-inout, r=Amanieu
Support input/output in vector registers of PowerPC inline assembly This extends currently clobber-only vector registers (`vreg`) support to allow passing `#[repr(simd)]` types as input/output. | Architecture | Register class | Target feature | Allowed types | | ------------ | -------------- | -------------- | -------------- | | PowerPC | `vreg` | `altivec` | `i8x16`, `i16x8`, `i32x4`, `f32x4` | | PowerPC | `vreg` | `vsx` | `f32`, `f64`, `i64x2`, `f64x2` | In addition to floats and `core::simd` types listed above, `core::arch` types and custom `#[repr(simd)]` types of the same size and type are also allowed. All allowed types and relevant target features are currently unstable. r? `@Amanieu` `@rustbot` label +O-PowerPC +A-inline-assembly
Showing
12 changed files
with
703 additions
and
352 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,264 +1,240 @@ | ||
error: invalid register `sp`: the stack pointer cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:32:18 | ||
--> $DIR/bad-reg.rs:45:18 | ||
| | ||
LL | asm!("", out("sp") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `r2`: r2 is a system reserved register and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:34:18 | ||
--> $DIR/bad-reg.rs:47:18 | ||
| | ||
LL | asm!("", out("r2") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `r29`: r29 is used internally by LLVM and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:38:18 | ||
--> $DIR/bad-reg.rs:51:18 | ||
| | ||
LL | asm!("", out("r29") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `r30`: r30 is used internally by LLVM and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:40:18 | ||
--> $DIR/bad-reg.rs:53:18 | ||
| | ||
LL | asm!("", out("r30") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `fp`: the frame pointer cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:42:18 | ||
--> $DIR/bad-reg.rs:55:18 | ||
| | ||
LL | asm!("", out("fp") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `lr`: the link register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:44:18 | ||
--> $DIR/bad-reg.rs:57:18 | ||
| | ||
LL | asm!("", out("lr") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `ctr`: the counter register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:46:18 | ||
--> $DIR/bad-reg.rs:59:18 | ||
| | ||
LL | asm!("", out("ctr") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `vrsave`: the vrsave register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:48:18 | ||
--> $DIR/bad-reg.rs:61:18 | ||
| | ||
LL | asm!("", out("vrsave") _); | ||
| ^^^^^^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:66:18 | ||
--> $DIR/bad-reg.rs:109:18 | ||
| | ||
LL | asm!("", in("cr") x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:69:18 | ||
--> $DIR/bad-reg.rs:112:18 | ||
| | ||
LL | asm!("", out("cr") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:72:26 | ||
--> $DIR/bad-reg.rs:115:26 | ||
| | ||
LL | asm!("/* {} */", in(cr) x); | ||
| ^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:75:26 | ||
--> $DIR/bad-reg.rs:118:26 | ||
| | ||
LL | asm!("/* {} */", out(cr) _); | ||
| ^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:79:18 | ||
--> $DIR/bad-reg.rs:122:18 | ||
| | ||
LL | asm!("", in("xer") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:82:18 | ||
--> $DIR/bad-reg.rs:125:18 | ||
| | ||
LL | asm!("", out("xer") x); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:85:26 | ||
--> $DIR/bad-reg.rs:128:26 | ||
| | ||
LL | asm!("/* {} */", in(xer) x); | ||
| ^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:88:26 | ||
--> $DIR/bad-reg.rs:131:26 | ||
| | ||
LL | asm!("/* {} */", out(xer) _); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:93:18 | ||
| | ||
LL | asm!("", in("v0") x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:96:18 | ||
| | ||
LL | asm!("", out("v0") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:99:26 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:102:26 | ||
| | ||
LL | asm!("/* {} */", out(vreg) _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register `cr0` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:106:31 | ||
--> $DIR/bad-reg.rs:135:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr0") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr0` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr1` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:108:31 | ||
--> $DIR/bad-reg.rs:137:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr1") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr1` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr2` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:110:31 | ||
--> $DIR/bad-reg.rs:139:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr2") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr2` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr3` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:112:31 | ||
--> $DIR/bad-reg.rs:141:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr3") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr3` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr4` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:114:31 | ||
--> $DIR/bad-reg.rs:143:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr4") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr4` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr5` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:116:31 | ||
--> $DIR/bad-reg.rs:145:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr5") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr5` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr6` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:118:31 | ||
--> $DIR/bad-reg.rs:147:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr6") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr6` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr7` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:120:31 | ||
--> $DIR/bad-reg.rs:149:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr7") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr7` | ||
| | | ||
| register `cr` | ||
|
||
error: cannot use register `r13`: r13 is a reserved register on this target | ||
--> $DIR/bad-reg.rs:36:18 | ||
--> $DIR/bad-reg.rs:49:18 | ||
| | ||
LL | asm!("", out("r13") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:66:27 | ||
--> $DIR/bad-reg.rs:76:27 | ||
| | ||
LL | asm!("", in("v0") x); // FIXME: should be ok if vsx is available | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: i8x16, i16x8, i32x4, f32x4, f32, f64, i64x2, f64x2 | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:79:28 | ||
| | ||
LL | asm!("", out("v0") x); // FIXME: should be ok if vsx is available | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: i8x16, i16x8, i32x4, f32x4, f32, f64, i64x2, f64x2 | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:87:35 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); // FIXME: should be ok if vsx is available | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: i8x16, i16x8, i32x4, f32x4, f32, f64, i64x2, f64x2 | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:109:27 | ||
| | ||
LL | asm!("", in("cr") x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:69:28 | ||
--> $DIR/bad-reg.rs:112:28 | ||
| | ||
LL | asm!("", out("cr") x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:72:33 | ||
--> $DIR/bad-reg.rs:115:33 | ||
| | ||
LL | asm!("/* {} */", in(cr) x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:79:28 | ||
--> $DIR/bad-reg.rs:122:28 | ||
| | ||
LL | asm!("", in("xer") x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:82:29 | ||
--> $DIR/bad-reg.rs:125:29 | ||
| | ||
LL | asm!("", out("xer") x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:85:34 | ||
--> $DIR/bad-reg.rs:128:34 | ||
| | ||
LL | asm!("/* {} */", in(xer) x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:93:27 | ||
| | ||
LL | asm!("", in("v0") x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:96:28 | ||
| | ||
LL | asm!("", out("v0") x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:99:35 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: aborting due to 38 previous errors | ||
error: aborting due to 34 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,264 +1,276 @@ | ||
error: invalid register `sp`: the stack pointer cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:32:18 | ||
--> $DIR/bad-reg.rs:45:18 | ||
| | ||
LL | asm!("", out("sp") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `r2`: r2 is a system reserved register and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:34:18 | ||
--> $DIR/bad-reg.rs:47:18 | ||
| | ||
LL | asm!("", out("r2") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `r29`: r29 is used internally by LLVM and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:38:18 | ||
--> $DIR/bad-reg.rs:51:18 | ||
| | ||
LL | asm!("", out("r29") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `r30`: r30 is used internally by LLVM and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:40:18 | ||
--> $DIR/bad-reg.rs:53:18 | ||
| | ||
LL | asm!("", out("r30") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `fp`: the frame pointer cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:42:18 | ||
--> $DIR/bad-reg.rs:55:18 | ||
| | ||
LL | asm!("", out("fp") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `lr`: the link register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:44:18 | ||
--> $DIR/bad-reg.rs:57:18 | ||
| | ||
LL | asm!("", out("lr") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `ctr`: the counter register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:46:18 | ||
--> $DIR/bad-reg.rs:59:18 | ||
| | ||
LL | asm!("", out("ctr") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `vrsave`: the vrsave register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:48:18 | ||
--> $DIR/bad-reg.rs:61:18 | ||
| | ||
LL | asm!("", out("vrsave") _); | ||
| ^^^^^^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:66:18 | ||
--> $DIR/bad-reg.rs:109:18 | ||
| | ||
LL | asm!("", in("cr") x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:69:18 | ||
--> $DIR/bad-reg.rs:112:18 | ||
| | ||
LL | asm!("", out("cr") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:72:26 | ||
--> $DIR/bad-reg.rs:115:26 | ||
| | ||
LL | asm!("/* {} */", in(cr) x); | ||
| ^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:75:26 | ||
--> $DIR/bad-reg.rs:118:26 | ||
| | ||
LL | asm!("/* {} */", out(cr) _); | ||
| ^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:79:18 | ||
--> $DIR/bad-reg.rs:122:18 | ||
| | ||
LL | asm!("", in("xer") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:82:18 | ||
--> $DIR/bad-reg.rs:125:18 | ||
| | ||
LL | asm!("", out("xer") x); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:85:26 | ||
--> $DIR/bad-reg.rs:128:26 | ||
| | ||
LL | asm!("/* {} */", in(xer) x); | ||
| ^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:88:26 | ||
--> $DIR/bad-reg.rs:131:26 | ||
| | ||
LL | asm!("/* {} */", out(xer) _); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:93:18 | ||
| | ||
LL | asm!("", in("v0") x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:96:18 | ||
| | ||
LL | asm!("", out("v0") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:99:26 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:102:26 | ||
| | ||
LL | asm!("/* {} */", out(vreg) _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register `cr0` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:106:31 | ||
--> $DIR/bad-reg.rs:135:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr0") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr0` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr1` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:108:31 | ||
--> $DIR/bad-reg.rs:137:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr1") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr1` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr2` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:110:31 | ||
--> $DIR/bad-reg.rs:139:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr2") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr2` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr3` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:112:31 | ||
--> $DIR/bad-reg.rs:141:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr3") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr3` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr4` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:114:31 | ||
--> $DIR/bad-reg.rs:143:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr4") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr4` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr5` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:116:31 | ||
--> $DIR/bad-reg.rs:145:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr5") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr5` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr6` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:118:31 | ||
--> $DIR/bad-reg.rs:147:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr6") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr6` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr7` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:120:31 | ||
--> $DIR/bad-reg.rs:149:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr7") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr7` | ||
| | | ||
| register `cr` | ||
|
||
error: cannot use register `r13`: r13 is a reserved register on this target | ||
--> $DIR/bad-reg.rs:36:18 | ||
--> $DIR/bad-reg.rs:49:18 | ||
| | ||
LL | asm!("", out("r13") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:66:18 | ||
| | ||
LL | asm!("", in("v0") v32x4); // requires altivec | ||
| ^^^^^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:68:18 | ||
| | ||
LL | asm!("", out("v0") v32x4); // requires altivec | ||
| ^^^^^^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:70:18 | ||
| | ||
LL | asm!("", in("v0") v64x2); // requires vsx | ||
| ^^^^^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:73:18 | ||
| | ||
LL | asm!("", out("v0") v64x2); // requires vsx | ||
| ^^^^^^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:76:18 | ||
| | ||
LL | asm!("", in("v0") x); // FIXME: should be ok if vsx is available | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:79:18 | ||
| | ||
LL | asm!("", out("v0") x); // FIXME: should be ok if vsx is available | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:82:26 | ||
| | ||
LL | asm!("/* {} */", in(vreg) v32x4); // requires altivec | ||
| ^^^^^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:84:26 | ||
| | ||
LL | asm!("/* {} */", in(vreg) v64x2); // requires vsx | ||
| ^^^^^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:87:26 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); // FIXME: should be ok if vsx is available | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` requires at least one of the following target features: altivec, vsx | ||
--> $DIR/bad-reg.rs:90:26 | ||
| | ||
LL | asm!("/* {} */", out(vreg) _); // requires altivec | ||
| ^^^^^^^^^^^ | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:66:27 | ||
--> $DIR/bad-reg.rs:109:27 | ||
| | ||
LL | asm!("", in("cr") x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:69:28 | ||
--> $DIR/bad-reg.rs:112:28 | ||
| | ||
LL | asm!("", out("cr") x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:72:33 | ||
--> $DIR/bad-reg.rs:115:33 | ||
| | ||
LL | asm!("/* {} */", in(cr) x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:79:28 | ||
--> $DIR/bad-reg.rs:122:28 | ||
| | ||
LL | asm!("", in("xer") x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:82:29 | ||
--> $DIR/bad-reg.rs:125:29 | ||
| | ||
LL | asm!("", out("xer") x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:85:34 | ||
--> $DIR/bad-reg.rs:128:34 | ||
| | ||
LL | asm!("/* {} */", in(xer) x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:93:27 | ||
| | ||
LL | asm!("", in("v0") x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:96:28 | ||
| | ||
LL | asm!("", out("v0") x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:99:35 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: aborting due to 38 previous errors | ||
error: aborting due to 41 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,264 +1,264 @@ | ||
error: invalid register `sp`: the stack pointer cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:32:18 | ||
--> $DIR/bad-reg.rs:45:18 | ||
| | ||
LL | asm!("", out("sp") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `r2`: r2 is a system reserved register and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:34:18 | ||
--> $DIR/bad-reg.rs:47:18 | ||
| | ||
LL | asm!("", out("r2") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `r29`: r29 is used internally by LLVM and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:38:18 | ||
--> $DIR/bad-reg.rs:51:18 | ||
| | ||
LL | asm!("", out("r29") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `r30`: r30 is used internally by LLVM and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:40:18 | ||
--> $DIR/bad-reg.rs:53:18 | ||
| | ||
LL | asm!("", out("r30") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `fp`: the frame pointer cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:42:18 | ||
--> $DIR/bad-reg.rs:55:18 | ||
| | ||
LL | asm!("", out("fp") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `lr`: the link register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:44:18 | ||
--> $DIR/bad-reg.rs:57:18 | ||
| | ||
LL | asm!("", out("lr") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `ctr`: the counter register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:46:18 | ||
--> $DIR/bad-reg.rs:59:18 | ||
| | ||
LL | asm!("", out("ctr") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `vrsave`: the vrsave register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:48:18 | ||
--> $DIR/bad-reg.rs:61:18 | ||
| | ||
LL | asm!("", out("vrsave") _); | ||
| ^^^^^^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:66:18 | ||
--> $DIR/bad-reg.rs:109:18 | ||
| | ||
LL | asm!("", in("cr") x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:69:18 | ||
--> $DIR/bad-reg.rs:112:18 | ||
| | ||
LL | asm!("", out("cr") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:72:26 | ||
--> $DIR/bad-reg.rs:115:26 | ||
| | ||
LL | asm!("/* {} */", in(cr) x); | ||
| ^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:75:26 | ||
--> $DIR/bad-reg.rs:118:26 | ||
| | ||
LL | asm!("/* {} */", out(cr) _); | ||
| ^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:79:18 | ||
--> $DIR/bad-reg.rs:122:18 | ||
| | ||
LL | asm!("", in("xer") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:82:18 | ||
--> $DIR/bad-reg.rs:125:18 | ||
| | ||
LL | asm!("", out("xer") x); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:85:26 | ||
--> $DIR/bad-reg.rs:128:26 | ||
| | ||
LL | asm!("/* {} */", in(xer) x); | ||
| ^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:88:26 | ||
--> $DIR/bad-reg.rs:131:26 | ||
| | ||
LL | asm!("/* {} */", out(xer) _); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:93:18 | ||
| | ||
LL | asm!("", in("v0") x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:96:18 | ||
| | ||
LL | asm!("", out("v0") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:99:26 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:102:26 | ||
| | ||
LL | asm!("/* {} */", out(vreg) _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register `cr0` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:106:31 | ||
--> $DIR/bad-reg.rs:135:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr0") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr0` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr1` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:108:31 | ||
--> $DIR/bad-reg.rs:137:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr1") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr1` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr2` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:110:31 | ||
--> $DIR/bad-reg.rs:139:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr2") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr2` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr3` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:112:31 | ||
--> $DIR/bad-reg.rs:141:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr3") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr3` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr4` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:114:31 | ||
--> $DIR/bad-reg.rs:143:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr4") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr4` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr5` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:116:31 | ||
--> $DIR/bad-reg.rs:145:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr5") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr5` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr6` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:118:31 | ||
--> $DIR/bad-reg.rs:147:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr6") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr6` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr7` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:120:31 | ||
--> $DIR/bad-reg.rs:149:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr7") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr7` | ||
| | | ||
| register `cr` | ||
|
||
error: cannot use register `r13`: r13 is a reserved register on this target | ||
--> $DIR/bad-reg.rs:36:18 | ||
--> $DIR/bad-reg.rs:49:18 | ||
| | ||
LL | asm!("", out("r13") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: `vsx` target feature is not enabled | ||
--> $DIR/bad-reg.rs:70:27 | ||
| | ||
LL | asm!("", in("v0") v64x2); // requires vsx | ||
| ^^^^^ | ||
| | ||
= note: this is required to use type `i64x2` with register class `vreg` | ||
|
||
error: `vsx` target feature is not enabled | ||
--> $DIR/bad-reg.rs:73:28 | ||
| | ||
LL | asm!("", out("v0") v64x2); // requires vsx | ||
| ^^^^^ | ||
| | ||
= note: this is required to use type `i64x2` with register class `vreg` | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:76:27 | ||
| | ||
LL | asm!("", in("v0") x); // FIXME: should be ok if vsx is available | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: i8x16, i16x8, i32x4, f32x4, f32, f64, i64x2, f64x2 | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:79:28 | ||
| | ||
LL | asm!("", out("v0") x); // FIXME: should be ok if vsx is available | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: i8x16, i16x8, i32x4, f32x4, f32, f64, i64x2, f64x2 | ||
|
||
error: `vsx` target feature is not enabled | ||
--> $DIR/bad-reg.rs:84:35 | ||
| | ||
LL | asm!("/* {} */", in(vreg) v64x2); // requires vsx | ||
| ^^^^^ | ||
| | ||
= note: this is required to use type `i64x2` with register class `vreg` | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:66:27 | ||
--> $DIR/bad-reg.rs:87:35 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); // FIXME: should be ok if vsx is available | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: i8x16, i16x8, i32x4, f32x4, f32, f64, i64x2, f64x2 | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:109:27 | ||
| | ||
LL | asm!("", in("cr") x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:69:28 | ||
--> $DIR/bad-reg.rs:112:28 | ||
| | ||
LL | asm!("", out("cr") x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:72:33 | ||
--> $DIR/bad-reg.rs:115:33 | ||
| | ||
LL | asm!("/* {} */", in(cr) x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:79:28 | ||
--> $DIR/bad-reg.rs:122:28 | ||
| | ||
LL | asm!("", in("xer") x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:82:29 | ||
--> $DIR/bad-reg.rs:125:29 | ||
| | ||
LL | asm!("", out("xer") x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:85:34 | ||
--> $DIR/bad-reg.rs:128:34 | ||
| | ||
LL | asm!("/* {} */", in(xer) x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:93:27 | ||
| | ||
LL | asm!("", in("v0") x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:96:28 | ||
| | ||
LL | asm!("", out("v0") x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:99:35 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: aborting due to 38 previous errors | ||
error: aborting due to 37 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,264 +1,240 @@ | ||
error: invalid register `sp`: the stack pointer cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:32:18 | ||
--> $DIR/bad-reg.rs:45:18 | ||
| | ||
LL | asm!("", out("sp") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `r2`: r2 is a system reserved register and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:34:18 | ||
--> $DIR/bad-reg.rs:47:18 | ||
| | ||
LL | asm!("", out("r2") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `r29`: r29 is used internally by LLVM and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:38:18 | ||
--> $DIR/bad-reg.rs:51:18 | ||
| | ||
LL | asm!("", out("r29") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `r30`: r30 is used internally by LLVM and cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:40:18 | ||
--> $DIR/bad-reg.rs:53:18 | ||
| | ||
LL | asm!("", out("r30") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `fp`: the frame pointer cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:42:18 | ||
--> $DIR/bad-reg.rs:55:18 | ||
| | ||
LL | asm!("", out("fp") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `lr`: the link register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:44:18 | ||
--> $DIR/bad-reg.rs:57:18 | ||
| | ||
LL | asm!("", out("lr") _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: invalid register `ctr`: the counter register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:46:18 | ||
--> $DIR/bad-reg.rs:59:18 | ||
| | ||
LL | asm!("", out("ctr") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: invalid register `vrsave`: the vrsave register cannot be used as an operand for inline asm | ||
--> $DIR/bad-reg.rs:48:18 | ||
--> $DIR/bad-reg.rs:61:18 | ||
| | ||
LL | asm!("", out("vrsave") _); | ||
| ^^^^^^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:66:18 | ||
--> $DIR/bad-reg.rs:109:18 | ||
| | ||
LL | asm!("", in("cr") x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:69:18 | ||
--> $DIR/bad-reg.rs:112:18 | ||
| | ||
LL | asm!("", out("cr") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:72:26 | ||
--> $DIR/bad-reg.rs:115:26 | ||
| | ||
LL | asm!("/* {} */", in(cr) x); | ||
| ^^^^^^^^ | ||
|
||
error: register class `cr` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:75:26 | ||
--> $DIR/bad-reg.rs:118:26 | ||
| | ||
LL | asm!("/* {} */", out(cr) _); | ||
| ^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:79:18 | ||
--> $DIR/bad-reg.rs:122:18 | ||
| | ||
LL | asm!("", in("xer") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:82:18 | ||
--> $DIR/bad-reg.rs:125:18 | ||
| | ||
LL | asm!("", out("xer") x); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:85:26 | ||
--> $DIR/bad-reg.rs:128:26 | ||
| | ||
LL | asm!("/* {} */", in(xer) x); | ||
| ^^^^^^^^^ | ||
|
||
error: register class `xer` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:88:26 | ||
--> $DIR/bad-reg.rs:131:26 | ||
| | ||
LL | asm!("/* {} */", out(xer) _); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:93:18 | ||
| | ||
LL | asm!("", in("v0") x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:96:18 | ||
| | ||
LL | asm!("", out("v0") x); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:99:26 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); | ||
| ^^^^^^^^^^ | ||
|
||
error: register class `vreg` can only be used as a clobber, not as an input or output | ||
--> $DIR/bad-reg.rs:102:26 | ||
| | ||
LL | asm!("/* {} */", out(vreg) _); | ||
| ^^^^^^^^^^^ | ||
|
||
error: register `cr0` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:106:31 | ||
--> $DIR/bad-reg.rs:135:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr0") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr0` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr1` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:108:31 | ||
--> $DIR/bad-reg.rs:137:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr1") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr1` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr2` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:110:31 | ||
--> $DIR/bad-reg.rs:139:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr2") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr2` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr3` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:112:31 | ||
--> $DIR/bad-reg.rs:141:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr3") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr3` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr4` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:114:31 | ||
--> $DIR/bad-reg.rs:143:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr4") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr4` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr5` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:116:31 | ||
--> $DIR/bad-reg.rs:145:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr5") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr5` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr6` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:118:31 | ||
--> $DIR/bad-reg.rs:147:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr6") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr6` | ||
| | | ||
| register `cr` | ||
|
||
error: register `cr7` conflicts with register `cr` | ||
--> $DIR/bad-reg.rs:120:31 | ||
--> $DIR/bad-reg.rs:149:31 | ||
| | ||
LL | asm!("", out("cr") _, out("cr7") _); | ||
| ----------- ^^^^^^^^^^^^ register `cr7` | ||
| | | ||
| register `cr` | ||
|
||
error: cannot use register `r13`: r13 is a reserved register on this target | ||
--> $DIR/bad-reg.rs:36:18 | ||
--> $DIR/bad-reg.rs:49:18 | ||
| | ||
LL | asm!("", out("r13") _); | ||
| ^^^^^^^^^^^^ | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:66:27 | ||
--> $DIR/bad-reg.rs:76:27 | ||
| | ||
LL | asm!("", in("v0") x); // FIXME: should be ok if vsx is available | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: i8x16, i16x8, i32x4, f32x4, f32, f64, i64x2, f64x2 | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:79:28 | ||
| | ||
LL | asm!("", out("v0") x); // FIXME: should be ok if vsx is available | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: i8x16, i16x8, i32x4, f32x4, f32, f64, i64x2, f64x2 | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:87:35 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); // FIXME: should be ok if vsx is available | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: i8x16, i16x8, i32x4, f32x4, f32, f64, i64x2, f64x2 | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:109:27 | ||
| | ||
LL | asm!("", in("cr") x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:69:28 | ||
--> $DIR/bad-reg.rs:112:28 | ||
| | ||
LL | asm!("", out("cr") x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:72:33 | ||
--> $DIR/bad-reg.rs:115:33 | ||
| | ||
LL | asm!("/* {} */", in(cr) x); | ||
| ^ | ||
| | ||
= note: register class `cr` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:79:28 | ||
--> $DIR/bad-reg.rs:122:28 | ||
| | ||
LL | asm!("", in("xer") x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:82:29 | ||
--> $DIR/bad-reg.rs:125:29 | ||
| | ||
LL | asm!("", out("xer") x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:85:34 | ||
--> $DIR/bad-reg.rs:128:34 | ||
| | ||
LL | asm!("/* {} */", in(xer) x); | ||
| ^ | ||
| | ||
= note: register class `xer` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:93:27 | ||
| | ||
LL | asm!("", in("v0") x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:96:28 | ||
| | ||
LL | asm!("", out("v0") x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: type `i32` cannot be used with this register class | ||
--> $DIR/bad-reg.rs:99:35 | ||
| | ||
LL | asm!("/* {} */", in(vreg) x); | ||
| ^ | ||
| | ||
= note: register class `vreg` supports these types: | ||
|
||
error: aborting due to 38 previous errors | ||
error: aborting due to 34 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters