Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / InstCombine / 2008-08-05-And.ll
blob1ab49007eedf48bcb9e875f61980498060535758
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=instcombine -S | FileCheck %s
3 ; PR2629
5 define void @f(ptr %x) nounwind  {
6 ; CHECK-LABEL: @f(
7 ; CHECK-NEXT:  entry:
8 ; CHECK-NEXT:    br label [[BB:%.*]]
9 ; CHECK:       bb:
10 ; CHECK-NEXT:    [[L1:%.*]] = load i8, ptr [[X:%.*]], align 1
11 ; CHECK-NEXT:    [[TMP0:%.*]] = add i8 [[L1]], -9
12 ; CHECK-NEXT:    [[C1:%.*]] = icmp ult i8 [[TMP0]], -3
13 ; CHECK-NEXT:    [[TMP1:%.*]] = add i8 [[L1]], -13
14 ; CHECK-NEXT:    [[C2:%.*]] = icmp ult i8 [[TMP1]], -3
15 ; CHECK-NEXT:    [[A1:%.*]] = and i1 [[C1]], [[C2]]
16 ; CHECK-NEXT:    br i1 [[A1]], label [[INCOMPATIBLE:%.*]], label [[OKAY:%.*]]
17 ; CHECK:       okay:
18 ; CHECK-NEXT:    ret void
19 ; CHECK:       incompatible:
20 ; CHECK-NEXT:    ret void
22 entry:
23   br label %bb
25 bb:
26   %l1 = load i8, ptr %x, align 1
27   %s1 = sub i8 %l1, 6
28   %c1 = icmp ugt i8 %s1, 2
29   %s2 = sub i8 %l1, 10
30   %c2 = icmp ugt i8 %s2, 2
31   %a1 = and i1 %c1, %c2
32   br i1 %a1, label %incompatible, label %okay
34 okay:
35   ret void
37 incompatible:
38   ret void
41 define void @f_logical(ptr %x) nounwind  {
42 ; CHECK-LABEL: @f_logical(
43 ; CHECK-NEXT:  entry:
44 ; CHECK-NEXT:    br label [[BB:%.*]]
45 ; CHECK:       bb:
46 ; CHECK-NEXT:    [[L1:%.*]] = load i8, ptr [[X:%.*]], align 1
47 ; CHECK-NEXT:    [[TMP0:%.*]] = add i8 [[L1]], -9
48 ; CHECK-NEXT:    [[C1:%.*]] = icmp ult i8 [[TMP0]], -3
49 ; CHECK-NEXT:    [[TMP1:%.*]] = add i8 [[L1]], -13
50 ; CHECK-NEXT:    [[C2:%.*]] = icmp ult i8 [[TMP1]], -3
51 ; CHECK-NEXT:    [[A1:%.*]] = and i1 [[C1]], [[C2]]
52 ; CHECK-NEXT:    br i1 [[A1]], label [[INCOMPATIBLE:%.*]], label [[OKAY:%.*]]
53 ; CHECK:       okay:
54 ; CHECK-NEXT:    ret void
55 ; CHECK:       incompatible:
56 ; CHECK-NEXT:    ret void
58 entry:
59   br label %bb
61 bb:
62   %l1 = load i8, ptr %x, align 1
63   %s1 = sub i8 %l1, 6
64   %c1 = icmp ugt i8 %s1, 2
65   %s2 = sub i8 %l1, 10
66   %c2 = icmp ugt i8 %s2, 2
67   %a1 = select i1 %c1, i1 %c2, i1 false
68   br i1 %a1, label %incompatible, label %okay
70 okay:
71   ret void
73 incompatible:
74   ret void