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