]> git.lizzy.rs Git - rust.git/blob - src/test/ui/asm/x86_64/target-feature-attr.rs
Rollup merge of #97325 - tmiasko:capture-enum-field, r=arora-aman
[rust.git] / src / test / ui / asm / x86_64 / target-feature-attr.rs
1 // only-x86_64
2
3 #![feature(avx512_target_feature)]
4
5 use std::arch::asm;
6
7 #[target_feature(enable = "avx")]
8 unsafe fn foo() {
9     let mut x = 1;
10     let y = 2;
11     asm!("vaddps {2:y}, {0:y}, {1:y}", in(ymm_reg) x, in(ymm_reg) y, lateout(ymm_reg) x);
12     assert_eq!(x, 3);
13 }
14
15 unsafe fn bar() {
16     let mut x = 1;
17     let y = 2;
18     asm!("vaddps {2:y}, {0:y}, {1:y}", in(ymm_reg) x, in(ymm_reg) y, lateout(ymm_reg) x);
19     //~^ ERROR: register class `ymm_reg` requires the `avx` target feature
20     //~| ERROR: register class `ymm_reg` requires the `avx` target feature
21     //~| ERROR: register class `ymm_reg` requires the `avx` target feature
22     assert_eq!(x, 3);
23 }
24
25 #[target_feature(enable = "avx512bw")]
26 unsafe fn baz() {
27     let x = 1;
28     asm!("/* {0} */", in(kreg) x);
29 }
30
31 unsafe fn baz2() {
32     let x = 1;
33     asm!("/* {0} */", in(kreg) x);
34     //~^ ERROR: register class `kreg` requires at least one of the following target features: avx512bw, avx512f
35 }
36
37 fn main() {
38     unsafe {
39         foo();
40         bar();
41     }
42 }