diff options
Diffstat (limited to 'test/Analysis/DemandedBits/basic.ll')
| -rw-r--r-- | test/Analysis/DemandedBits/basic.ll | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/Analysis/DemandedBits/basic.ll b/test/Analysis/DemandedBits/basic.ll new file mode 100644 index 000000000000..487e522e9dbc --- /dev/null +++ b/test/Analysis/DemandedBits/basic.ll @@ -0,0 +1,34 @@ +; RUN: opt -S -demanded-bits -analyze < %s | FileCheck %s + +; CHECK-LABEL: 'test_mul' +; CHECK-DAG: DemandedBits: 0xFF for %1 = add nsw i32 %a, 5 +; CHECK-DAG: DemandedBits: 0xFF for %3 = trunc i32 %2 to i8 +; CHECK-DAG: DemandedBits: 0xFF for %2 = mul nsw i32 %1, %b +define i8 @test_mul(i32 %a, i32 %b) { + %1 = add nsw i32 %a, 5 + %2 = mul nsw i32 %1, %b + %3 = trunc i32 %2 to i8 + ret i8 %3 +} + +; CHECK-LABEL: 'test_icmp1' +; CHECK-DAG: DemandedBits: 0x1 for %3 = icmp eq i32 %1, %2 +; CHECK-DAG: DemandedBits: 0xFFF for %1 = and i32 %a, 255 +; CHECK-DAG: DemandedBits: 0xFFF for %2 = shl i32 %1, 4 +define i1 @test_icmp1(i32 %a, i32 %b) { + %1 = and i32 %a, 255 + %2 = shl i32 %1, 4 + %3 = icmp eq i32 %1, %2 + ret i1 %3 +} + +; CHECK-LABEL: 'test_icmp2' +; CHECK-DAG: DemandedBits: 0x1 for %3 = icmp eq i32 %1, %2 +; CHECK-DAG: DemandedBits: 0xFF for %1 = and i32 %a, 255 +; CHECK-DAG: DemandedBits: 0xF for %2 = ashr i32 %1, 4 +define i1 @test_icmp2(i32 %a, i32 %b) { + %1 = and i32 %a, 255 + %2 = ashr i32 %1, 4 + %3 = icmp eq i32 %1, %2 + ret i1 %3 +} |
