Home | History | Annotate | Download | only in ScalarEvolution
      1 ; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
      2 
      3 define i8 @foo(i8 %a) {
      4 ; CHECK-LABEL: @foo
      5         %t0 = urem i8 %a, 27
      6 ; CHECK: %t0 = urem i8 %a, 27
      7 ; CHECK-NEXT: -->  ((-27 * (%a /u 27)) + %a)
      8         ret i8 %t0
      9 }
     10 
     11 define i8 @bar(i8 %a) {
     12 ; CHECK-LABEL: @bar
     13         %t1 = urem i8 %a, 1
     14 ; CHECK: %t1 = urem i8 %a, 1
     15 ; CHECK-NEXT: -->  0
     16         ret i8 %t1
     17 }
     18 
     19 define i8 @baz(i8 %a) {
     20 ; CHECK-LABEL: @baz
     21         %t2 = urem i8 %a, 32
     22 ; CHECK: %t2 = urem i8 %a, 32
     23 ; CHECK-NEXT: -->  (zext i5 (trunc i8 %a to i5) to i8)
     24         ret i8 %t2
     25 }
     26 
     27 define i8 @qux(i8 %a) {
     28 ; CHECK-LABEL: @qux
     29         %t3 = urem i8 %a, 2
     30 ; CHECK: %t3 = urem i8 %a, 2
     31 ; CHECK-NEXT: -->  (zext i1 (trunc i8 %a to i1) to i8)
     32         ret i8 %t3
     33 }
     34