43 lines · plain
1; RUN: opt -disable-output "-passes=print<scalar-evolution>" -S < %s 2>&1 | FileCheck %s2 3define i64 @test1(i32 %a, i32 %b) {4; CHECK-LABEL: @test15 %div = udiv i32 %a, %b6 %zext = zext i32 %div to i647; CHECK: %zext8; CHECK-NEXT: --> ((zext i32 %a to i64) /u (zext i32 %b to i64))9 ret i64 %zext10}11 12define i64 @test2(i32 %a, i32 %b) {13; CHECK-LABEL: @test214 %rem = urem i32 %a, %b15 %zext = zext i32 %rem to i6416; CHECK: %zext17; CHECK-NEXT: --> ((zext i32 %a to i64) + (-1 * (zext i32 %b to i64) * ((zext i32 %a to i64) /u (zext i32 %b to i64))))18 ret i64 %zext19}20 21define i64 @test3(i32 %a, i32 %b) {22; CHECK-LABEL: @test323 %div = udiv i32 %a, %b24 %mul = mul i32 %div, %b25 %sub = sub i32 %a, %mul26 %zext = zext i32 %sub to i6427; CHECK: %zext28; CHECK-NEXT: --> ((zext i32 %a to i64) + (-1 * (zext i32 %b to i64) * ((zext i32 %a to i64) /u (zext i32 %b to i64))))29 ret i64 %zext30}31 32define i64 @test4(i32 %t) {33; CHECK-LABEL: @test434 %a = udiv i32 %t, 235 %div = udiv i32 %t, 11236 %mul = mul i32 %div, 5637 %sub = sub i32 %a, %mul38 %zext = zext i32 %sub to i6439; CHECK: %zext40; CHECK-NEXT: --> ((-56 * ((zext i32 %t to i64) /u 112))<nsw> + ((zext i32 %t to i64) /u 2))41 ret i64 %zext42}43