brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.2 KiB · d833012 Raw
565 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -disable-output -passes="print<scalar-evolution>" \3; RUN:   -scalar-evolution-classify-expressions=0 2>&1 | FileCheck %s4 5define void @implied1(i32 %n) {6; Prove that (n s> 1) ===> (n / 2 s> 0).7; CHECK-LABEL: 'implied1'8; CHECK-NEXT:  Determining loop execution counts for: @implied19; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + %n.div.2)<nsw>10; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 107374182211; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + %n.div.2)<nsw>12; CHECK-NEXT:  Loop %header: Trip multiple is 113;14entry:15  %cmp1 = icmp sgt i32 %n, 116  %n.div.2 = sdiv i32 %n, 217  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]18  br label %header19 20header:21  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]22  %indvar.next = add i32 %indvar, 123  %exitcond = icmp sgt i32 %n.div.2, %indvar.next24  br i1 %exitcond, label %header, label %exit25 26exit:27  ret void28}29 30define void @implied1_samesign(i32 %n) {31; Prove that (n > 1) ===> (n / 2 s> 0).32; CHECK-LABEL: 'implied1_samesign'33; CHECK-NEXT:  Determining loop execution counts for: @implied1_samesign34; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + %n.div.2)<nsw>35; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 107374182236; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + %n.div.2)<nsw>37; CHECK-NEXT:  Loop %header: Trip multiple is 138;39entry:40  %cmp1 = icmp samesign ugt i32 %n, 141  %n.div.2 = sdiv i32 %n, 242  call void @llvm.assume(i1 %cmp1)43  br label %header44 45header:46  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]47  %indvar.next = add i32 %indvar, 148  %exitcond = icmp sgt i32 %n.div.2, %indvar.next49  br i1 %exitcond, label %header, label %exit50 51exit:52  ret void53}54 55define void @implied1_neg(i32 %n) {56; Prove that (n s> 0) =\=> (n / 2 s> 0).57; CHECK-LABEL: 'implied1_neg'58; CHECK-NEXT:  Determining loop execution counts for: @implied1_neg59; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + (1 smax %n.div.2))<nsw>60; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 107374182261; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + (1 smax %n.div.2))<nsw>62; CHECK-NEXT:  Loop %header: Trip multiple is 163;64entry:65  %cmp1 = icmp sgt i32 %n, 066  %n.div.2 = sdiv i32 %n, 267  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]68  br label %header69 70header:71  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]72  %indvar.next = add i32 %indvar, 173  %exitcond = icmp sgt i32 %n.div.2, %indvar.next74  br i1 %exitcond, label %header, label %exit75 76exit:77  ret void78}79 80define void @implied2(i32 %n) {81; Prove that (n s>= 2) ===> (n / 2 s> 0).82; CHECK-LABEL: 'implied2'83; CHECK-NEXT:  Determining loop execution counts for: @implied284; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + %n.div.2)<nsw>85; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 107374182286; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + %n.div.2)<nsw>87; CHECK-NEXT:  Loop %header: Trip multiple is 188;89entry:90  %cmp1 = icmp sge i32 %n, 291  %n.div.2 = sdiv i32 %n, 292  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]93  br label %header94 95header:96  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]97  %indvar.next = add i32 %indvar, 198  %exitcond = icmp sgt i32 %n.div.2, %indvar.next99  br i1 %exitcond, label %header, label %exit100 101exit:102  ret void103}104 105define void @implied2_samesign(i32 %n) {106; Prove that (n >= 2) ===> (n / 2 s> 0).107; CHECK-LABEL: 'implied2_samesign'108; CHECK-NEXT:  Determining loop execution counts for: @implied2_samesign109; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + (1 smax %n.div.2))<nsw>110; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 1073741822111; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + (1 smax %n.div.2))<nsw>112; CHECK-NEXT:  Loop %header: Trip multiple is 1113;114entry:115  %cmp1 = icmp samesign uge i32 %n, 2116  %n.div.2 = sdiv i32 %n, 2117  call void @llvm.assume(i1 %cmp1)118  br label %header119 120header:121  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]122  %indvar.next = add i32 %indvar, 1123  %exitcond = icmp sgt i32 %n.div.2, %indvar.next124  br i1 %exitcond, label %header, label %exit125 126exit:127  ret void128}129 130define void @implied2_neg(i32 %n) {131; Prove that (n s>= 1) =\=> (n / 2 s> 0).132; CHECK-LABEL: 'implied2_neg'133; CHECK-NEXT:  Determining loop execution counts for: @implied2_neg134; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + (1 smax %n.div.2))<nsw>135; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 1073741822136; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + (1 smax %n.div.2))<nsw>137; CHECK-NEXT:  Loop %header: Trip multiple is 1138;139entry:140  %cmp1 = icmp sge i32 %n, 1141  %n.div.2 = sdiv i32 %n, 2142  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]143  br label %header144 145header:146  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]147  %indvar.next = add i32 %indvar, 1148  %exitcond = icmp sgt i32 %n.div.2, %indvar.next149  br i1 %exitcond, label %header, label %exit150 151exit:152  ret void153}154 155define void @implied3(i32 %n) {156; Prove that (n s> -2) ===> (n / 2 s>= 0).157; CHECK-LABEL: 'implied3'158; CHECK-NEXT:  Determining loop execution counts for: @implied3159; CHECK-NEXT:  Loop %header: backedge-taken count is (1 + %n.div.2)<nsw>160; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 1073741824161; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (1 + %n.div.2)<nsw>162; CHECK-NEXT:  Loop %header: Trip multiple is 1163;164entry:165  %cmp1 = icmp sgt i32 %n, -2166  %n.div.2 = sdiv i32 %n, 2167  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]168  br label %header169 170header:171  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]172  %indvar.next = add i32 %indvar, 1173  %exitcond = icmp sge i32 %n.div.2, %indvar174  br i1 %exitcond, label %header, label %exit175 176exit:177  ret void178}179 180define void @implied3_samesign(i32 %n) {181; Prove that (n > -2) ===> (n / 2 s>= 0).182; CHECK-LABEL: 'implied3_samesign'183; CHECK-NEXT:  Determining loop execution counts for: @implied3_samesign184; CHECK-NEXT:  Loop %header: backedge-taken count is (1 + %n.div.2)<nsw>185; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 1186; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (1 + %n.div.2)<nsw>187; CHECK-NEXT:  Loop %header: Trip multiple is 1188;189entry:190  %cmp1 = icmp samesign ugt i32 %n, -2191  %n.div.2 = sdiv i32 %n, 2192  call void @llvm.assume(i1 %cmp1)193  br label %header194 195header:196  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]197  %indvar.next = add i32 %indvar, 1198  %exitcond = icmp sge i32 %n.div.2, %indvar199  br i1 %exitcond, label %header, label %exit200 201exit:202  ret void203}204 205define void @implied3_neg(i32 %n) {206; Prove that (n > -3) =\=> (n / 2 >= 0).207; CHECK-LABEL: 'implied3_neg'208; CHECK-NEXT:  Determining loop execution counts for: @implied3_neg209; CHECK-NEXT:  Loop %header: backedge-taken count is (0 smax (1 + %n.div.2)<nsw>)210; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 1073741824211; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (0 smax (1 + %n.div.2)<nsw>)212; CHECK-NEXT:  Loop %header: Trip multiple is 1213;214entry:215  %cmp1 = icmp sgt i32 %n, -3216  %n.div.2 = sdiv i32 %n, 2217  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]218  br label %header219 220header:221  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]222  %indvar.next = add i32 %indvar, 1223  %exitcond = icmp sge i32 %n.div.2, %indvar224  br i1 %exitcond, label %header, label %exit225 226exit:227  ret void228}229 230define void @implied4(i32 %n) {231; Prove that (n s>= -1) ===> (n / 2 s>= 0).232; CHECK-LABEL: 'implied4'233; CHECK-NEXT:  Determining loop execution counts for: @implied4234; CHECK-NEXT:  Loop %header: backedge-taken count is (1 + %n.div.2)<nsw>235; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 1073741824236; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (1 + %n.div.2)<nsw>237; CHECK-NEXT:  Loop %header: Trip multiple is 1238;239entry:240  %cmp1 = icmp sge i32 %n, -1241  %n.div.2 = sdiv i32 %n, 2242  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]243  br label %header244 245header:246  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]247  %indvar.next = add i32 %indvar, 1248  %exitcond = icmp sge i32 %n.div.2, %indvar249  br i1 %exitcond, label %header, label %exit250 251exit:252  ret void253}254 255define void @implied4_samesign(i32 %n) {256; Prove that (n >= -1) ===> (n / 2 s>= 0).257; CHECK-LABEL: 'implied4_samesign'258; CHECK-NEXT:  Determining loop execution counts for: @implied4_samesign259; CHECK-NEXT:  Loop %header: backedge-taken count is (1 + %n.div.2)<nsw>260; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 1261; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (1 + %n.div.2)<nsw>262; CHECK-NEXT:  Loop %header: Trip multiple is 1263;264entry:265  %cmp1 = icmp samesign uge i32 %n, -1266  %n.div.2 = sdiv i32 %n, 2267  call void @llvm.assume(i1 %cmp1)268  br label %header269 270header:271  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]272  %indvar.next = add i32 %indvar, 1273  %exitcond = icmp sge i32 %n.div.2, %indvar274  br i1 %exitcond, label %header, label %exit275 276exit:277  ret void278}279 280define void @implied4_neg(i32 %n) {281; Prove that (n s>= -2) =\=> (n / 2 s>= 0).282; CHECK-LABEL: 'implied4_neg'283; CHECK-NEXT:  Determining loop execution counts for: @implied4_neg284; CHECK-NEXT:  Loop %header: backedge-taken count is (0 smax (1 + %n.div.2)<nsw>)285; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 1073741824286; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (0 smax (1 + %n.div.2)<nsw>)287; CHECK-NEXT:  Loop %header: Trip multiple is 1288;289entry:290  %cmp1 = icmp sge i32 %n, -2291  %n.div.2 = sdiv i32 %n, 2292  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]293  br label %header294 295header:296  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]297  %indvar.next = add i32 %indvar, 1298  %exitcond = icmp sge i32 %n.div.2, %indvar299  br i1 %exitcond, label %header, label %exit300 301exit:302  ret void303}304 305define void @test_ext_01(i32 %n) nounwind {306; Prove that (n > 1) ===> (n / 2 > 0).307; CHECK-LABEL: 'test_ext_01'308; CHECK-NEXT:  Determining loop execution counts for: @test_ext_01309; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + (sext i32 %n.div.2 to i64))<nsw>310; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i64 1073741822311; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + (sext i32 %n.div.2 to i64))<nsw>312; CHECK-NEXT:  Loop %header: Trip multiple is 1313;314entry:315  %cmp1 = icmp sgt i32 %n, 1316  %n.div.2 = sdiv i32 %n, 2317  %n.div.2.ext = sext i32 %n.div.2 to i64318  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]319  br label %header320 321header:322  %indvar = phi i64 [ %indvar.next, %header ], [ 0, %entry ]323  %indvar.next = add i64 %indvar, 1324  %exitcond = icmp sgt i64 %n.div.2.ext, %indvar.next325  br i1 %exitcond, label %header, label %exit326 327exit:328  ret void329}330 331define void @test_ext_01neg(i32 %n) nounwind {332; Prove that (n > 0) =\=> (n / 2 > 0).333; CHECK-LABEL: 'test_ext_01neg'334; CHECK-NEXT:  Determining loop execution counts for: @test_ext_01neg335; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + (1 smax (sext i32 %n.div.2 to i64)))<nsw>336; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i64 1073741822337; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + (1 smax (sext i32 %n.div.2 to i64)))<nsw>338; CHECK-NEXT:  Loop %header: Trip multiple is 1339;340entry:341  %cmp1 = icmp sgt i32 %n, 0342  %n.div.2 = sdiv i32 %n, 2343  %n.div.2.ext = sext i32 %n.div.2 to i64344  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]345  br label %header346 347header:348  %indvar = phi i64 [ %indvar.next, %header ], [ 0, %entry ]349  %indvar.next = add i64 %indvar, 1350  %exitcond = icmp sgt i64 %n.div.2.ext, %indvar.next351  br i1 %exitcond, label %header, label %exit352 353exit:354  ret void355}356 357define void @test_ext_02(i32 %n) nounwind {358; Prove that (n >= 2) ===> (n / 2 > 0).359; CHECK-LABEL: 'test_ext_02'360; CHECK-NEXT:  Determining loop execution counts for: @test_ext_02361; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + (sext i32 %n.div.2 to i64))<nsw>362; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i64 1073741822363; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + (sext i32 %n.div.2 to i64))<nsw>364; CHECK-NEXT:  Loop %header: Trip multiple is 1365;366entry:367  %cmp1 = icmp sge i32 %n, 2368  %n.div.2 = sdiv i32 %n, 2369  %n.div.2.ext = sext i32 %n.div.2 to i64370  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]371  br label %header372 373header:374  %indvar = phi i64 [ %indvar.next, %header ], [ 0, %entry ]375  %indvar.next = add i64 %indvar, 1376  %exitcond = icmp sgt i64 %n.div.2.ext, %indvar.next377  br i1 %exitcond, label %header, label %exit378 379exit:380  ret void381}382 383define void @test_ext_02neg(i32 %n) nounwind {384; Prove that (n >= 1) =\=> (n / 2 > 0).385; CHECK-LABEL: 'test_ext_02neg'386; CHECK-NEXT:  Determining loop execution counts for: @test_ext_02neg387; CHECK-NEXT:  Loop %header: backedge-taken count is (-1 + (1 smax (sext i32 %n.div.2 to i64)))<nsw>388; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i64 1073741822389; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (-1 + (1 smax (sext i32 %n.div.2 to i64)))<nsw>390; CHECK-NEXT:  Loop %header: Trip multiple is 1391;392entry:393  %cmp1 = icmp sge i32 %n, 1394  %n.div.2 = sdiv i32 %n, 2395  %n.div.2.ext = sext i32 %n.div.2 to i64396  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]397  br label %header398 399header:400  %indvar = phi i64 [ %indvar.next, %header ], [ 0, %entry ]401  %indvar.next = add i64 %indvar, 1402  %exitcond = icmp sgt i64 %n.div.2.ext, %indvar.next403  br i1 %exitcond, label %header, label %exit404 405exit:406  ret void407}408 409define void @test_ext_03(i32 %n) nounwind {410; Prove that (n > -2) ===> (n / 2 >= 0).411; CHECK-LABEL: 'test_ext_03'412; CHECK-NEXT:  Determining loop execution counts for: @test_ext_03413; CHECK-NEXT:  Loop %header: backedge-taken count is (1 + (sext i32 %n.div.2 to i64))<nsw>414; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i64 1073741824415; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (1 + (sext i32 %n.div.2 to i64))<nsw>416; CHECK-NEXT:  Loop %header: Trip multiple is 1417;418entry:419  %cmp1 = icmp sgt i32 %n, -2420  %n.div.2 = sdiv i32 %n, 2421  %n.div.2.ext = sext i32 %n.div.2 to i64422  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]423  br label %header424 425header:426  %indvar = phi i64 [ %indvar.next, %header ], [ 0, %entry ]427  %indvar.next = add i64 %indvar, 1428  %exitcond = icmp sge i64 %n.div.2.ext, %indvar429  br i1 %exitcond, label %header, label %exit430 431exit:432  ret void433}434 435define void @test_ext_03neg(i32 %n) nounwind {436; Prove that (n > -3) =\=> (n / 2 >= 0).437; CHECK-LABEL: 'test_ext_03neg'438; CHECK-NEXT:  Determining loop execution counts for: @test_ext_03neg439; CHECK-NEXT:  Loop %header: backedge-taken count is (0 smax (1 + (sext i32 %n.div.2 to i64))<nsw>)440; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i64 1073741824441; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (0 smax (1 + (sext i32 %n.div.2 to i64))<nsw>)442; CHECK-NEXT:  Loop %header: Trip multiple is 1443;444entry:445  %cmp1 = icmp sgt i32 %n, -3446  %n.div.2 = sdiv i32 %n, 2447  %n.div.2.ext = sext i32 %n.div.2 to i64448  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]449  br label %header450 451header:452  %indvar = phi i64 [ %indvar.next, %header ], [ 0, %entry ]453  %indvar.next = add i64 %indvar, 1454  %exitcond = icmp sge i64 %n.div.2.ext, %indvar455  br i1 %exitcond, label %header, label %exit456 457exit:458  ret void459}460 461define void @test_ext_04(i32 %n) nounwind {462; Prove that (n >= -1) ===> (n / 2 >= 0).463; CHECK-LABEL: 'test_ext_04'464; CHECK-NEXT:  Determining loop execution counts for: @test_ext_04465; CHECK-NEXT:  Loop %header: backedge-taken count is (1 + (sext i32 %n.div.2 to i64))<nsw>466; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i64 1073741824467; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (1 + (sext i32 %n.div.2 to i64))<nsw>468; CHECK-NEXT:  Loop %header: Trip multiple is 1469;470entry:471  %cmp1 = icmp sge i32 %n, -1472  %n.div.2 = sdiv i32 %n, 2473  %n.div.2.ext = sext i32 %n.div.2 to i64474  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]475  br label %header476 477header:478  %indvar = phi i64 [ %indvar.next, %header ], [ 0, %entry ]479  %indvar.next = add i64 %indvar, 1480  %exitcond = icmp sge i64 %n.div.2.ext, %indvar481  br i1 %exitcond, label %header, label %exit482 483exit:484  ret void485}486 487define void @test_ext_04neg(i32 %n) nounwind {488; Prove that (n >= -2) =\=> (n / 2 >= 0).489; CHECK-LABEL: 'test_ext_04neg'490; CHECK-NEXT:  Determining loop execution counts for: @test_ext_04neg491; CHECK-NEXT:  Loop %header: backedge-taken count is (0 smax (1 + (sext i32 %n.div.2 to i64))<nsw>)492; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i64 1073741824493; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (0 smax (1 + (sext i32 %n.div.2 to i64))<nsw>)494; CHECK-NEXT:  Loop %header: Trip multiple is 1495;496entry:497  %cmp1 = icmp sge i32 %n, -2498  %n.div.2 = sdiv i32 %n, 2499  %n.div.2.ext = sext i32 %n.div.2 to i64500  call void(i1, ...) @llvm.experimental.guard(i1 %cmp1) [ "deopt"() ]501  br label %header502 503header:504  %indvar = phi i64 [ %indvar.next, %header ], [ 0, %entry ]505  %indvar.next = add i64 %indvar, 1506  %exitcond = icmp sge i64 %n.div.2.ext, %indvar507  br i1 %exitcond, label %header, label %exit508 509exit:510  ret void511}512 513define void @swapped_predicate(i32 %n) {514; Prove that (n s>= 1) ===> (0 s>= -n / 2).515; CHECK-LABEL: 'swapped_predicate'516; CHECK-NEXT:  Determining loop execution counts for: @swapped_predicate517; CHECK-NEXT:  Loop %header: backedge-taken count is (1 + %n.div.2)<nuw><nsw>518; CHECK-NEXT:  Loop %header: constant max backedge-taken count is i32 1073741824519; CHECK-NEXT:  Loop %header: symbolic max backedge-taken count is (1 + %n.div.2)<nuw><nsw>520; CHECK-NEXT:  Loop %header: Trip multiple is 1521;522entry:523  %cmp1 = icmp sge i32 %n, 1524  %n.div.2 = sdiv i32 %n, 2525  call void @llvm.assume(i1 %cmp1)526  br label %header527 528header:529  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]530  %indvar.next = add i32 %indvar, 1531  %minus.indvar = sub nsw i32 0, %indvar532  %minus.n.div.2 = sub nsw i32 0, %n.div.2533  %exitcond = icmp sge i32 %minus.indvar, %minus.n.div.2534  br i1 %exitcond, label %header, label %exit535 536exit:537  ret void538}539 540define void @swapped_predicate_neg(i32 %n) {541; Prove that (n s>= 1) =\=> (-n / 2 s>= 0).542; CHECK-LABEL: 'swapped_predicate_neg'543; CHECK-NEXT:  Determining loop execution counts for: @swapped_predicate_neg544; CHECK-NEXT:  Loop %header: Unpredictable backedge-taken count.545; CHECK-NEXT:  Loop %header: Unpredictable constant max backedge-taken count.546; CHECK-NEXT:  Loop %header: Unpredictable symbolic max backedge-taken count.547;548entry:549  %cmp1 = icmp sge i32 %n, 1550  %n.div.2 = sdiv i32 %n, 2551  call void @llvm.assume(i1 %cmp1)552  br label %header553 554header:555  %indvar = phi i32 [ %indvar.next, %header ], [ 0, %entry ]556  %indvar.next = add i32 %indvar, 1557  %minus.indvar = sub nsw i32 0, %indvar558  %minus.n.div.2 = sub nsw i32 0, %n.div.2559  %exitcond = icmp sge i32 %minus.n.div.2, %minus.indvar560  br i1 %exitcond, label %header, label %exit561 562exit:563  ret void564}565