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