[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Transforms / InstCombine / srem1.ll
blob31452d8f208a3609af2b11cd13c3d9f10cee54f5
1 ; RUN: opt < %s -instcombine
2 ; PR2670
4 @g_127 = external global i32            ; <i32*> [#uses=1]
6 define i32 @func_56(i32 %p_58, i32 %p_59, i32 %p_61, i16 signext %p_62) nounwind {
7 entry:
8         %call = call i32 (...) @rshift_s_s( i32 %p_61, i32 1 )          ; <i32> [#uses=1]
9         %conv = sext i32 %call to i64           ; <i64> [#uses=1]
10         %or = or i64 -1734012817166602727, %conv                ; <i64> [#uses=1]
11         %rem = srem i64 %or, 1          ; <i64> [#uses=1]
12         %cmp = icmp eq i64 %rem, 1              ; <i1> [#uses=1]
13         %cmp.ext = zext i1 %cmp to i32          ; <i32> [#uses=1]
14         store i32 %cmp.ext, i32* @g_127
15         ret i32 undef
18 declare i32 @rshift_s_s(...)