11// This is test for more optimal Ord implementation for integers.
22// See <https://github.com/rust-lang/rust/issues/63758> for more info.
33
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
77//@ compile-flags: -C opt-level=3
88
99#![ crate_type = "lib" ]
@@ -13,21 +13,50 @@ use std::cmp::Ordering;
1313// CHECK-LABEL: @cmp_signed
1414#[ no_mangle]
1515pub 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
2121 a. cmp ( & b)
2222}
2323
2424// CHECK-LABEL: @cmp_unsigned
2525#[ no_mangle]
2626pub 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
3261 a. cmp ( & b)
3362}
0 commit comments