55 lines · plain
1; RUN: llc -mtriple=aarch64-apple-darwin -O0 -fast-isel-abort=1 -verify-machineinstrs < %s2 3; Test that we don't fold the shift.4define i64 @fold_shift_test(i64 %a, i1 %c) {5 %1 = sub i64 %a, 86 %2 = ashr i64 %1, 37 br i1 %c, label %bb1, label %bb28bb1:9 %3 = icmp ult i64 0, %210 br i1 %3, label %bb2, label %bb311bb2:12 ret i64 113bb3:14 ret i64 215}16 17; Test that we don't fold the sign-extend.18define i64 @fold_sext_test1(i32 %a, i1 %c) {19 %1 = sub i32 %a, 820 %2 = sext i32 %1 to i6421 br i1 %c, label %bb1, label %bb222bb1:23 %3 = icmp ult i64 0, %224 br i1 %3, label %bb2, label %bb325bb2:26 ret i64 127bb3:28 ret i64 229}30 31; Test that we don't fold the sign-extend.32define i64 @fold_sext_test2(i32 %a, i1 %c) {33 %1 = sub i32 %a, 834 %2 = sext i32 %1 to i6435 br i1 %c, label %bb1, label %bb236bb1:37 %3 = shl i64 %2, 438 ret i64 %339bb2:40 ret i64 %241}42 43; Test that we clear the kill flag.44define i32 @fold_kill_test(i32 %a) {45 %1 = sub i32 %a, 846 %2 = shl i32 %1, 347 %3 = icmp ult i32 0, %248 br i1 %3, label %bb1, label %bb249bb1:50 ret i32 %251bb2:52 %4 = add i32 %2, 453 ret i32 %454}55