Home | History | Annotate | Download | only in InstSimplify
      1 ; RUN: opt < %s -instsimplify -S | FileCheck %s
      2 
      3 define i32 @select1(i32 %x, i1 %b) {
      4 ; CHECK-LABEL: @select1(
      5   %rhs = select i1 %b, i32 %x, i32 1
      6   %rem = srem i32 %x, %rhs
      7   ret i32 %rem
      8 ; CHECK: ret i32 0
      9 }
     10 
     11 define i32 @select2(i32 %x, i1 %b) {
     12 ; CHECK-LABEL: @select2(
     13   %rhs = select i1 %b, i32 %x, i32 1
     14   %rem = urem i32 %x, %rhs
     15   ret i32 %rem
     16 ; CHECK: ret i32 0
     17 }
     18 
     19 define i32 @rem1(i32 %x, i32 %n) {
     20 ; CHECK-LABEL: @rem1(
     21 ; CHECK-NEXT: %mod = srem i32 %x, %n
     22 ; CHECK-NEXT: ret i32 %mod
     23  %mod = srem i32 %x, %n
     24  %mod1 = srem i32 %mod, %n
     25  ret i32 %mod1
     26 }
     27 
     28 define i32 @rem2(i32 %x, i32 %n) {
     29 ; CHECK-LABEL: @rem2(
     30 ; CHECK-NEXT: %mod = urem i32 %x, %n
     31 ; CHECK-NEXT: ret i32 %mod
     32  %mod = urem i32 %x, %n
     33  %mod1 = urem i32 %mod, %n
     34  ret i32 %mod1
     35 }
     36 
     37 define i32 @rem3(i32 %x, i32 %n) {
     38 ; CHECK-LABEL: @rem3(
     39 ; CHECK-NEXT: %[[srem:.*]] = srem i32 %x, %n
     40 ; CHECK-NEXT: %[[urem:.*]] = urem i32 %[[srem]], %n
     41 ; CHECK-NEXT: ret i32 %[[urem]]
     42  %mod = srem i32 %x, %n
     43  %mod1 = urem i32 %mod, %n
     44  ret i32 %mod1
     45 }
     46