about summary refs log tree commit diff
path: root/tests/ui/asm/x86_64/issue-82869.rs
blob: 448ebd9c99f45ab3c1348c535f02561f38287721 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//@ needs-asm-support
//@ only-x86_64
// Make sure rustc doesn't ICE on asm! for a foreign architecture.

#![crate_type = "rlib"]

use std::arch::asm;

pub unsafe fn aarch64(a: f64, b: f64) -> f64 {
    let c;
    asm!("add {:d}, {:d}, d0", out(vreg) c, in(vreg) a, in("d0") {
        || {};
        b
    });
    //~^^^^ ERROR invalid register class
    //~^^^^^ ERROR invalid register class
    //~^^^^^^ ERROR invalid register
    c
}

pub unsafe fn x86(a: f64, b: f64) -> f64 {
    let c;
    asm!("addsd {}, {}, xmm0", out(xmm_reg) c, in(xmm_reg) a, in("xmm0") b);
    c
}