1
- //@ revisions: DEBUG OPTIM
1
+ //@ revisions: DEBUG LLVM-PRE-20-OPTIM LLVM-20- OPTIM
2
2
//@ [DEBUG] compile-flags: -C opt-level=0
3
- //@ [OPTIM] compile-flags: -C opt-level=3
3
+ //@ [LLVM-PRE-20-OPTIM] compile-flags: -C opt-level=3
4
+ //@ [LLVM-PRE-20-OPTIM] ignore-llvm-version: 20 - 99
5
+ //@ [LLVM-20-OPTIM] compile-flags: -C opt-level=3
6
+ //@ [LLVM-20-OPTIM] min-llvm-version: 20
4
7
//@ assembly-output: emit-asm
5
8
//@ compile-flags: --crate-type=lib -C llvm-args=-x86-asm-syntax=intel
6
9
//@ only-x86_64
@@ -21,12 +24,18 @@ pub fn signed_cmp(a: i16, b: i16) -> std::cmp::Ordering {
21
24
// DEBUG: and
22
25
// DEBUG: sub
23
26
24
- // OPTIM: xor
25
- // OPTIM: cmp
26
- // OPTIM: setne
27
- // OPTIM: mov
28
- // OPTIM: cmovge
29
- // OPTIM: ret
27
+ // LLVM-PRE-20-OPTIM: xor
28
+ // LLVM-PRE-20-OPTIM: cmp
29
+ // LLVM-PRE-20-OPTIM: setne
30
+ // LLVM-PRE-20-OPTIM: mov
31
+ // LLVM-PRE-20-OPTIM: cmovge
32
+ // LLVM-PRE-20-OPTIM: ret
33
+ //
34
+ // LLVM-20-OPTIM: cmp
35
+ // LLVM-20-OPTIM: setl
36
+ // LLVM-20-OPTIM: setg
37
+ // LLVM-20-OPTIM: sub
38
+ // LLVM-20-OPTIM: ret
30
39
three_way_compare ( a, b)
31
40
}
32
41
@@ -41,11 +50,16 @@ pub fn unsigned_cmp(a: u16, b: u16) -> std::cmp::Ordering {
41
50
// DEBUG: and
42
51
// DEBUG: sub
43
52
44
- // OPTIM: xor
45
- // OPTIM: cmp
46
- // OPTIM: setne
47
- // OPTIM: mov
48
- // OPTIM: cmovae
49
- // OPTIM: ret
53
+ // LLVM-PRE-20-OPTIM: xor
54
+ // LLVM-PRE-20-OPTIM: cmp
55
+ // LLVM-PRE-20-OPTIM: setne
56
+ // LLVM-PRE-20-OPTIM: mov
57
+ // LLVM-PRE-20-OPTIM: cmovae
58
+ // LLVM-PRE-20-OPTIM: ret
59
+ //
60
+ // LLVM-20-OPTIM: cmp
61
+ // LLVM-20-OPTIM: seta
62
+ // LLVM-20-OPTIM: sbb
63
+ // LLVM-20-OPTIM: ret
50
64
three_way_compare ( a, b)
51
65
}
0 commit comments