brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.3 KiB · e07f994 Raw
199 lines · plain
1; RUN: opt -S -disable-output -passes="print<demanded-bits>" < %s 2>&1 | FileCheck %s2 3define i8 @test_lshr_const_amount_4(i32 %a) {4; CHECK-LABEL: 'test_lshr_const_amount_4'5; CHECK-DAG: DemandedBits: 0xff for   %lshr.t = trunc i32 %lshr to i86; CHECK-DAG: DemandedBits: 0xff for %lshr in   %lshr.t = trunc i32 %lshr to i87; CHECK-DAG: DemandedBits: 0xff for   %lshr = lshr i32 %a, 48; CHECK-DAG: DemandedBits: 0xff0 for %a in   %lshr = lshr i32 %a, 49; CHECK-DAG: DemandedBits: 0xffffffff for 4 in   %lshr = lshr i32 %a, 410;11  %lshr = lshr i32 %a, 412  %lshr.t = trunc i32 %lshr to i813  ret i8 %lshr.t14}15 16define i8 @test_lshr_const_amount_5(i32 %a) {17; CHECK-LABEL: 'test_lshr_const_amount_5'18; CHECK-DAG: DemandedBits: 0xff for   %lshr = lshr i32 %a, 519; CHECK-DAG: DemandedBits: 0x1fe0 for %a in   %lshr = lshr i32 %a, 520; CHECK-DAG: DemandedBits: 0xffffffff for 5 in   %lshr = lshr i32 %a, 521; CHECK-DAG: DemandedBits: 0xff for   %lshr.t = trunc i32 %lshr to i822; CHECK-DAG: DemandedBits: 0xff for %lshr in   %lshr.t = trunc i32 %lshr to i823;24  %lshr = lshr i32 %a, 525  %lshr.t = trunc i32 %lshr to i826  ret i8 %lshr.t27}28define i8 @test_lshr_const_amount_8(i32 %a) {29; CHECK-LABEL: 'test_lshr_const_amount_8'30; CHECK-DAG: DemandedBits: 0xff for   %lshr.t = trunc i32 %lshr to i831; CHECK-DAG: DemandedBits: 0xff for %lshr in   %lshr.t = trunc i32 %lshr to i832; CHECK-DAG: DemandedBits: 0xff for   %lshr = lshr i32 %a, 833; CHECK-DAG: DemandedBits: 0xff00 for %a in   %lshr = lshr i32 %a, 834; CHECK-DAG: DemandedBits: 0xffffffff for 8 in   %lshr = lshr i32 %a, 835;36  %lshr = lshr i32 %a, 837  %lshr.t = trunc i32 %lshr to i838  ret i8 %lshr.t39}40 41define i8 @test_lshr_const_amount_9(i32 %a) {42; CHECK-LABEL: 'test_lshr_const_amount_9'43; CHECK-DAG: DemandedBits: 0xff for   %lshr.t = trunc i32 %lshr to i844; CHECK-DAG: DemandedBits: 0xff for %lshr in   %lshr.t = trunc i32 %lshr to i845; CHECK-DAG: DemandedBits: 0xff for   %lshr = lshr i32 %a, 946; CHECK-DAG: DemandedBits: 0x1fe00 for %a in   %lshr = lshr i32 %a, 947; CHECK-DAG: DemandedBits: 0xffffffff for 9 in   %lshr = lshr i32 %a, 948;49  %lshr = lshr i32 %a, 950  %lshr.t = trunc i32 %lshr to i851  ret i8 %lshr.t52}53 54define i8 @test_lshr(i32 %a, i32 %b) {55; CHECK-LABEL: 'test_lshr'56; CHECK-DAG: DemandedBits: 0xff for   %lshr = lshr i32 %a, %b57; CHECK-DAG: DemandedBits: 0xffffffff for %a in   %lshr = lshr i32 %a, %b58; CHECK-DAG: DemandedBits: 0xffffffff for %b in   %lshr = lshr i32 %a, %b59; CHECK-DAG: DemandedBits: 0xff for   %lshr.t = trunc i32 %lshr to i860; CHECK-DAG: DemandedBits: 0xff for %lshr in   %lshr.t = trunc i32 %lshr to i861;62  %lshr = lshr i32 %a, %b63  %lshr.t = trunc i32 %lshr to i864  ret i8 %lshr.t65}66 67define i8 @test_lshr_range_1(i32 %a, i32 %b) {68; CHECK-LABEL: 'test_lshr_range_1'69; CHECK-DAG:  DemandedBits: 0xff for   %shl.t = trunc i32 %lshr to i870; CHECK-DAG:  DemandedBits: 0xff for %lshr in   %shl.t = trunc i32 %lshr to i871; CHECK-DAG:  DemandedBits: 0xff for   %lshr = lshr i32 %a, %b272; CHECK-DAG:  DemandedBits: 0x7ff for %a in   %lshr = lshr i32 %a, %b273; CHECK-DAG:  DemandedBits: 0xffffffff for %b2 in   %lshr = lshr i32 %a, %b274; CHECK-DAG:  DemandedBits: 0xffffffff for   %b2 = and i32 %b, 375; CHECK-DAG:  DemandedBits: 0x3 for %b in   %b2 = and i32 %b, 376; CHECK-DAG:  DemandedBits: 0xffffffff for 3 in   %b2 = and i32 %b, 377;78  %b2 = and i32 %b, 379  %lshr = lshr i32 %a, %b280  %shl.t = trunc i32 %lshr to i881  ret i8 %shl.t82}83 84define i32 @test_lshr_range_2(i32 %a, i32 %b) {85; CHECK-LABEL: 'test_lshr_range_2'86; CHECK-DAG:  DemandedBits: 0xffffffff for   %lshr = lshr i32 %a, %b287; CHECK-DAG:  DemandedBits: 0xffffffff for %a in   %lshr = lshr i32 %a, %b288; CHECK-DAG:  DemandedBits: 0xffffffff for %b2 in   %lshr = lshr i32 %a, %b289; CHECK-DAG:  DemandedBits: 0xffffffff for   %b2 = and i32 %b, 390; CHECK-DAG:  DemandedBits: 0x3 for %b in   %b2 = and i32 %b, 391; CHECK-DAG:  DemandedBits: 0xffffffff for 3 in   %b2 = and i32 %b, 392;93  %b2 = and i32 %b, 394  %lshr = lshr i32 %a, %b295  ret i32 %lshr96}97 98define i32 @test_lshr_range_3(i32 %a, i32 %b) {99; CHECK-LABEL: 'test_lshr_range_3'100; CHECK-DAG:  DemandedBits: 0xffff for   %lshr = lshr i32 %a, %b101; CHECK-DAG:  DemandedBits: 0xffffffff for %a in   %lshr = lshr i32 %a, %b102; CHECK-DAG:  DemandedBits: 0xffffffff for %b in   %lshr = lshr i32 %a, %b103; CHECK-DAG:  DemandedBits: 0xffffffff for   %shl = shl i32 %lshr, 16104; CHECK-DAG:  DemandedBits: 0xffff for %lshr in   %shl = shl i32 %lshr, 16105; CHECK-DAG:  DemandedBits: 0xffffffff for 16 in   %shl = shl i32 %lshr, 16106;107  %lshr = lshr i32 %a, %b108  %shl = shl i32 %lshr, 16109  ret i32 %shl110}111 112define i32 @test_lshr_range_4(i32 %a, i32 %b) {113; CHECK-LABEL: 'test_lshr_range_4'114; CHECK-DAG:  DemandedBits: 0xffffff00 for   %lshr = lshr i32 %a, %b115; CHECK-DAG:  DemandedBits: 0xffffff00 for %a in   %lshr = lshr i32 %a, %b116; CHECK-DAG:  DemandedBits: 0xffffffff for %b in   %lshr = lshr i32 %a, %b117; CHECK-DAG:  DemandedBits: 0xffffffff for   %shr = ashr i32 %lshr, 8118; CHECK-DAG:  DemandedBits: 0xffffff00 for %lshr in   %shr = ashr i32 %lshr, 8119; CHECK-DAG:  DemandedBits: 0xffffffff for 8 in   %shr = ashr i32 %lshr, 8120  %lshr = lshr i32 %a, %b121  %shr = ashr i32 %lshr, 8122  ret i32 %shr123}124 125define i32 @test_lshr_range_5(i32 %a, i32 %b) {126; CHECK-LABEL: 'test_lshr_range_5'127; CHECK-DAG:  DemandedBits: 0xff for   %1 = lshr i32 %a, %b128; CHECK-DAG:  DemandedBits: 0xffffffff for %a in   %1 = lshr i32 %a, %b129; CHECK-DAG:  DemandedBits: 0xffffffff for %b in   %1 = lshr i32 %a, %b130; CHECK-DAG:  DemandedBits: 0xffffffff for   %2 = and i32 %1, 255131; CHECK-DAG:  DemandedBits: 0xff for %1 in   %2 = and i32 %1, 255132; CHECK-DAG:  DemandedBits: 0xffffffff for 255 in   %2 = and i32 %1, 255133;134  %1 = lshr i32 %a, %b135  %2 = and i32 %1, 255136  ret i32 %2137}138 139define i32 @test_lshr_range_6(i32 %a, i32 %b) {140; CHECK-LABEL: 'test_lshr_range_6'141; CHECK-DAG: DemandedBits: 0xffff0000 for   %lshr.1 = lshr i32 %a, %b142; CHECK-DAG: DemandedBits: 0xffff0000 for %a in   %lshr.1 = lshr i32 %a, %b143; CHECK-DAG: DemandedBits: 0xffffffff for %b in   %lshr.1 = lshr i32 %a, %b144; CHECK-DAG: DemandedBits: 0xffffffff for   %lshr.2 = lshr i32 %lshr.1, 16145; CHECK-DAG: DemandedBits: 0xffff0000 for %lshr.1 in   %lshr.2 = lshr i32 %lshr.1, 16146; CHECK-DAG: DemandedBits: 0xffffffff for 16 in   %lshr.2 = lshr i32 %lshr.1, 16147;148  %lshr.1 = lshr i32 %a, %b149  %lshr.2 = lshr i32 %lshr.1, 16150  ret i32 %lshr.2151}152 153 154define i8 @test_lshr_var_amount(i32 %a, i32 %b){155; CHECK-LABEL: 'test_lshr_var_amount'156; CHECK-DAG: DemandedBits: 0xff for   %4 = lshr i32 %1, %3157; CHECK-DAG: DemandedBits: 0xffffffff for %1 in   %4 = lshr i32 %1, %3158; CHECK-DAG: DemandedBits: 0xffffffff for %3 in   %4 = lshr i32 %1, %3159; CHECK-DAG: DemandedBits: 0xff for   %5 = trunc i32 %4 to i8160; CHECK-DAG: DemandedBits: 0xff for %4 in   %5 = trunc i32 %4 to i8161; CHECK-DAG: DemandedBits: 0xffffffff for   %3 = zext i8 %2 to i32162; CHECK-DAG: DemandedBits: 0xff for %2 in   %3 = zext i8 %2 to i32163; CHECK-DAG: DemandedBits: 0xffffffff for   %1 = add nsw i32 %a, %b164; CHECK-DAG: DemandedBits: 0xffffffff for %a in   %1 = add nsw i32 %a, %b165; CHECK-DAG: DemandedBits: 0xffffffff for %b in   %1 = add nsw i32 %a, %b166; CHECK-DAG: DemandedBits: 0xff for   %2 = trunc i32 %1 to i8167; CHECK-DAG: DemandedBits: 0xff for %1 in   %2 = trunc i32 %1 to i8168;169  %1 = add nsw i32 %a, %b170  %2 = trunc i32 %1 to i8171  %3 = zext i8 %2 to i32172  %4 = lshr i32 %1, %3173  %5 = trunc i32 %4 to i8174  ret i8 %5175}176 177define i8 @test_lshr_var_amount_exact(i32 %a, i32 %b){178 ; CHECK-LABEL 'test_lshr_var_amount_nsw'179 ; CHECK-DAG: DemandedBits: 0xffffffff for   %1 = add nsw i32 %a, %b180 ; CHECK-DAG: DemandedBits: 0xffffffff for %a in   %1 = add nsw i32 %a, %b181 ; CHECK-DAG: DemandedBits: 0xffffffff for %b in   %1 = add nsw i32 %a, %b182 ; CHECK-DAG: DemandedBits: 0xff for   %2 = trunc i32 %1 to i8183 ; CHECK-DAG: DemandedBits: 0xff for %1 in   %2 = trunc i32 %1 to i8184 ; CHECK-DAG: DemandedBits: 0xffffffff for   %3 = zext i8 %2 to i32185 ; CHECK-DAG: DemandedBits: 0xff for %2 in   %3 = zext i8 %2 to i32186 ; CHECK-DAG: DemandedBits: 0xff for   %4 = lshr exact i32 %1, %3187 ; CHECK-DAG: DemandedBits: 0xffffffff for %1 in   %4 = lshr exact i32 %1, %3188 ; CHECK-DAG: DemandedBits: 0xffffffff for %3 in   %4 = lshr exact i32 %1, %3189 ; CHECK-DAG: DemandedBits: 0xff for   %5 = trunc i32 %4 to i8190 ; CHECK-DAG: DemandedBits: 0xff for %4 in   %5 = trunc i32 %4 to i8191 ;192  %1 = add nsw i32 %a, %b193  %2 = trunc i32 %1 to i8194  %3 = zext i8 %2 to i32195  %4 = lshr exact i32 %1, %3196  %5 = trunc i32 %4 to i8197  ret i8 %5198}199