|  | ; This file contains various testcases that check to see that instcombine | 
|  | ; is narrowing computations when possible. | 
|  | ; RUN: opt < %s -instcombine -S | \ | 
|  | ; RUN:    grep "ret i1 false" | 
|  |  | 
|  | ; test1 - Eliminating the casts in this testcase (by narrowing the AND | 
|  | ; operation) allows instcombine to realize the function always returns false. | 
|  | ; | 
|  | define i1 @test1(i32 %A, i32 %B) { | 
|  | %C1 = icmp slt i32 %A, %B               ; <i1> [#uses=1] | 
|  | %ELIM1 = zext i1 %C1 to i32             ; <i32> [#uses=1] | 
|  | %C2 = icmp sgt i32 %A, %B               ; <i1> [#uses=1] | 
|  | %ELIM2 = zext i1 %C2 to i32             ; <i32> [#uses=1] | 
|  | %C3 = and i32 %ELIM1, %ELIM2            ; <i32> [#uses=1] | 
|  | %ELIM3 = trunc i32 %C3 to i1            ; <i1> [#uses=1] | 
|  | ret i1 %ELIM3 | 
|  | } | 
|  |  |