blob: 487e522e9dbc6ea48c375358a291f7c2ecc063ec [file] [log] [blame]
; 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
}