diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-07-21 14:34:12 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-07-22 14:28:48 +0200 |
| commit | a27f3e3fd1e4d16160f8885b6b06665b5319f56c (patch) | |
| tree | b033935392cbadf6f85d2dbddf433a88e323aeeb /tests/codegen/asm | |
| parent | ed93c1783b404d728d4809973a0550eb33cd293f (diff) | |
| download | rust-a27f3e3fd1e4d16160f8885b6b06665b5319f56c.tar.gz rust-a27f3e3fd1e4d16160f8885b6b06665b5319f56c.zip | |
Rename `tests/codegen` into `tests/codegen-llvm`
Diffstat (limited to 'tests/codegen/asm')
24 files changed, 0 insertions, 927 deletions
diff --git a/tests/codegen/asm/aarch64-clobbers.rs b/tests/codegen/asm/aarch64-clobbers.rs deleted file mode 100644 index dd3ba1510b5..00000000000 --- a/tests/codegen/asm/aarch64-clobbers.rs +++ /dev/null @@ -1,47 +0,0 @@ -//@ add-core-stubs -//@ revisions: aarch64 aarch64_fixed_x18 aarch64_no_x18 aarch64_reserve_x18 arm64ec -//@[aarch64] compile-flags: --target aarch64-unknown-linux-gnu -//@[aarch64] needs-llvm-components: aarch64 -//@[aarch64_fixed_x18] compile-flags: --target aarch64-unknown-linux-gnu -Zfixed-x18 -//@[aarch64_fixed_x18] needs-llvm-components: aarch64 -//@[aarch64_no_x18] compile-flags: --target aarch64-pc-windows-msvc -//@[aarch64_no_x18] needs-llvm-components: aarch64 -// aarch64-unknown-trusty uses aarch64-unknown-unknown-musl which doesn't -// reserve x18 by default as llvm_target, and pass +reserve-x18 in target-spec. -//@[aarch64_reserve_x18] compile-flags: --target aarch64-unknown-trusty -//@[aarch64_reserve_x18] needs-llvm-components: aarch64 -//@[arm64ec] compile-flags: --target arm64ec-pc-windows-msvc -//@[arm64ec] needs-llvm-components: aarch64 -// ignore-tidy-linelength - -#![crate_type = "rlib"] -#![feature(no_core)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @cc_clobber -// CHECK: call void asm sideeffect "", "~{cc}"() -#[no_mangle] -pub unsafe fn cc_clobber() { - asm!("", options(nostack, nomem)); -} - -// CHECK-LABEL: @no_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn no_clobber() { - asm!("", options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @clobber_abi -// aarch64: asm sideeffect "", "={w0},={w1},={w2},={w3},={w4},={w5},={w6},={w7},={w8},={w9},={w10},={w11},={w12},={w13},={w14},={w15},={w16},={w17},={w18},={w30},={q0},={q1},={q2},={q3},={q4},={q5},={q6},={q7},={q8},={q9},={q10},={q11},={q12},={q13},={q14},={q15},={q16},={q17},={q18},={q19},={q20},={q21},={q22},={q23},={q24},={q25},={q26},={q27},={q28},={q29},={q30},={q31},~{p0},~{p1},~{p2},~{p3},~{p4},~{p5},~{p6},~{p7},~{p8},~{p9},~{p10},~{p11},~{p12},~{p13},~{p14},~{p15},~{ffr}"() -// aarch64_fixed_x18: asm sideeffect "", "={w0},={w1},={w2},={w3},={w4},={w5},={w6},={w7},={w8},={w9},={w10},={w11},={w12},={w13},={w14},={w15},={w16},={w17},={w30},={q0},={q1},={q2},={q3},={q4},={q5},={q6},={q7},={q8},={q9},={q10},={q11},={q12},={q13},={q14},={q15},={q16},={q17},={q18},={q19},={q20},={q21},={q22},={q23},={q24},={q25},={q26},={q27},={q28},={q29},={q30},={q31},~{p0},~{p1},~{p2},~{p3},~{p4},~{p5},~{p6},~{p7},~{p8},~{p9},~{p10},~{p11},~{p12},~{p13},~{p14},~{p15},~{ffr}"() -// aarch64_no_x18: asm sideeffect "", "={w0},={w1},={w2},={w3},={w4},={w5},={w6},={w7},={w8},={w9},={w10},={w11},={w12},={w13},={w14},={w15},={w16},={w17},={w30},={q0},={q1},={q2},={q3},={q4},={q5},={q6},={q7},={q8},={q9},={q10},={q11},={q12},={q13},={q14},={q15},={q16},={q17},={q18},={q19},={q20},={q21},={q22},={q23},={q24},={q25},={q26},={q27},={q28},={q29},={q30},={q31},~{p0},~{p1},~{p2},~{p3},~{p4},~{p5},~{p6},~{p7},~{p8},~{p9},~{p10},~{p11},~{p12},~{p13},~{p14},~{p15},~{ffr}"() -// aarch64_reserve_x18: asm sideeffect "", "={w0},={w1},={w2},={w3},={w4},={w5},={w6},={w7},={w8},={w9},={w10},={w11},={w12},={w13},={w14},={w15},={w16},={w17},={w30},={q0},={q1},={q2},={q3},={q4},={q5},={q6},={q7},={q8},={q9},={q10},={q11},={q12},={q13},={q14},={q15},={q16},={q17},={q18},={q19},={q20},={q21},={q22},={q23},={q24},={q25},={q26},={q27},={q28},={q29},={q30},={q31},~{p0},~{p1},~{p2},~{p3},~{p4},~{p5},~{p6},~{p7},~{p8},~{p9},~{p10},~{p11},~{p12},~{p13},~{p14},~{p15},~{ffr}"() -// arm64ec: asm sideeffect "", "={w0},={w1},={w2},={w3},={w4},={w5},={w6},={w7},={w8},={w9},={w10},={w11},={w12},={w15},={w16},={w17},={w30},={q0},={q1},={q2},={q3},={q4},={q5},={q6},={q7},={q8},={q9},={q10},={q11},={q12},={q13},={q14},={q15}"() -#[no_mangle] -pub unsafe fn clobber_abi() { - asm!("", clobber_abi("C"), options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/avr-clobbers.rs b/tests/codegen/asm/avr-clobbers.rs deleted file mode 100644 index 9451127bf04..00000000000 --- a/tests/codegen/asm/avr-clobbers.rs +++ /dev/null @@ -1,39 +0,0 @@ -//@ add-core-stubs -//@ assembly-output: emit-asm -//@ compile-flags: --target avr-none -C target-cpu=atmega328p -//@ needs-llvm-components: avr - -#![crate_type = "rlib"] -#![feature(no_core, asm_experimental_arch)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @sreg_is_clobbered -// CHECK: void asm sideeffect "", "~{sreg}"() -#[no_mangle] -pub unsafe fn sreg_is_clobbered() { - asm!("", options(nostack, nomem)); -} - -// CHECK-LABEL: @sreg_is_not_clobbered_if_preserve_flags_is_used -// CHECK: void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn sreg_is_not_clobbered_if_preserve_flags_is_used() { - asm!("", options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @clobber_abi -// CHECK: asm sideeffect "", "={r18},={r19},={r20},={r21},={r22},={r23},={r24},={r25},={r26},={r27},={r30},={r31},~{sreg}"() -#[no_mangle] -pub unsafe fn clobber_abi() { - asm!("", clobber_abi("C"), options(nostack, nomem)); -} - -// CHECK-LABEL: @clobber_abi_with_preserved_flags -// CHECK: asm sideeffect "", "={r18},={r19},={r20},={r21},={r22},={r23},={r24},={r25},={r26},={r27},={r30},={r31}"() -#[no_mangle] -pub unsafe fn clobber_abi_with_preserved_flags() { - asm!("", clobber_abi("C"), options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/bpf-clobbers.rs b/tests/codegen/asm/bpf-clobbers.rs deleted file mode 100644 index 1117549b1ec..00000000000 --- a/tests/codegen/asm/bpf-clobbers.rs +++ /dev/null @@ -1,31 +0,0 @@ -//@ add-core-stubs -//@ compile-flags: --target bpfel-unknown-none -//@ needs-llvm-components: bpf - -#![crate_type = "rlib"] -#![feature(no_core, asm_experimental_arch)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @flags_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn flags_clobber() { - asm!("", options(nostack, nomem)); -} - -// CHECK-LABEL: @no_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn no_clobber() { - asm!("", options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @clobber_abi -// CHECK: asm sideeffect "", "={r0},={r1},={r2},={r3},={r4},={r5}"() -#[no_mangle] -pub unsafe fn clobber_abi() { - asm!("", clobber_abi("C"), options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/critical.rs b/tests/codegen/asm/critical.rs deleted file mode 100644 index 0f29d7c69b4..00000000000 --- a/tests/codegen/asm/critical.rs +++ /dev/null @@ -1,36 +0,0 @@ -//@ only-x86_64 -//@ compile-flags: -C no-prepopulate-passes -#![feature(asm_goto_with_outputs)] -#![crate_type = "lib"] -use std::arch::asm; - -// Regression test for #137867. Check that critical edges have been split before code generation, -// and so all stores to the asm output occur on disjoint paths without any of them jumping to -// another callbr label. -// -// CHECK-LABEL: @f( -// CHECK: [[OUT:%.*]] = callbr i32 asm -// CHECK-NEXT: to label %[[BB0:.*]] [label %[[BB1:.*]], label %[[BB2:.*]]], -// CHECK: [[BB1]]: -// CHECK-NEXT: store i32 [[OUT]], ptr %a -// CHECK-NEXT: br label %[[BBR:.*]] -// CHECK: [[BB2]]: -// CHECK-NEXT: store i32 [[OUT]], ptr %a -// CHECK-NEXT: br label %[[BBR]] -// CHECK: [[BB0]]: -// CHECK-NEXT: store i32 [[OUT]], ptr %a -// CHECK-NEXT: br label %[[BBR]] -// CHECK: [[BBR]]: -// CHECK-NEXT: [[RET:%.*]] = load i32, ptr %a -// CHECK-NEXT: ret i32 [[RET]] -#[unsafe(no_mangle)] -pub unsafe fn f(mut a: u32) -> u32 { - asm!( - "jmp {} - jmp {}", - label {}, - label {}, - inout("eax") a, - ); - a -} diff --git a/tests/codegen/asm/csky-clobbers.rs b/tests/codegen/asm/csky-clobbers.rs deleted file mode 100644 index 4986d0fe56d..00000000000 --- a/tests/codegen/asm/csky-clobbers.rs +++ /dev/null @@ -1,24 +0,0 @@ -//@ add-core-stubs -//@ compile-flags: --target csky-unknown-linux-gnuabiv2 -//@ needs-llvm-components: csky - -#![crate_type = "rlib"] -#![feature(no_core, asm_experimental_arch)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @flags_clobber -// CHECK: call void asm sideeffect "", "~{psr}"() -#[no_mangle] -pub unsafe fn flags_clobber() { - asm!("", options(nostack, nomem)); -} - -// CHECK-LABEL: @no_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn no_clobber() { - asm!("", options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/foo.s b/tests/codegen/asm/foo.s deleted file mode 100644 index 304d82aa0c6..00000000000 --- a/tests/codegen/asm/foo.s +++ /dev/null @@ -1,3 +0,0 @@ -.global foo -foo: - jmp baz diff --git a/tests/codegen/asm/global_asm.rs b/tests/codegen/asm/global_asm.rs deleted file mode 100644 index 32075daa3cf..00000000000 --- a/tests/codegen/asm/global_asm.rs +++ /dev/null @@ -1,28 +0,0 @@ -//@ revisions: x32 x64 -//@[x32] only-x86 -//@[x64] only-x86_64 -//@ compile-flags: -C no-prepopulate-passes - -#![crate_type = "lib"] - -use std::arch::global_asm; - -// CHECK-LABEL: foo -// CHECK: module asm -// this regex will capture the correct unconditional branch inst. -// CHECK: module asm "{{[[:space:]]+}}jmp baz" -global_asm!( - r#" - .global foo -foo: - jmp baz -"# -); - -extern "C" { - fn foo(); -} - -// CHECK-LABEL: @baz -#[no_mangle] -pub unsafe extern "C" fn baz() {} diff --git a/tests/codegen/asm/global_asm_include.rs b/tests/codegen/asm/global_asm_include.rs deleted file mode 100644 index 98be9c3e333..00000000000 --- a/tests/codegen/asm/global_asm_include.rs +++ /dev/null @@ -1,21 +0,0 @@ -//@ revisions: x32 x64 -//@[x32] only-x86 -//@[x64] only-x86_64 -//@ compile-flags: -C no-prepopulate-passes - -#![crate_type = "lib"] - -use std::arch::global_asm; - -// CHECK-LABEL: foo -// CHECK: module asm -// CHECK: module asm "{{[[:space:]]+}}jmp baz" -global_asm!(include_str!("foo.s")); - -extern "C" { - fn foo(); -} - -// CHECK-LABEL: @baz -#[no_mangle] -pub unsafe extern "C" fn baz() {} diff --git a/tests/codegen/asm/global_asm_x2.rs b/tests/codegen/asm/global_asm_x2.rs deleted file mode 100644 index 9e3a00f0680..00000000000 --- a/tests/codegen/asm/global_asm_x2.rs +++ /dev/null @@ -1,47 +0,0 @@ -//@ revisions: x32 x64 -//@[x32] only-x86 -//@[x64] only-x86_64 -//@ compile-flags: -C no-prepopulate-passes - -#![crate_type = "lib"] -#![no_std] - -use core::arch::global_asm; - -// CHECK-LABEL: foo -// CHECK: module asm -// CHECK: module asm "{{[[:space:]]+}}jmp baz" -// any other global_asm will be appended to this first block, so: -// CHECK-LABEL: bar -// CHECK: module asm "{{[[:space:]]+}}jmp quux" -global_asm!( - r#" - .global foo -foo: - jmp baz -"# -); - -extern "C" { - fn foo(); -} - -// CHECK-LABEL: @baz -#[no_mangle] -pub unsafe extern "C" fn baz() {} - -// no checks here; this has been appended to the first occurrence -global_asm!( - r#" - .global bar -bar: - jmp quux -"# -); - -extern "C" { - fn bar(); -} - -#[no_mangle] -pub unsafe extern "C" fn quux() {} diff --git a/tests/codegen/asm/goto.rs b/tests/codegen/asm/goto.rs deleted file mode 100644 index f68c399c920..00000000000 --- a/tests/codegen/asm/goto.rs +++ /dev/null @@ -1,63 +0,0 @@ -//@ compile-flags: -Copt-level=3 -//@ only-x86_64 - -#![crate_type = "rlib"] -#![feature(asm_goto_with_outputs)] - -use std::arch::asm; - -// CHECK-LABEL: @asm_goto -#[no_mangle] -pub unsafe fn asm_goto() { - // CHECK: callbr void asm sideeffect alignstack inteldialect " - // CHECK-NEXT: to label %[[FALLTHROUGHBB:[a-b0-9]+]] [label %[[JUMPBB:[a-b0-9]+]]] - asm!("jmp {}", label {}); -} - -// CHECK-LABEL: @asm_goto_with_outputs -#[no_mangle] -pub unsafe fn asm_goto_with_outputs() -> u64 { - let out: u64; - // CHECK: [[RES:%[0-9]+]] = callbr i64 asm sideeffect alignstack inteldialect " - // CHECK-NEXT: to label %[[FALLTHROUGHBB:[a-b0-9]+]] [label %[[JUMPBB:[a-b0-9]+]]] - asm!("{} /* {} */", out(reg) out, label { return 1; }); - // CHECK: [[JUMPBB]]: - // CHECK-NEXT: [[RET:%.+]] = phi i64 [ [[RES]], %[[FALLTHROUGHBB]] ], [ 1, %start ] - // CHECK-NEXT: ret i64 [[RET]] - out -} - -// CHECK-LABEL: @asm_goto_with_outputs_use_in_label -#[no_mangle] -pub unsafe fn asm_goto_with_outputs_use_in_label() -> u64 { - let out: u64; - // CHECK: [[RES:%[0-9]+]] = callbr i64 asm sideeffect alignstack inteldialect " - // CHECK-NEXT: to label %[[FALLTHROUGHBB:[a-b0-9]+]] [label %[[JUMPBB:[a-b0-9]+]]] - asm!("{} /* {} */", out(reg) out, label { return out; }); - // CHECK: [[JUMPBB]]: - // CHECK-NEXT: [[RET:%.+]] = phi i64 [ 1, %[[FALLTHROUGHBB]] ], [ [[RES]], %start ] - // CHECK-NEXT: ret i64 [[RET]] - 1 -} - -// CHECK-LABEL: @asm_goto_noreturn -#[no_mangle] -pub unsafe fn asm_goto_noreturn() -> u64 { - // CHECK: callbr void asm sideeffect alignstack inteldialect " - // CHECK-NEXT: to label %unreachable [label %[[JUMPBB:[a-b0-9]+]]] - asm!("jmp {}", label { return 1; }, options(noreturn)); - // CHECK: [[JUMPBB]]: - // CHECK-NEXT: ret i64 1 -} - -// CHECK-LABEL: @asm_goto_noreturn_with_outputs -#[no_mangle] -pub unsafe fn asm_goto_noreturn_with_outputs() -> u64 { - let out: u64; - // CHECK: [[RES:%[0-9]+]] = callbr i64 asm sideeffect alignstack inteldialect " - // CHECK-NEXT: to label %[[FALLTHROUGHBB:[a-b0-9]+]] [label %[[JUMPBB:[a-b0-9]+]]] - asm!("mov {}, 1", "jmp {}", out(reg) out, label { return out; }); - // CHECK: [[JUMPBB]]: - // CHECK-NEXT: ret i64 [[RES]] - out -} diff --git a/tests/codegen/asm/hexagon-clobbers.rs b/tests/codegen/asm/hexagon-clobbers.rs deleted file mode 100644 index 800b8964669..00000000000 --- a/tests/codegen/asm/hexagon-clobbers.rs +++ /dev/null @@ -1,33 +0,0 @@ -//@ add-core-stubs -//@ revisions: hexagon -//@[hexagon] compile-flags: --target hexagon-unknown-linux-musl -//@[hexagon] needs-llvm-components: hexagon -//@ compile-flags: -Zmerge-functions=disabled - -#![crate_type = "rlib"] -#![feature(no_core, asm_experimental_arch)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @flags_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn flags_clobber() { - asm!("", options(nostack, nomem)); -} - -// CHECK-LABEL: @no_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn no_clobber() { - asm!("", options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @p0_clobber -// CHECK: call void asm sideeffect "", "~{p0}"() -#[no_mangle] -pub unsafe fn p0_clobber() { - asm!("", out("p0") _, options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/may_unwind.rs b/tests/codegen/asm/may_unwind.rs deleted file mode 100644 index 63cdec7584c..00000000000 --- a/tests/codegen/asm/may_unwind.rs +++ /dev/null @@ -1,39 +0,0 @@ -//@ compile-flags: -Copt-level=3 -//@ only-x86_64 - -#![crate_type = "rlib"] -#![feature(asm_unwind)] - -use std::arch::asm; - -#[no_mangle] -pub extern "C" fn panicky() {} - -struct Foo; - -impl Drop for Foo { - fn drop(&mut self) { - println!(); - } -} - -// CHECK-LABEL: @asm_may_unwind -#[no_mangle] -pub unsafe fn asm_may_unwind() { - let _m = Foo; - // CHECK: invoke void asm sideeffect alignstack inteldialect unwind "" - asm!("", options(may_unwind)); -} - -// CHECK-LABEL: @asm_with_result_may_unwind -#[no_mangle] -pub unsafe fn asm_with_result_may_unwind() -> u64 { - let _m = Foo; - let res: u64; - // CHECK: [[RES:%[0-9]+]] = invoke i64 asm sideeffect alignstack inteldialect unwind - // CHECK-NEXT: to label %[[NORMALBB:[a-b0-9]+]] - asm!("mov {}, 1", out(reg) res, options(may_unwind)); - // CHECK: [[NORMALBB]]: - // CHECK: ret i64 [[RES:%[0-9]+]] - res -} diff --git a/tests/codegen/asm/maybe-uninit.rs b/tests/codegen/asm/maybe-uninit.rs deleted file mode 100644 index d76d5cb1312..00000000000 --- a/tests/codegen/asm/maybe-uninit.rs +++ /dev/null @@ -1,27 +0,0 @@ -//@ compile-flags: -Copt-level=3 -//@ only-x86_64 - -#![crate_type = "rlib"] -#![allow(asm_sub_register)] - -use std::arch::asm; -use std::mem::MaybeUninit; - -// CHECK-LABEL: @int -#[no_mangle] -pub unsafe fn int(x: MaybeUninit<i32>) -> MaybeUninit<i32> { - let y: MaybeUninit<i32>; - asm!("/*{}{}*/", in(reg) x, out(reg) y); - y -} - -// CHECK-LABEL: @inout -#[no_mangle] -pub unsafe fn inout(mut x: i32) -> MaybeUninit<u32> { - let mut y: MaybeUninit<u32>; - asm!("/*{}*/", inout(reg) x => y); - asm!("/*{}*/", inout(reg) y => x); - asm!("/*{}*/", inlateout(reg) x => y); - asm!("/*{}*/", inlateout(reg) y => x); - y -} diff --git a/tests/codegen/asm/msp430-clobbers.rs b/tests/codegen/asm/msp430-clobbers.rs deleted file mode 100644 index 2c8d29cffc4..00000000000 --- a/tests/codegen/asm/msp430-clobbers.rs +++ /dev/null @@ -1,32 +0,0 @@ -//@ add-core-stubs -//@ assembly-output: emit-asm -//@ compile-flags: --target msp430-none-elf -//@ needs-llvm-components: msp430 - -#![crate_type = "rlib"] -#![feature(no_core, asm_experimental_arch)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @sr_clobber -// CHECK: call void asm sideeffect "", "~{sr}"() -#[no_mangle] -pub unsafe fn sr_clobber() { - asm!("", options(nostack, nomem)); -} - -// CHECK-LABEL: @no_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn no_clobber() { - asm!("", options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @clobber_abi -// CHECK: asm sideeffect "", "={r11},={r12},={r13},={r14},={r15}"() -#[no_mangle] -pub unsafe fn clobber_abi() { - asm!("", clobber_abi("C"), options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/multiple-options.rs b/tests/codegen/asm/multiple-options.rs deleted file mode 100644 index 4d87471a193..00000000000 --- a/tests/codegen/asm/multiple-options.rs +++ /dev/null @@ -1,54 +0,0 @@ -//@ compile-flags: -Copt-level=3 -//@ only-x86_64 - -#![crate_type = "rlib"] - -use std::arch::asm; - -// CHECK-LABEL: @pure -// CHECK-NOT: asm -// CHECK: ret void -#[no_mangle] -pub unsafe fn pure(x: i32) { - let y: i32; - asm!("", out("ax") y, in("cx") x, options(pure), options(nomem)); -} - -pub static mut VAR: i32 = 0; -pub static mut DUMMY_OUTPUT: i32 = 0; - -// CHECK-LABEL: @readonly -// CHECK: call i32 asm -// CHECK: ret i32 1 -#[no_mangle] -pub unsafe fn readonly() -> i32 { - VAR = 1; - asm!("", out("ax") DUMMY_OUTPUT, options(pure), options(readonly)); - VAR -} - -// CHECK-LABEL: @nomem -// CHECK-NOT: store -// CHECK: call i32 asm -// CHECK: store -// CHECK: ret i32 2 -#[no_mangle] -pub unsafe fn nomem() -> i32 { - VAR = 1; - asm!("", out("ax") DUMMY_OUTPUT, options(pure), options(nomem)); - VAR = 2; - VAR -} - -// CHECK-LABEL: @not_nomem -// CHECK: store -// CHECK: call i32 asm -// CHECK: store -// CHECK: ret i32 2 -#[no_mangle] -pub unsafe fn not_nomem() -> i32 { - VAR = 1; - asm!("", out("ax") DUMMY_OUTPUT, options(pure), options(readonly)); - VAR = 2; - VAR -} diff --git a/tests/codegen/asm/options.rs b/tests/codegen/asm/options.rs deleted file mode 100644 index c087f91fd43..00000000000 --- a/tests/codegen/asm/options.rs +++ /dev/null @@ -1,104 +0,0 @@ -//@ compile-flags: -Copt-level=3 -//@ only-x86_64 - -#![crate_type = "rlib"] - -use std::arch::asm; - -// CHECK-LABEL: @pure -// CHECK-NOT: asm -// CHECK: ret void -#[no_mangle] -pub unsafe fn pure(x: i32) { - let y: i32; - asm!("", out("ax") y, in("cx") x, options(pure, nomem)); -} - -// CHECK-LABEL: @noreturn -// CHECK: call void asm -// CHECK-NEXT: unreachable -#[no_mangle] -pub unsafe fn noreturn() { - asm!("", options(noreturn)); -} - -pub static mut VAR: i32 = 0; -pub static mut DUMMY_OUTPUT: i32 = 0; - -// CHECK-LABEL: @readonly -// CHECK: call i32 asm -// CHECK: ret i32 1 -#[no_mangle] -pub unsafe fn readonly() -> i32 { - VAR = 1; - asm!("", out("ax") DUMMY_OUTPUT, options(pure, readonly)); - VAR -} - -// CHECK-LABEL: @not_readonly -// CHECK: call i32 asm -// CHECK: ret i32 % -#[no_mangle] -pub unsafe fn not_readonly() -> i32 { - VAR = 1; - asm!("", out("ax") DUMMY_OUTPUT, options()); - VAR -} - -// CHECK-LABEL: @nomem -// CHECK-NOT: store -// CHECK: call i32 asm -// CHECK: store -// CHECK: ret i32 2 -#[no_mangle] -pub unsafe fn nomem() -> i32 { - VAR = 1; - asm!("", out("ax") DUMMY_OUTPUT, options(pure, nomem)); - VAR = 2; - VAR -} - -// CHECK-LABEL: @nomem_nopure -// CHECK-NOT: store -// CHECK: call i32 asm -// CHECK: store -// CHECK: ret i32 2 -#[no_mangle] -pub unsafe fn nomem_nopure() -> i32 { - VAR = 1; - asm!("", out("ax") DUMMY_OUTPUT, options(nomem)); - VAR = 2; - VAR -} - -// CHECK-LABEL: @not_nomem -// CHECK: store -// CHECK: call i32 asm -// CHECK: store -// CHECK: ret i32 2 -#[no_mangle] -pub unsafe fn not_nomem() -> i32 { - VAR = 1; - asm!("", out("ax") DUMMY_OUTPUT, options(pure, readonly)); - VAR = 2; - VAR -} - -// CHECK-LABEL: @dont_remove_nonpure -// CHECK: call void asm -// CHECK: call void asm -// CHECK: call void asm -// CHECK: ret void -#[no_mangle] -pub unsafe fn dont_remove_nonpure() { - asm!("", options()); - asm!("", options(nomem)); - asm!("", options(readonly)); -} - -// CHECK-LABEL: @raw -// CHECK: call void asm sideeffect inteldialect "{} {}", ""() -#[no_mangle] -pub unsafe fn raw() { - asm!("{} {}", options(nostack, nomem, preserves_flags, raw)); -} diff --git a/tests/codegen/asm/powerpc-clobbers.rs b/tests/codegen/asm/powerpc-clobbers.rs deleted file mode 100644 index f7fc7eea5d5..00000000000 --- a/tests/codegen/asm/powerpc-clobbers.rs +++ /dev/null @@ -1,68 +0,0 @@ -//@ add-core-stubs -//@ revisions: powerpc powerpc64 powerpc64le aix64 -//@[powerpc] compile-flags: --target powerpc-unknown-linux-gnu -//@[powerpc] needs-llvm-components: powerpc -//@[powerpc64] compile-flags: --target powerpc64-unknown-linux-gnu -//@[powerpc64] needs-llvm-components: powerpc -//@[powerpc64le] compile-flags: --target powerpc64le-unknown-linux-gnu -//@[powerpc64le] needs-llvm-components: powerpc -//@[aix64] compile-flags: --target powerpc64-ibm-aix -//@[aix64] needs-llvm-components: powerpc -// ignore-tidy-linelength - -#![crate_type = "rlib"] -#![feature(no_core, asm_experimental_arch)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @cr_clobber -// CHECK: call void asm sideeffect "", "~{cr}"() -#[no_mangle] -pub unsafe fn cr_clobber() { - asm!("", out("cr") _, options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @cr0_clobber -// CHECK: call void asm sideeffect "", "~{cr0}"() -#[no_mangle] -pub unsafe fn cr0_clobber() { - asm!("", out("cr0") _, options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @cr5_clobber -// CHECK: call void asm sideeffect "", "~{cr5}"() -#[no_mangle] -pub unsafe fn cr5_clobber() { - asm!("", out("cr5") _, options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @xer_clobber -// CHECK: call void asm sideeffect "", "~{xer}"() -#[no_mangle] -pub unsafe fn xer_clobber() { - asm!("", out("xer") _, options(nostack, nomem, preserves_flags)); -} - -// Output format depends on the availability of altivec. -// CHECK-LABEL: @v0_clobber -// powerpc: call void asm sideeffect "", "~{v0}"() -// powerpc64: call <4 x i32> asm sideeffect "", "=&{v0}"() -// powerpc64le: call <4 x i32> asm sideeffect "", "=&{v0}"() -// aix64: call <4 x i32> asm sideeffect "", "=&{v0}"() -#[no_mangle] -pub unsafe fn v0_clobber() { - asm!("", out("v0") _, options(nostack, nomem, preserves_flags)); -} - -// Output format depends on the availability of altivec. -// CHECK-LABEL: @clobber_abi -// powerpc: asm sideeffect "", "={r0},={r3},={r4},={r5},={r6},={r7},={r8},={r9},={r10},={r11},={r12},={f0},={f1},={f2},={f3},={f4},={f5},={f6},={f7},={f8},={f9},={f10},={f11},={f12},={f13},~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{cr0},~{cr1},~{cr5},~{cr6},~{cr7},~{xer}"() -// powerpc64: asm sideeffect "", "={r0},={r3},={r4},={r5},={r6},={r7},={r8},={r9},={r10},={r11},={r12},={f0},={f1},={f2},={f3},={f4},={f5},={f6},={f7},={f8},={f9},={f10},={f11},={f12},={f13},={v0},={v1},={v2},={v3},={v4},={v5},={v6},={v7},={v8},={v9},={v10},={v11},={v12},={v13},={v14},={v15},={v16},={v17},={v18},={v19},~{cr0},~{cr1},~{cr5},~{cr6},~{cr7},~{xer}"() -// powerpc64le: asm sideeffect "", "={r0},={r3},={r4},={r5},={r6},={r7},={r8},={r9},={r10},={r11},={r12},={f0},={f1},={f2},={f3},={f4},={f5},={f6},={f7},={f8},={f9},={f10},={f11},={f12},={f13},={v0},={v1},={v2},={v3},={v4},={v5},={v6},={v7},={v8},={v9},={v10},={v11},={v12},={v13},={v14},={v15},={v16},={v17},={v18},={v19},~{cr0},~{cr1},~{cr5},~{cr6},~{cr7},~{xer}"() -// aix64: asm sideeffect "", "={r0},={r3},={r4},={r5},={r6},={r7},={r8},={r9},={r10},={r11},={r12},={f0},={f1},={f2},={f3},={f4},={f5},={f6},={f7},={f8},={f9},={f10},={f11},={f12},={f13},={v0},={v1},={v2},={v3},={v4},={v5},={v6},={v7},={v8},={v9},={v10},={v11},={v12},={v13},={v14},={v15},={v16},={v17},={v18},={v19},~{cr0},~{cr1},~{cr5},~{cr6},~{cr7},~{xer}"() -#[no_mangle] -pub unsafe fn clobber_abi() { - asm!("", clobber_abi("C"), options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/riscv-clobbers.rs b/tests/codegen/asm/riscv-clobbers.rs deleted file mode 100644 index e55b6731098..00000000000 --- a/tests/codegen/asm/riscv-clobbers.rs +++ /dev/null @@ -1,40 +0,0 @@ -//@ add-core-stubs -//@ assembly-output: emit-asm -//@ revisions: rv32i rv64i rv32e -//@[rv32i] compile-flags: --target riscv32i-unknown-none-elf -//@[rv32i] needs-llvm-components: riscv -//@[rv64i] compile-flags: --target riscv64imac-unknown-none-elf -//@[rv64i] needs-llvm-components: riscv -//@[rv32e] compile-flags: --target riscv32e-unknown-none-elf -//@[rv32e] needs-llvm-components: riscv -// ignore-tidy-linelength - -#![crate_type = "rlib"] -#![feature(no_core)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @flags_clobber -// CHECK: call void asm sideeffect "", "~{vtype},~{vl},~{vxsat},~{vxrm}"() -#[no_mangle] -pub unsafe fn flags_clobber() { - asm!("", options(nostack, nomem)); -} - -// CHECK-LABEL: @no_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn no_clobber() { - asm!("", options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @clobber_abi -// rv32i: asm sideeffect "", "={x1},={x5},={x6},={x7},={x10},={x11},={x12},={x13},={x14},={x15},={x16},={x17},={x28},={x29},={x30},={x31},~{f0},~{f1},~{f2},~{f3},~{f4},~{f5},~{f6},~{f7},~{f10},~{f11},~{f12},~{f13},~{f14},~{f15},~{f16},~{f17},~{f28},~{f29},~{f30},~{f31},~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() -// rv64i: asm sideeffect "", "={x1},={x5},={x6},={x7},={x10},={x11},={x12},={x13},={x14},={x15},={x16},={x17},={x28},={x29},={x30},={x31},~{f0},~{f1},~{f2},~{f3},~{f4},~{f5},~{f6},~{f7},~{f10},~{f11},~{f12},~{f13},~{f14},~{f15},~{f16},~{f17},~{f28},~{f29},~{f30},~{f31},~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() -// rv32e: asm sideeffect "", "={x1},={x5},={x6},={x7},={x10},={x11},={x12},={x13},={x14},={x15},~{f0},~{f1},~{f2},~{f3},~{f4},~{f5},~{f6},~{f7},~{f10},~{f11},~{f12},~{f13},~{f14},~{f15},~{f16},~{f17},~{f28},~{f29},~{f30},~{f31},~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() -#[no_mangle] -pub unsafe fn clobber_abi() { - asm!("", clobber_abi("C"), options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/s390x-clobbers.rs b/tests/codegen/asm/s390x-clobbers.rs deleted file mode 100644 index 0ba22a32abf..00000000000 --- a/tests/codegen/asm/s390x-clobbers.rs +++ /dev/null @@ -1,46 +0,0 @@ -//@ add-core-stubs -//@ revisions: s390x -//@[s390x] compile-flags: --target s390x-unknown-linux-gnu -C target-cpu=z10 -//@[s390x] needs-llvm-components: systemz - -#![crate_type = "rlib"] -#![feature(no_core)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @cc_clobber -// CHECK: call void asm sideeffect "", "~{cc}"() -#[no_mangle] -pub unsafe fn cc_clobber() { - asm!("", options(nostack, nomem)); -} - -// CHECK-LABEL: @no_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn no_clobber() { - asm!("", options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @a2_clobber -// CHECK: call void asm sideeffect "", "~{a2}"() -#[no_mangle] -pub unsafe fn a2_clobber() { - asm!("", out("a2") _, options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @v0_clobber -// CHECK: call void asm sideeffect "", "~{v0}"() -#[no_mangle] -pub unsafe fn v0_clobber() { - asm!("", out("v0") _, options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @clobber_abi -// CHECK: asm sideeffect "", "={r0},={r1},={r2},={r3},={r4},={r5},={r14},={f0},={f1},={f2},={f3},={f4},={f5},={f6},={f7},~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31},~{a2},~{a3},~{a4},~{a5},~{a6},~{a7},~{a8},~{a9},~{a10},~{a11},~{a12},~{a13},~{a14},~{a15}"() -#[no_mangle] -pub unsafe fn clobber_abi() { - asm!("", clobber_abi("C"), options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/sanitize-llvm.rs b/tests/codegen/asm/sanitize-llvm.rs deleted file mode 100644 index 97a77033284..00000000000 --- a/tests/codegen/asm/sanitize-llvm.rs +++ /dev/null @@ -1,24 +0,0 @@ -//@ add-core-stubs -// FIXME(nagisa): remove the flags below once all targets support `asm!`. -//@ compile-flags: --target x86_64-unknown-linux-gnu -Copt-level=0 -//@ needs-llvm-components: x86 - -// Verify we sanitize the special tokens for the LLVM inline-assembly, ensuring people won't -// inadvertently rely on the LLVM-specific syntax and features. -#![no_core] -#![feature(no_core)] -#![crate_type = "rlib"] -#![allow(named_asm_labels)] - -extern crate minicore; -use minicore::*; - -pub unsafe fn we_escape_dollar_signs() { - // CHECK: call void asm sideeffect alignstack inteldialect "banana$$:" - asm!(r"banana$:",) -} - -pub unsafe fn we_escape_escapes_too() { - // CHECK: call void asm sideeffect alignstack inteldialect "banana\{{(\\|5C)}}36:" - asm!(r"banana\36:",) -} diff --git a/tests/codegen/asm/sparc-clobbers.rs b/tests/codegen/asm/sparc-clobbers.rs deleted file mode 100644 index a71715ed94d..00000000000 --- a/tests/codegen/asm/sparc-clobbers.rs +++ /dev/null @@ -1,36 +0,0 @@ -//@ add-core-stubs -//@ revisions: sparc sparcv8plus sparc64 -//@[sparc] compile-flags: --target sparc-unknown-none-elf -//@[sparc] needs-llvm-components: sparc -//@[sparcv8plus] compile-flags: --target sparc-unknown-linux-gnu -//@[sparcv8plus] needs-llvm-components: sparc -//@[sparc64] compile-flags: --target sparc64-unknown-linux-gnu -//@[sparc64] needs-llvm-components: sparc - -#![crate_type = "rlib"] -#![feature(no_core, asm_experimental_arch)] -#![no_core] - -extern crate minicore; -use minicore::*; - -// CHECK-LABEL: @cc_clobber -// CHECK: call void asm sideeffect "", "~{icc},~{fcc0},~{fcc1},~{fcc2},~{fcc3}"() -#[no_mangle] -pub unsafe fn cc_clobber() { - asm!("", options(nostack, nomem)); -} - -// CHECK-LABEL: @no_clobber -// CHECK: call void asm sideeffect "", ""() -#[no_mangle] -pub unsafe fn no_clobber() { - asm!("", options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @y_clobber -// CHECK: call void asm sideeffect "", "~{y}"() -#[no_mangle] -pub unsafe fn y_clobber() { - asm!("", out("y") _, options(nostack, nomem, preserves_flags)); -} diff --git a/tests/codegen/asm/x86-clobber_abi.rs b/tests/codegen/asm/x86-clobber_abi.rs deleted file mode 100644 index 5b34b4e8ef3..00000000000 --- a/tests/codegen/asm/x86-clobber_abi.rs +++ /dev/null @@ -1,36 +0,0 @@ -//@ compile-flags: -Copt-level=3 -//@ only-x86_64 - -#![crate_type = "rlib"] - -use std::arch::asm; - -// CHECK-LABEL: @clobber_sysv64 -// CHECK: ={ax},={cx},={dx},={si},={di},={r8},={r9},={r10},={r11},={xmm0},={xmm1},={xmm2},={xmm3},={xmm4},={xmm5},={xmm6},={xmm7},={xmm8},={xmm9},={xmm10},={xmm11},={xmm12},={xmm13},={xmm14},={xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{k0},~{k1},~{k2},~{k3},~{k4},~{k5},~{k6},~{k7},~{st},~{st(1)},~{st(2)},~{st(3)},~{st(4)},~{st(5)},~{st(6)},~{st(7)},~{tmm0},~{tmm1},~{tmm2},~{tmm3},~{tmm4},~{tmm5},~{tmm6},~{tmm7},~{dirflag},~{fpsr},~{flags},~{memory} -#[no_mangle] -pub unsafe fn clobber_sysv64() { - asm!("", clobber_abi("sysv64")); -} - -// CHECK-LABEL: @clobber_win64 -// CHECK: ={ax},={cx},={dx},={r8},={r9},={r10},={r11},={xmm0},={xmm1},={xmm2},={xmm3},={xmm4},={xmm5},={xmm6},={xmm7},={xmm8},={xmm9},={xmm10},={xmm11},={xmm12},={xmm13},={xmm14},={xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{k0},~{k1},~{k2},~{k3},~{k4},~{k5},~{k6},~{k7},~{st},~{st(1)},~{st(2)},~{st(3)},~{st(4)},~{st(5)},~{st(6)},~{st(7)},~{tmm0},~{tmm1},~{tmm2},~{tmm3},~{tmm4},~{tmm5},~{tmm6},~{tmm7},~{dirflag},~{fpsr},~{flags},~{memory} -#[no_mangle] -pub unsafe fn clobber_win64() { - asm!("", clobber_abi("win64")); -} - -// CHECK-LABEL: @clobber_sysv64 -// CHECK: =&{dx},={ax},={cx},={si},={di},={r8},={r9},={r10},={r11},={xmm0},={xmm1},={xmm2},={xmm3},={xmm4},={xmm5},={xmm6},={xmm7},={xmm8},={xmm9},={xmm10},={xmm11},={xmm12},={xmm13},={xmm14},={xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{k0},~{k1},~{k2},~{k3},~{k4},~{k5},~{k6},~{k7},~{st},~{st(1)},~{st(2)},~{st(3)},~{st(4)},~{st(5)},~{st(6)},~{st(7)},~{tmm0},~{tmm1},~{tmm2},~{tmm3},~{tmm4},~{tmm5},~{tmm6},~{tmm7},~{dirflag},~{fpsr},~{flags},~{memory} -#[no_mangle] -pub unsafe fn clobber_sysv64_edx() { - let foo: i32; - asm!("", out("edx") foo, clobber_abi("sysv64")); -} - -// CHECK-LABEL: @clobber_win64 -// CHECK: =&{dx},={ax},={cx},={r8},={r9},={r10},={r11},={xmm0},={xmm1},={xmm2},={xmm3},={xmm4},={xmm5},={xmm6},={xmm7},={xmm8},={xmm9},={xmm10},={xmm11},={xmm12},={xmm13},={xmm14},={xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{k0},~{k1},~{k2},~{k3},~{k4},~{k5},~{k6},~{k7},~{st},~{st(1)},~{st(2)},~{st(3)},~{st(4)},~{st(5)},~{st(6)},~{st(7)},~{tmm0},~{tmm1},~{tmm2},~{tmm3},~{tmm4},~{tmm5},~{tmm6},~{tmm7},~{dirflag},~{fpsr},~{flags},~{memory} -#[no_mangle] -pub unsafe fn clobber_win64_edx() { - let foo: i32; - asm!("", out("edx") foo, clobber_abi("win64")); -} diff --git a/tests/codegen/asm/x86-clobbers.rs b/tests/codegen/asm/x86-clobbers.rs deleted file mode 100644 index 50163b646b2..00000000000 --- a/tests/codegen/asm/x86-clobbers.rs +++ /dev/null @@ -1,20 +0,0 @@ -//@ compile-flags: -Copt-level=3 -//@ only-x86_64 - -#![crate_type = "rlib"] - -use std::arch::asm; - -// CHECK-LABEL: @x87_clobber -// CHECK: ~{st},~{st(1)},~{st(2)},~{st(3)},~{st(4)},~{st(5)},~{st(6)},~{st(7)} -#[no_mangle] -pub unsafe fn x87_clobber() { - asm!("foo", out("st") _); -} - -// CHECK-LABEL: @mmx_clobber -// CHECK: ~{st},~{st(1)},~{st(2)},~{st(3)},~{st(4)},~{st(5)},~{st(6)},~{st(7)} -#[no_mangle] -pub unsafe fn mmx_clobber() { - asm!("bar", out("mm0") _, out("mm1") _); -} diff --git a/tests/codegen/asm/x86-target-clobbers.rs b/tests/codegen/asm/x86-target-clobbers.rs deleted file mode 100644 index 119372491ff..00000000000 --- a/tests/codegen/asm/x86-target-clobbers.rs +++ /dev/null @@ -1,29 +0,0 @@ -//@ only-x86_64 -//@ revisions: base avx512 -//@ [avx512]compile-flags: -C target-feature=+avx512f - -#![crate_type = "rlib"] - -use std::arch::asm; - -// CHECK-LABEL: @amx_clobber -// base: call void asm sideeffect inteldialect "", "~{tmm0}"() -#[no_mangle] -pub unsafe fn amx_clobber() { - asm!("", out("tmm0") _, options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @avx512_clobber -// base: call void asm sideeffect inteldialect "", "~{xmm31}"() -// avx512: call float asm sideeffect inteldialect "", "=&{xmm31}"() -#[no_mangle] -pub unsafe fn avx512_clobber() { - asm!("", out("zmm31") _, options(nostack, nomem, preserves_flags)); -} - -// CHECK-LABEL: @eax_clobber -// CHECK: call i32 asm sideeffect inteldialect "", "=&{ax}"() -#[no_mangle] -pub unsafe fn eax_clobber() { - asm!("", out("eax") _, options(nostack, nomem, preserves_flags)); -} |
