3
3
//@ [LIN] only-linux
4
4
//@ only-x86_64
5
5
//@ assembly-output: emit-asm
6
- //@ compile-flags: --crate-type=lib -O
6
+ //@ compile-flags: --crate-type=lib -Copt-level=3
7
7
8
8
use std:: arch:: x86_64:: __m128;
9
9
use std:: mem:: swap;
@@ -12,42 +12,42 @@ use std::mem::swap;
12
12
#[ no_mangle]
13
13
pub fn swap_i32 ( x : & mut i32 , y : & mut i32 ) {
14
14
// 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
19
19
swap ( x, y)
20
20
}
21
21
22
22
// CHECK-LABEL: swap_pair:
23
23
#[ no_mangle]
24
24
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
30
30
swap ( x, y)
31
31
}
32
32
33
33
// CHECK-LABEL: swap_str:
34
34
#[ no_mangle]
35
35
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
41
41
swap ( x, y)
42
42
}
43
43
44
44
// CHECK-LABEL: swap_simd:
45
45
#[ no_mangle]
46
46
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
52
52
swap ( x, y)
53
53
}
0 commit comments