|  | ; RUN: opt -S -instsimplify -instcombine < %s | FileCheck %s | 
|  |  | 
|  | define i1 @test0(i8* %ptr) { | 
|  | ; CHECK-LABEL: @test0( | 
|  | entry: | 
|  | %val = load i8, i8* %ptr, !range !{i8 -50, i8 0} | 
|  | %and = and i8 %val, 128 | 
|  | %is.eq = icmp eq i8 %and, 128 | 
|  | ret i1 %is.eq | 
|  | ; CHECK: ret i1 true | 
|  | } | 
|  |  | 
|  | define i1 @test1(i8* %ptr) { | 
|  | ; CHECK-LABEL: @test1( | 
|  | entry: | 
|  | %val = load i8, i8* %ptr, !range !{i8 64, i8 128} | 
|  | %and = and i8 %val, 64 | 
|  | %is.eq = icmp eq i8 %and, 64 | 
|  | ret i1 %is.eq | 
|  | ; CHECK: ret i1 true | 
|  | } | 
|  |  | 
|  | define i1 @test2(i8* %ptr) { | 
|  | ; CHECK-LABEL: @test2( | 
|  | entry: | 
|  | ; CHECK: %val = load i8 | 
|  | ; CHECK: %and = and i8 %val | 
|  | ; CHECK: %is.eq = icmp ne i8 %and, 0 | 
|  | ; CHECK: ret i1 %is.eq | 
|  | %val = load i8, i8* %ptr, !range !{i8 64, i8 129} | 
|  | %and = and i8 %val, 64 | 
|  | %is.eq = icmp eq i8 %and, 64 | 
|  | ret i1 %is.eq | 
|  | } |