• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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