brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · d80d170 Raw
265 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=instsimplify < %s -S | FileCheck %s3 4define i1 @phi_ugt_non_zero(i8 %x) {5; CHECK-LABEL: @phi_ugt_non_zero(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[X:%.*]], 328; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]9; CHECK:       T:10; CHECK-NEXT:    ret i1 false11; CHECK:       F:12; CHECK-NEXT:    br label [[T]]13;14entry:15  %cmp = icmp ugt i8 %x, 3216  br i1 %cmp, label %T, label %F17T:18  %v = phi i8 [ %x, %entry], [-1, %F]19  %r = icmp eq i8 %v, 020  ret i1 %r21F:22  br label %T23}24 25define i1 @phi_uge_non_zero(i8 %x) {26; CHECK-LABEL: @phi_uge_non_zero(27; CHECK-NEXT:  entry:28; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], 3229; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]30; CHECK:       T:31; CHECK-NEXT:    ret i1 false32; CHECK:       F:33; CHECK-NEXT:    br label [[T]]34;35entry:36  %cmp = icmp uge i8 %x, 3237  br i1 %cmp, label %T, label %F38T:39  %v = phi i8 [ %x, %entry], [-1, %F]40  %r = icmp eq i8 %v, 041  ret i1 %r42F:43  br label %T44}45 46define i1 @phi_ugt_non_zero_fail(i8 %x) {47; CHECK-LABEL: @phi_ugt_non_zero_fail(48; CHECK-NEXT:  entry:49; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[X:%.*]], 3250; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]51; CHECK:       T:52; CHECK-NEXT:    [[V:%.*]] = phi i8 [ [[X]], [[ENTRY:%.*]] ], [ 0, [[F]] ]53; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[V]], 054; CHECK-NEXT:    ret i1 [[R]]55; CHECK:       F:56; CHECK-NEXT:    br label [[T]]57;58entry:59  %cmp = icmp ugt i8 %x, 3260  br i1 %cmp, label %T, label %F61T:62  %v = phi i8 [ %x, %entry], [0, %F]63  %r = icmp eq i8 %v, 064  ret i1 %r65F:66  br label %T67}68 69define i1 @phi_ult_non_zero(i8 %x) {70; CHECK-LABEL: @phi_ult_non_zero(71; CHECK-NEXT:  entry:72; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], 12373; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]74; CHECK:       T:75; CHECK-NEXT:    br label [[F]]76; CHECK:       F:77; CHECK-NEXT:    ret i1 false78;79entry:80  %cmp = icmp ult i8 %x, 12381  br i1 %cmp, label %T, label %F82T:83  br label %F84F:85  %v = phi i8 [ %x, %entry], [-1, %T]86  %r = icmp eq i8 %v, 087  ret i1 %r88}89 90define i1 @phi_ule_non_zero(i8 %x) {91; CHECK-LABEL: @phi_ule_non_zero(92; CHECK-NEXT:  entry:93; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[X:%.*]], 12394; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]95; CHECK:       T:96; CHECK-NEXT:    br label [[F]]97; CHECK:       F:98; CHECK-NEXT:    ret i1 false99;100entry:101  %cmp = icmp ule i8 %x, 123102  br i1 %cmp, label %T, label %F103T:104  br label %F105F:106  %v = phi i8 [ %x, %entry], [-1, %T]107  %r = icmp eq i8 %v, 0108  ret i1 %r109}110 111define i1 @phi_ule_non_zero_fail_wrong_succ(i8 %x) {112; CHECK-LABEL: @phi_ule_non_zero_fail_wrong_succ(113; CHECK-NEXT:  entry:114; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[X:%.*]], 123115; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]116; CHECK:       T:117; CHECK-NEXT:    [[V:%.*]] = phi i8 [ [[X]], [[ENTRY:%.*]] ], [ -1, [[F]] ]118; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[V]], 0119; CHECK-NEXT:    ret i1 [[R]]120; CHECK:       F:121; CHECK-NEXT:    br label [[T]]122;123entry:124  %cmp = icmp ule i8 %x, 123125  br i1 %cmp, label %T, label %F126T:127  %v = phi i8 [ %x, %entry], [-1, %F]128  %r = icmp eq i8 %v, 0129  ret i1 %r130F:131  br label %T132}133 134define i1 @phi_ult_non_zero_fail(i8 %x) {135; CHECK-LABEL: @phi_ult_non_zero_fail(136; CHECK-NEXT:  entry:137; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], 123138; CHECK-NEXT:    [[X2:%.*]] = add i8 [[X]], [[X]]139; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]140; CHECK:       T:141; CHECK-NEXT:    br label [[F]]142; CHECK:       F:143; CHECK-NEXT:    [[V:%.*]] = phi i8 [ [[X2]], [[ENTRY:%.*]] ], [ -1, [[T]] ]144; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[V]], 0145; CHECK-NEXT:    ret i1 [[R]]146;147entry:148  %cmp = icmp ult i8 %x, 123149  %x2 = add i8 %x, %x150  br i1 %cmp, label %T, label %F151T:152  br label %F153F:154  %v = phi i8 [ %x2, %entry], [-1, %T]155  %r = icmp eq i8 %v, 0156  ret i1 %r157}158 159define i1 @phi_ne_non_zero(i8 %x) {160; CHECK-LABEL: @phi_ne_non_zero(161; CHECK-NEXT:  entry:162; CHECK-NEXT:    [[CMP:%.*]] = icmp ne i8 [[X:%.*]], 0163; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]164; CHECK:       T:165; CHECK-NEXT:    ret i1 false166; CHECK:       F:167; CHECK-NEXT:    br label [[T]]168;169entry:170  %cmp = icmp ne i8 %x, 0171  br i1 %cmp, label %T, label %F172T:173  %v = phi i8 [ %x, %entry], [-1, %F]174  %r = icmp eq i8 %v, 0175  ret i1 %r176F:177  br label %T178}179 180define i1 @phi_eq_non_zero(i8 %x) {181; CHECK-LABEL: @phi_eq_non_zero(182; CHECK-NEXT:  entry:183; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i8 [[X:%.*]], 44184; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]185; CHECK:       T:186; CHECK-NEXT:    ret i1 false187; CHECK:       F:188; CHECK-NEXT:    br label [[T]]189;190entry:191  %cmp = icmp eq i8 %x, 44192  br i1 %cmp, label %T, label %F193T:194  %v = phi i8 [ %x, %entry], [-1, %F]195  %r = icmp eq i8 %v, 0196  ret i1 %r197F:198  br label %T199}200 201define i1 @phi_eq_non_zero2(i8 %x) {202; CHECK-LABEL: @phi_eq_non_zero2(203; CHECK-NEXT:  entry:204; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i8 [[X:%.*]], 0205; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]206; CHECK:       T:207; CHECK-NEXT:    br label [[F]]208; CHECK:       F:209; CHECK-NEXT:    ret i1 false210;211entry:212  %cmp = icmp eq i8 %x, 0213  br i1 %cmp, label %T, label %F214T:215  br label %F216F:217  %v = phi i8 [ %x, %entry], [-1, %T]218  %r = icmp eq i8 %v, 0219  ret i1 %r220}221 222define i1 @phi_sgt_non_zero(i8 %x) {223; CHECK-LABEL: @phi_sgt_non_zero(224; CHECK-NEXT:  entry:225; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], 1226; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]227; CHECK:       T:228; CHECK-NEXT:    ret i1 false229; CHECK:       F:230; CHECK-NEXT:    br label [[T]]231;232entry:233  %cmp = icmp sgt i8 %x, 1234  br i1 %cmp, label %T, label %F235T:236  %v = phi i8 [ %x, %entry], [-1, %F]237  %r = icmp eq i8 %v, 0238  ret i1 %r239F:240  br label %T241}242 243define i1 @phi_sgt_non_zero_fail(i8 %x) {244; CHECK-LABEL: @phi_sgt_non_zero_fail(245; CHECK-NEXT:  entry:246; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], -1247; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]248; CHECK:       T:249; CHECK-NEXT:    [[V:%.*]] = phi i8 [ [[X]], [[ENTRY:%.*]] ], [ -1, [[F]] ]250; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[V]], 0251; CHECK-NEXT:    ret i1 [[R]]252; CHECK:       F:253; CHECK-NEXT:    br label [[T]]254;255entry:256  %cmp = icmp sgt i8 %x, -1257  br i1 %cmp, label %T, label %F258T:259  %v = phi i8 [ %x, %entry], [-1, %F]260  %r = icmp eq i8 %v, 0261  ret i1 %r262F:263  br label %T264}265