1; RUN: opt -S -demanded-bits -analyze -enable-new-pm=0 < %s | FileCheck %s 2; RUN: opt -S -disable-output -passes="print<demanded-bits>" < %s 2>&1 | FileCheck %s 3 4; CHECK-DAG: DemandedBits: 0x1e for %1 = and i32 %a, 9 5; CHECK-DAG: DemandedBits: 0x1a for %2 = and i32 %b, 9 6; CHECK-DAG: DemandedBits: 0x1a for %3 = and i32 %c, 13 7; CHECK-DAG: DemandedBits: 0x1a for %4 = and i32 %d, 4 8; CHECK-DAG: DemandedBits: 0x1a for %5 = or i32 %2, %3 9; CHECK-DAG: DemandedBits: 0x1a for %6 = or i32 %4, %5 10; CHECK-DAG: DemandedBits: 0x10 for %7 = add i32 %1, %6 11; CHECK-DAG: DemandedBits: 0xffffffff for %8 = and i32 %7, 16 12define i32 @test_add(i32 %a, i32 %b, i32 %c, i32 %d) { 13 %1 = and i32 %a, 9 14 %2 = and i32 %b, 9 15 %3 = and i32 %c, 13 16 %4 = and i32 %d, 4 ; no bit of %d alive, %4 simplifies to zero 17 %5 = or i32 %2, %3 18 %6 = or i32 %4, %5 19 %7 = add i32 %1, %6 20 %8 = and i32 %7, 16 21 ret i32 %8 22} 23