76 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3; PR26294 5define 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 111; CHECK-NEXT: [[TMP0:%.*]] = add i8 [[L1]], -912; CHECK-NEXT: [[C1:%.*]] = icmp ult i8 [[TMP0]], -313; CHECK-NEXT: [[TMP1:%.*]] = add i8 [[L1]], -1314; CHECK-NEXT: [[C2:%.*]] = icmp ult i8 [[TMP1]], -315; CHECK-NEXT: [[A1:%.*]] = and i1 [[C1]], [[C2]]16; CHECK-NEXT: br i1 [[A1]], label [[INCOMPATIBLE:%.*]], label [[OKAY:%.*]]17; CHECK: okay:18; CHECK-NEXT: ret void19; CHECK: incompatible:20; CHECK-NEXT: ret void21;22entry:23 br label %bb24 25bb:26 %l1 = load i8, ptr %x, align 127 %s1 = sub i8 %l1, 628 %c1 = icmp ugt i8 %s1, 229 %s2 = sub i8 %l1, 1030 %c2 = icmp ugt i8 %s2, 231 %a1 = and i1 %c1, %c232 br i1 %a1, label %incompatible, label %okay33 34okay:35 ret void36 37incompatible:38 ret void39}40 41define 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 147; CHECK-NEXT: [[TMP0:%.*]] = add i8 [[L1]], -948; CHECK-NEXT: [[C1:%.*]] = icmp ult i8 [[TMP0]], -349; CHECK-NEXT: [[TMP1:%.*]] = add i8 [[L1]], -1350; CHECK-NEXT: [[C2:%.*]] = icmp ult i8 [[TMP1]], -351; CHECK-NEXT: [[A1:%.*]] = and i1 [[C1]], [[C2]]52; CHECK-NEXT: br i1 [[A1]], label [[INCOMPATIBLE:%.*]], label [[OKAY:%.*]]53; CHECK: okay:54; CHECK-NEXT: ret void55; CHECK: incompatible:56; CHECK-NEXT: ret void57;58entry:59 br label %bb60 61bb:62 %l1 = load i8, ptr %x, align 163 %s1 = sub i8 %l1, 664 %c1 = icmp ugt i8 %s1, 265 %s2 = sub i8 %l1, 1066 %c2 = icmp ugt i8 %s2, 267 %a1 = select i1 %c1, i1 %c2, i1 false68 br i1 %a1, label %incompatible, label %okay69 70okay:71 ret void72 73incompatible:74 ret void75}76