brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.4 KiB · 78143dc Raw
242 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=constraint-elimination -S %s | FileCheck %s3 4define void @test.not.uge.ult(i8 %start, i8 %low, i8 %high) {5; CHECK-LABEL: @test.not.uge.ult(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    [[SUB_PTR_I:%.*]] = sub i8 [[START:%.*]], 38; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i8 [[SUB_PTR_I]], [[HIGH:%.*]]9; CHECK-NEXT:    br i1 [[C_1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]10; CHECK:       if.then:11; CHECK-NEXT:    ret void12; CHECK:       if.end:13; CHECK-NEXT:    [[T_0:%.*]] = icmp ult i8 [[START]], [[HIGH]]14; CHECK-NEXT:    call void @use(i1 [[T_0]])15; CHECK-NEXT:    [[START_1:%.*]] = sub i8 [[START]], 116; CHECK-NEXT:    [[T_1:%.*]] = icmp ult i8 [[START_1]], [[HIGH]]17; CHECK-NEXT:    call void @use(i1 [[T_1]])18; CHECK-NEXT:    [[START_2:%.*]] = sub i8 [[START]], 219; CHECK-NEXT:    [[T_2:%.*]] = icmp ult i8 [[START_2]], [[HIGH]]20; CHECK-NEXT:    call void @use(i1 [[T_2]])21; CHECK-NEXT:    [[START_3:%.*]] = sub i8 [[START]], 322; CHECK-NEXT:    [[T_3:%.*]] = icmp ult i8 [[START_3]], [[HIGH]]23; CHECK-NEXT:    call void @use(i1 [[T_3]])24; CHECK-NEXT:    [[START_4:%.*]] = sub i8 [[START]], 425; CHECK-NEXT:    [[C_4:%.*]] = icmp ult i8 [[START_4]], [[HIGH]]26; CHECK-NEXT:    call void @use(i1 [[C_4]])27; CHECK-NEXT:    ret void28;29entry:30  %sub.ptr.i = sub i8 %start, 331  %c.1 = icmp uge i8 %sub.ptr.i, %high32  br i1 %c.1, label %if.then, label %if.end33 34if.then:                                          ; preds = %entry35  ret void36 37if.end:                                           ; preds = %entry38  %t.0 = icmp ult i8 %start, %high39  call void @use(i1 %t.0)40  %start.1 = sub i8 %start, 141  %t.1 = icmp ult i8 %start.1, %high42  call void @use(i1 %t.1)43  %start.2 = sub i8 %start, 244  %t.2 = icmp ult i8 %start.2, %high45  call void @use(i1 %t.2)46  %start.3 = sub i8 %start, 347  %t.3 = icmp ult i8 %start.3, %high48  call void @use(i1 %t.3)49  %start.4 = sub i8 %start, 450  %c.4 = icmp ult i8 %start.4, %high51  call void @use(i1 %c.4)52  ret void53}54 55define void @test.not.uge.ule(i8 %start, i8 %low, i8 %high) {56; CHECK-LABEL: @test.not.uge.ule(57; CHECK-NEXT:  entry:58; CHECK-NEXT:    [[SUB_PTR_I:%.*]] = sub i8 [[START:%.*]], 359; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i8 [[SUB_PTR_I]], [[HIGH:%.*]]60; CHECK-NEXT:    br i1 [[C_1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]61; CHECK:       if.then:62; CHECK-NEXT:    ret void63; CHECK:       if.end:64; CHECK-NEXT:    [[T_0:%.*]] = icmp ule i8 [[START]], [[HIGH]]65; CHECK-NEXT:    call void @use(i1 [[T_0]])66; CHECK-NEXT:    [[START_1:%.*]] = sub i8 [[START]], 167; CHECK-NEXT:    [[T_1:%.*]] = icmp ule i8 [[START_1]], [[HIGH]]68; CHECK-NEXT:    call void @use(i1 [[T_1]])69; CHECK-NEXT:    [[START_2:%.*]] = sub i8 [[START]], 270; CHECK-NEXT:    [[T_2:%.*]] = icmp ule i8 [[START_2]], [[HIGH]]71; CHECK-NEXT:    call void @use(i1 [[T_2]])72; CHECK-NEXT:    [[START_3:%.*]] = sub i8 [[START]], 373; CHECK-NEXT:    [[T_3:%.*]] = icmp ule i8 [[START_3]], [[HIGH]]74; CHECK-NEXT:    call void @use(i1 [[T_3]])75; CHECK-NEXT:    [[START_4:%.*]] = sub i8 [[START]], 476; CHECK-NEXT:    [[T_4:%.*]] = icmp ule i8 [[START_4]], [[HIGH]]77; CHECK-NEXT:    call void @use(i1 [[T_4]])78; CHECK-NEXT:    [[START_5:%.*]] = sub i8 [[START]], 579; CHECK-NEXT:    [[C_5:%.*]] = icmp ule i8 [[START_5]], [[HIGH]]80; CHECK-NEXT:    call void @use(i1 [[C_5]])81; CHECK-NEXT:    ret void82;83entry:84  %sub.ptr.i = sub i8 %start, 385  %c.1 = icmp uge i8 %sub.ptr.i, %high86  br i1 %c.1, label %if.then, label %if.end87 88if.then:                                          ; preds = %entry89  ret void90 91if.end:                                           ; preds = %entry92  %t.0 = icmp ule i8 %start, %high93  call void @use(i1 %t.0)94  %start.1 = sub i8 %start, 195  %t.1 = icmp ule i8 %start.1, %high96  call void @use(i1 %t.1)97  %start.2 = sub i8 %start, 298  %t.2 = icmp ule i8 %start.2, %high99  call void @use(i1 %t.2)100  %start.3 = sub i8 %start, 3101  %t.3 = icmp ule i8 %start.3, %high102  call void @use(i1 %t.3)103  %start.4 = sub i8 %start, 4104  %t.4 = icmp ule i8 %start.4, %high105  call void @use(i1 %t.4)106 107  %start.5 = sub i8 %start, 5108  %c.5 = icmp ule i8 %start.5, %high109  call void @use(i1 %c.5)110 111  ret void112}113 114define void @test.not.uge.ugt(i8 %start, i8 %low, i8 %high) {115; CHECK-LABEL: @test.not.uge.ugt(116; CHECK-NEXT:  entry:117; CHECK-NEXT:    [[SUB_PTR_I:%.*]] = sub i8 [[START:%.*]], 3118; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i8 [[SUB_PTR_I]], [[HIGH:%.*]]119; CHECK-NEXT:    br i1 [[C_1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]120; CHECK:       if.then:121; CHECK-NEXT:    ret void122; CHECK:       if.end:123; CHECK-NEXT:    [[F_0:%.*]] = icmp ugt i8 [[START]], [[HIGH]]124; CHECK-NEXT:    call void @use(i1 [[F_0]])125; CHECK-NEXT:    [[START_1:%.*]] = sub i8 [[START]], 1126; CHECK-NEXT:    [[F_1:%.*]] = icmp ugt i8 [[START_1]], [[HIGH]]127; CHECK-NEXT:    call void @use(i1 [[F_1]])128; CHECK-NEXT:    [[START_2:%.*]] = sub i8 [[START]], 2129; CHECK-NEXT:    [[F_2:%.*]] = icmp ugt i8 [[START_2]], [[HIGH]]130; CHECK-NEXT:    call void @use(i1 [[F_2]])131; CHECK-NEXT:    [[START_3:%.*]] = sub i8 [[START]], 3132; CHECK-NEXT:    [[F_3:%.*]] = icmp ugt i8 [[START_3]], [[HIGH]]133; CHECK-NEXT:    call void @use(i1 [[F_3]])134; CHECK-NEXT:    [[START_4:%.*]] = sub i8 [[START]], 4135; CHECK-NEXT:    [[F_4:%.*]] = icmp ugt i8 [[START_4]], [[HIGH]]136; CHECK-NEXT:    call void @use(i1 [[F_4]])137; CHECK-NEXT:    [[START_5:%.*]] = sub i8 [[START]], 5138; CHECK-NEXT:    [[C_5:%.*]] = icmp ugt i8 [[START_5]], [[HIGH]]139; CHECK-NEXT:    call void @use(i1 [[C_5]])140; CHECK-NEXT:    ret void141;142entry:143  %sub.ptr.i = sub i8 %start, 3144  %c.1 = icmp uge i8 %sub.ptr.i, %high145  br i1 %c.1, label %if.then, label %if.end146 147if.then:                                          ; preds = %entry148  ret void149 150if.end:                                           ; preds = %entry151  %f.0 = icmp ugt i8 %start, %high152  call void @use(i1 %f.0)153 154  %start.1 = sub i8 %start, 1155  %f.1 = icmp ugt i8 %start.1, %high156  call void @use(i1 %f.1)157 158  %start.2 = sub i8 %start, 2159  %f.2 = icmp ugt i8 %start.2, %high160  call void @use(i1 %f.2)161 162  %start.3 = sub i8 %start, 3163  %f.3 = icmp ugt i8 %start.3, %high164  call void @use(i1 %f.3)165 166  %start.4 = sub i8 %start, 4167  %f.4 = icmp ugt i8 %start.4, %high168  call void @use(i1 %f.4)169 170  %start.5 = sub i8 %start, 5171  %c.5 = icmp ugt i8 %start.5, %high172  call void @use(i1 %c.5)173 174  ret void175}176 177define void @test.not.uge.uge(i8 %start, i8 %low, i8 %high) {178; CHECK-LABEL: @test.not.uge.uge(179; CHECK-NEXT:  entry:180; CHECK-NEXT:    [[SUB_PTR_I:%.*]] = sub i8 [[START:%.*]], 3181; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i8 [[SUB_PTR_I]], [[HIGH:%.*]]182; CHECK-NEXT:    br i1 [[C_1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]183; CHECK:       if.then:184; CHECK-NEXT:    ret void185; CHECK:       if.end:186; CHECK-NEXT:    [[F_0:%.*]] = icmp ugt i8 [[START]], [[HIGH]]187; CHECK-NEXT:    call void @use(i1 [[F_0]])188; CHECK-NEXT:    [[START_1:%.*]] = sub i8 [[START]], 1189; CHECK-NEXT:    [[F_1:%.*]] = icmp uge i8 [[START_1]], [[HIGH]]190; CHECK-NEXT:    call void @use(i1 [[F_1]])191; CHECK-NEXT:    [[START_2:%.*]] = sub i8 [[START]], 2192; CHECK-NEXT:    [[F_2:%.*]] = icmp uge i8 [[START_2]], [[HIGH]]193; CHECK-NEXT:    call void @use(i1 [[F_2]])194; CHECK-NEXT:    [[START_3:%.*]] = sub i8 [[START]], 3195; CHECK-NEXT:    [[F_3:%.*]] = icmp uge i8 [[START_3]], [[HIGH]]196; CHECK-NEXT:    call void @use(i1 [[F_3]])197; CHECK-NEXT:    [[START_4:%.*]] = sub i8 [[START]], 4198; CHECK-NEXT:    [[C_4:%.*]] = icmp uge i8 [[START_4]], [[HIGH]]199; CHECK-NEXT:    call void @use(i1 [[C_4]])200; CHECK-NEXT:    [[START_5:%.*]] = sub i8 [[START]], 5201; CHECK-NEXT:    [[C_5:%.*]] = icmp uge i8 [[START_5]], [[HIGH]]202; CHECK-NEXT:    call void @use(i1 [[C_5]])203; CHECK-NEXT:    ret void204;205entry:206  %sub.ptr.i = sub i8 %start, 3207  %c.1 = icmp uge i8 %sub.ptr.i, %high208  br i1 %c.1, label %if.then, label %if.end209 210if.then:                                          ; preds = %entry211  ret void212 213if.end:                                           ; preds = %entry214  %f.0 = icmp ugt i8 %start, %high215  call void @use(i1 %f.0)216 217  %start.1 = sub i8 %start, 1218  %f.1 = icmp uge i8 %start.1, %high219  call void @use(i1 %f.1)220 221  %start.2 = sub i8 %start, 2222  %f.2 = icmp uge i8 %start.2, %high223  call void @use(i1 %f.2)224 225  %start.3 = sub i8 %start, 3226  %f.3 = icmp uge i8 %start.3, %high227  call void @use(i1 %f.3)228 229  %start.4 = sub i8 %start, 4230  %c.4 = icmp uge i8 %start.4, %high231  call void @use(i1 %c.4)232 233  %start.5 = sub i8 %start, 5234  %c.5 = icmp uge i8 %start.5, %high235  call void @use(i1 %c.5)236 237  ret void238}239 240 241declare void @use(i1)242