• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt < %s -scalar-evolution -analyze -enable-new-pm=0 | FileCheck %s
2; RUN: opt < %s "-passes=print<scalar-evolution>" -disable-output 2>&1 | FileCheck %s
3
4define i8 @foo(i8 %a) {
5; CHECK-LABEL: @foo
6        %t0 = urem i8 %a, 27
7; CHECK: %t0 = urem i8 %a, 27
8; CHECK-NEXT: -->  ((-27 * (%a /u 27)) + %a)
9        ret i8 %t0
10}
11
12define i8 @bar(i8 %a) {
13; CHECK-LABEL: @bar
14        %t1 = urem i8 %a, 1
15; CHECK: %t1 = urem i8 %a, 1
16; CHECK-NEXT: -->  0
17        ret i8 %t1
18}
19
20define i8 @baz(i8 %a) {
21; CHECK-LABEL: @baz
22        %t2 = urem i8 %a, 32
23; CHECK: %t2 = urem i8 %a, 32
24; CHECK-NEXT: -->  (zext i5 (trunc i8 %a to i5) to i8)
25        ret i8 %t2
26}
27
28define i8 @qux(i8 %a) {
29; CHECK-LABEL: @qux
30        %t3 = urem i8 %a, 2
31; CHECK: %t3 = urem i8 %a, 2
32; CHECK-NEXT: -->  (zext i1 (trunc i8 %a to i1) to i8)
33        ret i8 %t3
34}
35