| ; 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 | |
| } |