Skip to content

Commit b3464fa

Browse files
tests/assembly: make typed-swap test much less fragile
1 parent 5932b2f commit b3464fa

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

tests/assembly/x86_64-typed-swap.rs

+20-20
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//@ [LIN] only-linux
44
//@ only-x86_64
55
//@ assembly-output: emit-asm
6-
//@ compile-flags: --crate-type=lib -O
6+
//@ compile-flags: --crate-type=lib -Copt-level=3
77

88
use std::arch::x86_64::__m128;
99
use std::mem::swap;
@@ -12,42 +12,42 @@ use std::mem::swap;
1212
#[no_mangle]
1313
pub fn swap_i32(x: &mut i32, y: &mut i32) {
1414
// CHECK: movl (%[[ARG1:.+]]), %[[T1:.+]]
15-
// CHECK: movl (%[[ARG2:.+]]), %[[T2:.+]]
16-
// CHECK: movl %[[T2]], (%[[ARG1]])
17-
// CHECK: movl %[[T1]], (%[[ARG2]])
18-
// CHECK: retq
15+
// CHECK-NEXT: movl (%[[ARG2:.+]]), %[[T2:.+]]
16+
// CHECK-DAG: movl %[[T2]], (%[[ARG1]])
17+
// CHECK-DAG: movl %[[T1]], (%[[ARG2]])
18+
// CHECK-NEXT: retq
1919
swap(x, y)
2020
}
2121

2222
// CHECK-LABEL: swap_pair:
2323
#[no_mangle]
2424
pub fn swap_pair(x: &mut (i32, u32), y: &mut (i32, u32)) {
25-
// CHECK: movq (%[[ARG1]]), %[[T1:.+]]
26-
// CHECK: movq (%[[ARG2]]), %[[T2:.+]]
27-
// CHECK: movq %[[T2]], (%[[ARG1]])
28-
// CHECK: movq %[[T1]], (%[[ARG2]])
29-
// CHECK: retq
25+
// CHECK: movq (%[[ARG1:r..?]]), %[[T1:.+]]
26+
// CHECK-NEXT: movq (%[[ARG2:r..?]]), %[[T2:.+]]
27+
// CHECK-DAG: movq %[[T2]], (%[[ARG1]])
28+
// CHECK-DAG: movq %[[T1]], (%[[ARG2]])
29+
// CHECK-NEXT: retq
3030
swap(x, y)
3131
}
3232

3333
// CHECK-LABEL: swap_str:
3434
#[no_mangle]
3535
pub fn swap_str<'a>(x: &mut &'a str, y: &mut &'a str) {
36-
// CHECK: movups (%[[ARG1]]), %[[T1:xmm.]]
37-
// CHECK: movups (%[[ARG2]]), %[[T2:xmm.]]
38-
// CHECK: movups %[[T2]], (%[[ARG1]])
39-
// CHECK: movups %[[T1]], (%[[ARG2]])
40-
// CHECK: retq
36+
// CHECK: movups (%[[ARG1:r..?]]), %[[T1:xmm.]]
37+
// CHECK-NEXT: movups (%[[ARG2:r..?]]), %[[T2:xmm.]]
38+
// CHECK-DAG: movups %[[T2]], (%[[ARG1]])
39+
// CHECK-DAG: movups %[[T1]], (%[[ARG2]])
40+
// CHECK-NEXT: retq
4141
swap(x, y)
4242
}
4343

4444
// CHECK-LABEL: swap_simd:
4545
#[no_mangle]
4646
pub fn swap_simd(x: &mut __m128, y: &mut __m128) {
47-
// CHECK: movaps (%[[ARG1]]), %[[T1:xmm.]]
48-
// CHECK: movaps (%[[ARG2]]), %[[T2:xmm.]]
49-
// CHECK: movaps %[[T2]], (%[[ARG1]])
50-
// CHECK: movaps %[[T1]], (%[[ARG2]])
51-
// CHECK: retq
47+
// CHECK: movaps (%[[ARG1:r..?]]), %[[T1:xmm.]]
48+
// CHECK-NEXT: movaps (%[[ARG2:r..?]]), %[[T2:xmm.]]
49+
// CHECK-DAG: movaps %[[T2]], (%[[ARG1]])
50+
// CHECK-DAG: movaps %[[T1]], (%[[ARG2]])
51+
// CHECK-NEXT: retq
5252
swap(x, y)
5353
}

0 commit comments

Comments
 (0)