1162aed48SPhilip Reames; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py 2162aed48SPhilip Reames; RUN: opt < %s "-passes=print<scalar-evolution>" -disable-output 2>&1 | FileCheck %s 3162aed48SPhilip Reames 4162aed48SPhilip Reamesdefine i8 @test(i8 %x, i8 %y) { 5162aed48SPhilip Reames; CHECK-LABEL: 'test' 6162aed48SPhilip Reames; CHECK-NEXT: Classifying expressions for: @test 7162aed48SPhilip Reames; CHECK-NEXT: %udiv = udiv i8 %x, %y 8162aed48SPhilip Reames; CHECK-NEXT: --> (%x /u %y) U: full-set S: full-set 9162aed48SPhilip Reames; CHECK-NEXT: %res = mul i8 %udiv, %y 10*9bdb19ccSPhilip Reames; CHECK-NEXT: --> ((%x /u %y) * %y)<nuw> U: full-set S: full-set 11162aed48SPhilip Reames; CHECK-NEXT: Determining loop execution counts for: @test 12162aed48SPhilip Reames; 13162aed48SPhilip Reames %udiv = udiv i8 %x, %y 14162aed48SPhilip Reames %res = mul i8 %udiv, %y 15162aed48SPhilip Reames ret i8 %res 16162aed48SPhilip Reames} 17162aed48SPhilip Reames 18162aed48SPhilip Reamesdefine i8 @test2(i8 %x) { 19162aed48SPhilip Reames; CHECK-LABEL: 'test2' 20162aed48SPhilip Reames; CHECK-NEXT: Classifying expressions for: @test2 21162aed48SPhilip Reames; CHECK-NEXT: %udiv = udiv i8 %x, 2 22162aed48SPhilip Reames; CHECK-NEXT: --> (%x /u 2) U: [0,-128) S: [0,-128) 23162aed48SPhilip Reames; CHECK-NEXT: %res = mul i8 %udiv, 2 24162aed48SPhilip Reames; CHECK-NEXT: --> (2 * (%x /u 2))<nuw> U: [0,-1) S: [-128,127) 25162aed48SPhilip Reames; CHECK-NEXT: Determining loop execution counts for: @test2 26162aed48SPhilip Reames; 27162aed48SPhilip Reames %udiv = udiv i8 %x, 2 28162aed48SPhilip Reames %res = mul i8 %udiv, 2 29162aed48SPhilip Reames ret i8 %res 30162aed48SPhilip Reames} 31162aed48SPhilip Reames 32162aed48SPhilip Reamesdefine i8 @test3(i8 %x) { 33162aed48SPhilip Reames; CHECK-LABEL: 'test3' 34162aed48SPhilip Reames; CHECK-NEXT: Classifying expressions for: @test3 35162aed48SPhilip Reames; CHECK-NEXT: %udiv = udiv i8 %x, -128 36162aed48SPhilip Reames; CHECK-NEXT: --> (%x /u -128) U: [0,2) S: [0,2) 37162aed48SPhilip Reames; CHECK-NEXT: %res = mul i8 %udiv, -128 38162aed48SPhilip Reames; CHECK-NEXT: --> (-128 * (%x /u -128))<nuw><nsw> U: [0,-127) S: [-128,1) 39162aed48SPhilip Reames; CHECK-NEXT: Determining loop execution counts for: @test3 40162aed48SPhilip Reames; 41162aed48SPhilip Reames %udiv = udiv i8 %x, 128 42162aed48SPhilip Reames %res = mul i8 %udiv, 128 43162aed48SPhilip Reames ret i8 %res 44162aed48SPhilip Reames} 45162aed48SPhilip Reames 46162aed48SPhilip Reamesdefine i8 @test4(i8 %x) { 47162aed48SPhilip Reames; CHECK-LABEL: 'test4' 48162aed48SPhilip Reames; CHECK-NEXT: Classifying expressions for: @test4 49162aed48SPhilip Reames; CHECK-NEXT: %udiv = udiv i8 %x, -1 50162aed48SPhilip Reames; CHECK-NEXT: --> (%x /u -1) U: [0,2) S: [0,2) 51162aed48SPhilip Reames; CHECK-NEXT: %res = mul i8 %udiv, -1 52162aed48SPhilip Reames; CHECK-NEXT: --> (-1 * (%x /u -1))<nuw><nsw> U: [-1,1) S: [-1,1) 53162aed48SPhilip Reames; CHECK-NEXT: Determining loop execution counts for: @test4 54162aed48SPhilip Reames; 55162aed48SPhilip Reames %udiv = udiv i8 %x, 255 56162aed48SPhilip Reames %res = mul i8 %udiv, 255 57162aed48SPhilip Reames ret i8 %res 58162aed48SPhilip Reames} 59baff4b41SPhilip Reames 60baff4b41SPhilip Reamesdefine i8 @test5(i8 %x, i32 %y32) { 61baff4b41SPhilip Reames; CHECK-LABEL: 'test5' 62baff4b41SPhilip Reames; CHECK-NEXT: Classifying expressions for: @test5 63baff4b41SPhilip Reames; CHECK-NEXT: %y = trunc i32 %y32 to i8 64baff4b41SPhilip Reames; CHECK-NEXT: --> (trunc i32 %y32 to i8) U: full-set S: full-set 65baff4b41SPhilip Reames; CHECK-NEXT: %udiv = udiv i8 %x, %y 66baff4b41SPhilip Reames; CHECK-NEXT: --> (%x /u (trunc i32 %y32 to i8)) U: full-set S: full-set 67baff4b41SPhilip Reames; CHECK-NEXT: %res = mul i8 %udiv, %y 68*9bdb19ccSPhilip Reames; CHECK-NEXT: --> ((trunc i32 %y32 to i8) * (%x /u (trunc i32 %y32 to i8)))<nuw> U: full-set S: full-set 69baff4b41SPhilip Reames; CHECK-NEXT: Determining loop execution counts for: @test5 70baff4b41SPhilip Reames; 71baff4b41SPhilip Reames %y = trunc i32 %y32 to i8 72baff4b41SPhilip Reames %udiv = udiv i8 %x, %y 73baff4b41SPhilip Reames %res = mul i8 %udiv, %y 74baff4b41SPhilip Reames ret i8 %res 75baff4b41SPhilip Reames} 76