1
1
// This is test for more optimal Ord implementation for integers.
2
2
// See <https://github.com/rust-lang/rust/issues/63758> for more info.
3
3
4
- //@ revisions: llvm-pre-20 llvm-20
5
- //@ [llvm-20 ] min-llvm-version: 20
6
- //@ [llvm-pre-20 ] max-llvm-major-version: 19
4
+ //@ revisions: llvm-pre-19 llvm-19
5
+ //@ [llvm-19 ] min-llvm-version: 19
6
+ //@ [llvm-pre-19 ] max-llvm-major-version: 18
7
7
//@ compile-flags: -C opt-level=3
8
8
9
9
#![ crate_type = "lib" ]
@@ -13,21 +13,50 @@ use std::cmp::Ordering;
13
13
// CHECK-LABEL: @cmp_signed
14
14
#[ no_mangle]
15
15
pub fn cmp_signed ( a : i64 , b : i64 ) -> Ordering {
16
- // llvm-20: @llvm.scmp.i8.i64
17
- // llvm-pre-20 : icmp slt
18
- // llvm-pre-20 : icmp ne
19
- // llvm-pre-20 : zext i1
20
- // llvm-pre-20 : select i1
16
+ // llvm-19: call{{.*}} i8 @llvm.scmp.i8.i64
17
+ // llvm-pre-19 : icmp slt
18
+ // llvm-pre-19 : icmp ne
19
+ // llvm-pre-19 : zext i1
20
+ // llvm-pre-19 : select i1
21
21
a. cmp ( & b)
22
22
}
23
23
24
24
// CHECK-LABEL: @cmp_unsigned
25
25
#[ no_mangle]
26
26
pub fn cmp_unsigned ( a : u32 , b : u32 ) -> Ordering {
27
- // llvm-20: @llvm.ucmp.i8.i32
28
- // llvm-pre-20: icmp ult
29
- // llvm-pre-20: icmp ne
30
- // llvm-pre-20: zext i1
31
- // llvm-pre-20: select i1
27
+ // llvm-19: call{{.*}} i8 @llvm.ucmp.i8.i32
28
+ // llvm-pre-19: icmp ult
29
+ // llvm-pre-19: icmp ne
30
+ // llvm-pre-19: zext i1
31
+ // llvm-pre-19: select i1
32
+ a. cmp ( & b)
33
+ }
34
+
35
+ // CHECK-LABEL: @cmp_char
36
+ #[ no_mangle]
37
+ pub fn cmp_char ( a : char , b : char ) -> Ordering {
38
+ // llvm-19: call{{.*}} i8 @llvm.ucmp.i8.i32
39
+ // llvm-pre-19: icmp ult
40
+ // llvm-pre-19: icmp ne
41
+ // llvm-pre-19: zext i1
42
+ // llvm-pre-19: select i1
43
+ a. cmp ( & b)
44
+ }
45
+
46
+ // CHECK-LABEL: @cmp_tuple
47
+ #[ no_mangle]
48
+ pub fn cmp_tuple ( a : ( i16 , u16 ) , b : ( i16 , u16 ) ) -> Ordering {
49
+ // llvm-19-DAG: call{{.*}} i8 @llvm.ucmp.i8.i16
50
+ // llvm-19-DAG: call{{.*}} i8 @llvm.scmp.i8.i16
51
+ // llvm-19: select i1
52
+ // llvm-pre-19: icmp slt
53
+ // llvm-pre-19: icmp ne
54
+ // llvm-pre-19: zext i1
55
+ // llvm-pre-19: select i1
56
+ // llvm-pre-19: icmp ult
57
+ // llvm-pre-19: icmp ne
58
+ // llvm-pre-19: zext i1
59
+ // llvm-pre-19: select i1
60
+ // llvm-pre-19: select i1
32
61
a. cmp ( & b)
33
62
}
0 commit comments