brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.2 KiB · d2504be Raw
293 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:    [[ADD_PTR_I:%.*]] = add i8 [[START:%.*]], 38; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i8 [[ADD_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:%.*]] = add 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:%.*]] = add 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:%.*]] = add 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:%.*]] = add 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  %add.ptr.i = add i8 %start, 331  %c.1 = icmp uge i8 %add.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 = add i8 %start, 141  %t.1 = icmp ult i8 %start.1, %high42  call void @use(i1 %t.1)43  %start.2 = add i8 %start, 244  %t.2 = icmp ult i8 %start.2, %high45  call void @use(i1 %t.2)46  %start.3 = add i8 %start, 347  %t.3 = icmp ult i8 %start.3, %high48  call void @use(i1 %t.3)49  %start.4 = add 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.sge.ult(i8 %start, i8 %low, i8 %high) {56; CHECK-LABEL: @test.not.sge.ult(57; CHECK-NEXT:  entry:58; CHECK-NEXT:    [[ADD_PTR_I:%.*]] = add i8 [[START:%.*]], 359; CHECK-NEXT:    [[C_1:%.*]] = icmp sge i8 [[ADD_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 slt i8 [[START]], [[HIGH]]65; CHECK-NEXT:    call void @use(i1 [[T_0]])66; CHECK-NEXT:    [[START_1:%.*]] = add i8 [[START]], 167; CHECK-NEXT:    [[T_1:%.*]] = icmp slt i8 [[START_1]], [[HIGH]]68; CHECK-NEXT:    call void @use(i1 [[T_1]])69; CHECK-NEXT:    [[START_2:%.*]] = add i8 [[START]], 270; CHECK-NEXT:    [[T_2:%.*]] = icmp slt i8 [[START_2]], [[HIGH]]71; CHECK-NEXT:    call void @use(i1 [[T_2]])72; CHECK-NEXT:    [[START_3:%.*]] = add i8 [[START]], 373; CHECK-NEXT:    [[T_3:%.*]] = icmp slt i8 [[START_3]], [[HIGH]]74; CHECK-NEXT:    call void @use(i1 [[T_3]])75; CHECK-NEXT:    [[START_4:%.*]] = add i8 [[START]], 476; CHECK-NEXT:    [[C_4:%.*]] = icmp slt i8 [[START_4]], [[HIGH]]77; CHECK-NEXT:    call void @use(i1 [[C_4]])78; CHECK-NEXT:    ret void79;80entry:81  %add.ptr.i = add i8 %start, 382  %c.1 = icmp sge i8 %add.ptr.i, %high83  br i1 %c.1, label %if.then, label %if.end84 85if.then:                                          ; preds = %entry86  ret void87 88if.end:                                           ; preds = %entry89  %t.0 = icmp slt i8 %start, %high90  call void @use(i1 %t.0)91  %start.1 = add i8 %start, 192  %t.1 = icmp slt i8 %start.1, %high93  call void @use(i1 %t.1)94  %start.2 = add i8 %start, 295  %t.2 = icmp slt i8 %start.2, %high96  call void @use(i1 %t.2)97  %start.3 = add i8 %start, 398  %t.3 = icmp slt i8 %start.3, %high99  call void @use(i1 %t.3)100  %start.4 = add i8 %start, 4101  %c.4 = icmp slt i8 %start.4, %high102  call void @use(i1 %c.4)103  ret void104}105 106define void @test.not.uge.ule(i8 %start, i8 %low, i8 %high) {107; CHECK-LABEL: @test.not.uge.ule(108; CHECK-NEXT:  entry:109; CHECK-NEXT:    [[ADD_PTR_I:%.*]] = add i8 [[START:%.*]], 3110; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i8 [[ADD_PTR_I]], [[HIGH:%.*]]111; CHECK-NEXT:    br i1 [[C_1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]112; CHECK:       if.then:113; CHECK-NEXT:    ret void114; CHECK:       if.end:115; CHECK-NEXT:    [[T_0:%.*]] = icmp ule i8 [[START]], [[HIGH]]116; CHECK-NEXT:    call void @use(i1 [[T_0]])117; CHECK-NEXT:    [[START_1:%.*]] = add i8 [[START]], 1118; CHECK-NEXT:    [[T_1:%.*]] = icmp ule i8 [[START_1]], [[HIGH]]119; CHECK-NEXT:    call void @use(i1 [[T_1]])120; CHECK-NEXT:    [[START_2:%.*]] = add i8 [[START]], 2121; CHECK-NEXT:    [[T_2:%.*]] = icmp ule i8 [[START_2]], [[HIGH]]122; CHECK-NEXT:    call void @use(i1 [[T_2]])123; CHECK-NEXT:    [[START_3:%.*]] = add i8 [[START]], 3124; CHECK-NEXT:    [[T_3:%.*]] = icmp ule i8 [[START_3]], [[HIGH]]125; CHECK-NEXT:    call void @use(i1 [[T_3]])126; CHECK-NEXT:    [[START_4:%.*]] = add i8 [[START]], 4127; CHECK-NEXT:    [[T_4:%.*]] = icmp ule i8 [[START_4]], [[HIGH]]128; CHECK-NEXT:    call void @use(i1 [[T_4]])129; CHECK-NEXT:    [[START_5:%.*]] = add i8 [[START]], 5130; CHECK-NEXT:    [[C_5:%.*]] = icmp ule i8 [[START_5]], [[HIGH]]131; CHECK-NEXT:    call void @use(i1 [[C_5]])132; CHECK-NEXT:    ret void133;134entry:135  %add.ptr.i = add i8 %start, 3136  %c.1 = icmp uge i8 %add.ptr.i, %high137  br i1 %c.1, label %if.then, label %if.end138 139if.then:                                          ; preds = %entry140  ret void141 142if.end:                                           ; preds = %entry143  %t.0 = icmp ule i8 %start, %high144  call void @use(i1 %t.0)145  %start.1 = add i8 %start, 1146  %t.1 = icmp ule i8 %start.1, %high147  call void @use(i1 %t.1)148  %start.2 = add i8 %start, 2149  %t.2 = icmp ule i8 %start.2, %high150  call void @use(i1 %t.2)151  %start.3 = add i8 %start, 3152  %t.3 = icmp ule i8 %start.3, %high153  call void @use(i1 %t.3)154  %start.4 = add i8 %start, 4155  %t.4 = icmp ule i8 %start.4, %high156  call void @use(i1 %t.4)157 158  %start.5 = add i8 %start, 5159  %c.5 = icmp ule i8 %start.5, %high160  call void @use(i1 %c.5)161 162  ret void163}164 165define void @test.not.uge.ugt(i8 %start, i8 %low, i8 %high) {166; CHECK-LABEL: @test.not.uge.ugt(167; CHECK-NEXT:  entry:168; CHECK-NEXT:    [[ADD_PTR_I:%.*]] = add i8 [[START:%.*]], 3169; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i8 [[ADD_PTR_I]], [[HIGH:%.*]]170; CHECK-NEXT:    br i1 [[C_1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]171; CHECK:       if.then:172; CHECK-NEXT:    ret void173; CHECK:       if.end:174; CHECK-NEXT:    [[F_0:%.*]] = icmp ugt i8 [[START]], [[HIGH]]175; CHECK-NEXT:    call void @use(i1 [[F_0]])176; CHECK-NEXT:    [[START_1:%.*]] = add i8 [[START]], 1177; CHECK-NEXT:    [[F_1:%.*]] = icmp ugt i8 [[START_1]], [[HIGH]]178; CHECK-NEXT:    call void @use(i1 [[F_1]])179; CHECK-NEXT:    [[START_2:%.*]] = add i8 [[START]], 2180; CHECK-NEXT:    [[F_2:%.*]] = icmp ugt i8 [[START_2]], [[HIGH]]181; CHECK-NEXT:    call void @use(i1 [[F_2]])182; CHECK-NEXT:    [[START_3:%.*]] = add i8 [[START]], 3183; CHECK-NEXT:    [[F_3:%.*]] = icmp ugt i8 [[START_3]], [[HIGH]]184; CHECK-NEXT:    call void @use(i1 [[F_3]])185; CHECK-NEXT:    [[START_4:%.*]] = add i8 [[START]], 4186; CHECK-NEXT:    [[F_4:%.*]] = icmp ugt i8 [[START_4]], [[HIGH]]187; CHECK-NEXT:    call void @use(i1 [[F_4]])188; CHECK-NEXT:    [[START_5:%.*]] = add i8 [[START]], 5189; CHECK-NEXT:    [[C_5:%.*]] = icmp ugt i8 [[START_5]], [[HIGH]]190; CHECK-NEXT:    call void @use(i1 [[C_5]])191; CHECK-NEXT:    ret void192;193entry:194  %add.ptr.i = add i8 %start, 3195  %c.1 = icmp uge i8 %add.ptr.i, %high196  br i1 %c.1, label %if.then, label %if.end197 198if.then:                                          ; preds = %entry199  ret void200 201if.end:                                           ; preds = %entry202  %f.0 = icmp ugt i8 %start, %high203  call void @use(i1 %f.0)204 205  %start.1 = add i8 %start, 1206  %f.1 = icmp ugt i8 %start.1, %high207  call void @use(i1 %f.1)208 209  %start.2 = add i8 %start, 2210  %f.2 = icmp ugt i8 %start.2, %high211  call void @use(i1 %f.2)212 213  %start.3 = add i8 %start, 3214  %f.3 = icmp ugt i8 %start.3, %high215  call void @use(i1 %f.3)216 217  %start.4 = add i8 %start, 4218  %f.4 = icmp ugt i8 %start.4, %high219  call void @use(i1 %f.4)220 221  %start.5 = add i8 %start, 5222  %c.5 = icmp ugt i8 %start.5, %high223  call void @use(i1 %c.5)224 225  ret void226}227 228define void @test.not.uge.uge(i8 %start, i8 %low, i8 %high) {229; CHECK-LABEL: @test.not.uge.uge(230; CHECK-NEXT:  entry:231; CHECK-NEXT:    [[ADD_PTR_I:%.*]] = add i8 [[START:%.*]], 3232; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i8 [[ADD_PTR_I]], [[HIGH:%.*]]233; CHECK-NEXT:    br i1 [[C_1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]234; CHECK:       if.then:235; CHECK-NEXT:    ret void236; CHECK:       if.end:237; CHECK-NEXT:    [[F_0:%.*]] = icmp ugt i8 [[START]], [[HIGH]]238; CHECK-NEXT:    call void @use(i1 [[F_0]])239; CHECK-NEXT:    [[START_1:%.*]] = add i8 [[START]], 1240; CHECK-NEXT:    [[F_1:%.*]] = icmp uge i8 [[START_1]], [[HIGH]]241; CHECK-NEXT:    call void @use(i1 [[F_1]])242; CHECK-NEXT:    [[START_2:%.*]] = add i8 [[START]], 2243; CHECK-NEXT:    [[F_2:%.*]] = icmp uge i8 [[START_2]], [[HIGH]]244; CHECK-NEXT:    call void @use(i1 [[F_2]])245; CHECK-NEXT:    [[START_3:%.*]] = add i8 [[START]], 3246; CHECK-NEXT:    [[F_3:%.*]] = icmp uge i8 [[START_3]], [[HIGH]]247; CHECK-NEXT:    call void @use(i1 [[F_3]])248; CHECK-NEXT:    [[START_4:%.*]] = add i8 [[START]], 4249; CHECK-NEXT:    [[C_4:%.*]] = icmp uge i8 [[START_4]], [[HIGH]]250; CHECK-NEXT:    call void @use(i1 [[C_4]])251; CHECK-NEXT:    [[START_5:%.*]] = add i8 [[START]], 5252; CHECK-NEXT:    [[C_5:%.*]] = icmp uge i8 [[START_5]], [[HIGH]]253; CHECK-NEXT:    call void @use(i1 [[C_5]])254; CHECK-NEXT:    ret void255;256entry:257  %add.ptr.i = add i8 %start, 3258  %c.1 = icmp uge i8 %add.ptr.i, %high259  br i1 %c.1, label %if.then, label %if.end260 261if.then:                                          ; preds = %entry262  ret void263 264if.end:                                           ; preds = %entry265  %f.0 = icmp ugt i8 %start, %high266  call void @use(i1 %f.0)267 268  %start.1 = add i8 %start, 1269  %f.1 = icmp uge i8 %start.1, %high270  call void @use(i1 %f.1)271 272  %start.2 = add i8 %start, 2273  %f.2 = icmp uge i8 %start.2, %high274  call void @use(i1 %f.2)275 276  %start.3 = add i8 %start, 3277  %f.3 = icmp uge i8 %start.3, %high278  call void @use(i1 %f.3)279 280  %start.4 = add i8 %start, 4281  %c.4 = icmp uge i8 %start.4, %high282  call void @use(i1 %c.4)283 284  %start.5 = add i8 %start, 5285  %c.5 = icmp uge i8 %start.5, %high286  call void @use(i1 %c.5)287 288  ret void289}290 291 292declare void @use(i1)293