[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / Thumb / cmp-fold.ll
bloba278e4321d030855c83f2b6f4cc46c1a6f274b04
1 ; RUN: llc -mtriple=thumbv6m-eabi -verify-machineinstrs < %s | FileCheck %s
3 ; CHECK-LABEL: subs:
4 ; CHECK: subs
5 ; CHECK-NEXT: b{{eq|ne}}
6 define i32 @subs(i32 %a, i32 %b) {
7   %c = sub i32 %a, %b
8   %d = icmp eq i32 %c, 0
9   br i1 %d, label %true, label %false
11 true:
12   ret i32 4
13 false:
14   ret i32 5
17 ; CHECK-LABEL: addsrr:
18 ; CHECK: adds
19 ; CHECK-NEXT: b{{eq|ne}}
20 define i32 @addsrr(i32 %a, i32 %b) {
21   %c = add i32 %a, %b
22   %d = icmp eq i32 %c, 0
23   br i1 %d, label %true, label %false
25 true:
26   ret i32 4
27 false:
28   ret i32 5
31 ; CHECK-LABEL: lslri:
32 ; CHECK: lsls
33 ; CHECK-NEXT: b{{eq|ne}}
34 define i32 @lslri(i32 %a, i32 %b) {
35   %c = shl i32 %a, 3
36   %d = icmp eq i32 %c, 0
37   br i1 %d, label %true, label %false
39 true:
40   ret i32 4
41 false:
42   ret i32 5
45 ; CHECK-LABEL: lslrr:
46 ; CHECK: lsls
47 ; CHECK-NEXT: b{{eq|ne}}
48 define i32 @lslrr(i32 %a, i32 %b) {
49   %c = shl i32 %a, %b
50   %d = icmp eq i32 %c, 0
51   br i1 %d, label %true, label %false
53 true:
54   ret i32 4
55 false:
56   ret i32 5