1*d6254396SFlorian Hahn; RUN: opt -S -disable-output -passes="print<demanded-bits>" < %s 2>&1 | FileCheck %s 2*d6254396SFlorian Hahn 3*d6254396SFlorian Hahndefine i8 @test_shl_const_amount_4(i32 %a) { 4*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl_const_amount_4' 5*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl = shl i32 %a, 4 6*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xf for %a in %shl = shl i32 %a, 4 7*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xffffffff for 4 in %shl = shl i32 %a, 4 8*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8 9*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8 10*d6254396SFlorian Hahn; 11*d6254396SFlorian Hahn %shl = shl i32 %a, 4 12*d6254396SFlorian Hahn %shl.t = trunc i32 %shl to i8 13*d6254396SFlorian Hahn ret i8 %shl.t 14*d6254396SFlorian Hahn} 15*d6254396SFlorian Hahn 16*d6254396SFlorian Hahndefine i8 @test_shl_const_amount_5(i32 %a) { 17*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl_const_amount_5' 18*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl = shl i32 %a, 5 19*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0x7 for %a in %shl = shl i32 %a, 5 20*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xffffffff for 5 in %shl = shl i32 %a, 5 21*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8 22*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8 23*d6254396SFlorian Hahn; 24*d6254396SFlorian Hahn %shl = shl i32 %a, 5 25*d6254396SFlorian Hahn %shl.t = trunc i32 %shl to i8 26*d6254396SFlorian Hahn ret i8 %shl.t 27*d6254396SFlorian Hahn} 28*d6254396SFlorian Hahn 29*d6254396SFlorian Hahndefine i8 @test_shl_const_amount_8(i32 %a) { 30*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl_const_amount_8' 31*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8 32*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8 33*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl = shl i32 %a, 8 34*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0x0 for %a in %shl = shl i32 %a, 8 35*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xffffffff for 8 in %shl = shl i32 %a, 8 36*d6254396SFlorian Hahn; 37*d6254396SFlorian Hahn %shl = shl i32 %a, 8 38*d6254396SFlorian Hahn %shl.t = trunc i32 %shl to i8 39*d6254396SFlorian Hahn ret i8 %shl.t 40*d6254396SFlorian Hahn} 41*d6254396SFlorian Hahn 42*d6254396SFlorian Hahndefine i8 @test_shl_const_amount_9(i32 %a) { 43*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl_const_amount_9' 44*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl = shl i32 %a, 9 45*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0x0 for %a in %shl = shl i32 %a, 9 46*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xffffffff for 9 in %shl = shl i32 %a, 9 47*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8 48*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8 49*d6254396SFlorian Hahn; 50*d6254396SFlorian Hahn %shl = shl i32 %a, 9 51*d6254396SFlorian Hahn %shl.t = trunc i32 %shl to i8 52*d6254396SFlorian Hahn ret i8 %shl.t 53*d6254396SFlorian Hahn} 54*d6254396SFlorian Hahn 55*d6254396SFlorian Hahndefine i8 @test_shl(i32 %a, i32 %b) { 56*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl' 57*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8 58*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8 59*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xff for %shl = shl i32 %a, %b 60*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xffffffff for %a in %shl = shl i32 %a, %b 61*d6254396SFlorian Hahn; CHECK-DAG: DemandedBits: 0xffffffff for %b in %shl = shl i32 %a, %b 62*d6254396SFlorian Hahn; 63*d6254396SFlorian Hahn %shl = shl i32 %a, %b 64*d6254396SFlorian Hahn %shl.t = trunc i32 %shl to i8 65*d6254396SFlorian Hahn ret i8 %shl.t 66*d6254396SFlorian Hahn} 67