1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -passes=constraint-elimination -S %s | FileCheck --check-prefixes=COMMON,SIMP %s 3; RUN: opt -passes=constraint-elimination -constraint-elimination-max-rows=9 -S %s | FileCheck --check-prefixes=COMMON,SIMP %s 4; RUN: opt -passes=constraint-elimination -constraint-elimination-max-rows=8 -S %s | FileCheck --check-prefixes=COMMON,NOSIMP %s 5 6 7define i1 @test_max_row_limit(i32 %l0, i32 %l1, i32 %l2, i32 %l3, i32 %l4) { 8; SIMP-LABEL: @test_max_row_limit( 9; SIMP-NEXT: bb0: 10; SIMP-NEXT: [[C0:%.*]] = icmp uge i32 [[L0:%.*]], 100 11; SIMP-NEXT: br i1 [[C0]], label [[BB1:%.*]], label [[EXIT:%.*]] 12; SIMP: bb1: 13; SIMP-NEXT: [[C1:%.*]] = icmp uge i32 [[L1:%.*]], 100 14; SIMP-NEXT: br i1 [[C1]], label [[BB2:%.*]], label [[EXIT]] 15; SIMP: bb2: 16; SIMP-NEXT: [[C2:%.*]] = icmp uge i32 [[L2:%.*]], 100 17; SIMP-NEXT: br i1 [[C2]], label [[BB3:%.*]], label [[EXIT]] 18; SIMP: bb3: 19; SIMP-NEXT: [[C3:%.*]] = icmp uge i32 [[L3:%.*]], 100 20; SIMP-NEXT: br i1 [[C3]], label [[BB4:%.*]], label [[EXIT]] 21; SIMP: bb4: 22; SIMP-NEXT: [[C4:%.*]] = icmp uge i32 [[L4:%.*]], 100 23; SIMP-NEXT: br i1 [[C4]], label [[BB5:%.*]], label [[EXIT]] 24; SIMP: bb5: 25; SIMP-NEXT: ret i1 true 26; SIMP: exit: 27; SIMP-NEXT: ret i1 false 28; 29; NOSIMP-LABEL: @test_max_row_limit( 30; NOSIMP-NEXT: bb0: 31; NOSIMP-NEXT: [[C0:%.*]] = icmp uge i32 [[L0:%.*]], 100 32; NOSIMP-NEXT: br i1 [[C0]], label [[BB1:%.*]], label [[EXIT:%.*]] 33; NOSIMP: bb1: 34; NOSIMP-NEXT: [[C1:%.*]] = icmp uge i32 [[L1:%.*]], 100 35; NOSIMP-NEXT: br i1 [[C1]], label [[BB2:%.*]], label [[EXIT]] 36; NOSIMP: bb2: 37; NOSIMP-NEXT: [[C2:%.*]] = icmp uge i32 [[L2:%.*]], 100 38; NOSIMP-NEXT: br i1 [[C2]], label [[BB3:%.*]], label [[EXIT]] 39; NOSIMP: bb3: 40; NOSIMP-NEXT: [[C3:%.*]] = icmp uge i32 [[L3:%.*]], 100 41; NOSIMP-NEXT: br i1 [[C3]], label [[BB4:%.*]], label [[EXIT]] 42; NOSIMP: bb4: 43; NOSIMP-NEXT: [[C4:%.*]] = icmp uge i32 [[L4:%.*]], 100 44; NOSIMP-NEXT: br i1 [[C4]], label [[BB5:%.*]], label [[EXIT]] 45; NOSIMP: bb5: 46; NOSIMP-NEXT: [[C5:%.*]] = icmp uge i32 [[L4]], 100 47; NOSIMP-NEXT: ret i1 [[C5]] 48; NOSIMP: exit: 49; NOSIMP-NEXT: ret i1 false 50; 51bb0: 52 %c0 = icmp uge i32 %l0, 100 53 br i1 %c0, label %bb1, label %exit 54 55bb1: 56 %c1 = icmp uge i32 %l1, 100 57 br i1 %c1, label %bb2, label %exit 58 59bb2: 60 %c2 = icmp uge i32 %l2, 100 61 br i1 %c2, label %bb3, label %exit 62 63bb3: 64 %c3 = icmp uge i32 %l3, 100 65 br i1 %c3, label %bb4, label %exit 66 67bb4: 68 %c4 = icmp uge i32 %l4, 100 69 br i1 %c4, label %bb5, label %exit 70 71bb5: 72 %c5 = icmp uge i32 %l4, 100 73 ret i1 %c5 74 75exit: 76 ret i1 false 77} 78;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 79; COMMON: {{.*}} 80