diff --git a/llvm/test/CodeGen/AArch64/aarch64-icmp-opt.ll b/llvm/test/CodeGen/AArch64/aarch64-icmp-opt.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/aarch64-icmp-opt.ll @@ -0,0 +1,87 @@ +source_filename = "/app/example.cpp" +target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" +target triple = "aarch64-unknown-linux-gnu" + +define i32 @sub_icmp_i32(i32 %0, i32 %1) { + %3 = sub nsw i32 %0, %1 + %4 = icmp slt i32 %3, 1 + br i1 %4, label %5, label %7 + +5: + %6 = tail call i32 @_Z2f1i(i32 %3) + br label %9 + +7: + %8 = tail call i32 @_Z2f2i(i32 %3) + br label %9 + +9: + %10 = phi i32 [ %6, %5 ], [ %8, %7 ] + ret i32 %10 +} + + + +define i64 @sub_icmp_i64(i64 %0, i64 %1) { + %3 = sub nsw i64 %0, %1 + %4 = icmp slt i64 %3, 1 + br i1 %4, label %5, label %7 + +5: + %6 = tail call i64 @_Z2f3l(i64 %3) + br label %9 + +7: + %8 = tail call i64 @_Z2f4l(i64 %3) + br label %9 + +9: + %10 = phi i64 [ %6, %5 ], [ %8, %7 ] + ret i64 %10 +} + +define i64 @add_i64(i64 %0, i64 %1) { + %3 = add nsw i64 %1, %0 + %4 = icmp slt i64 %3, 1 + br i1 %4, label %5, label %7 + +5: + %6 = tail call i64 @_Z2f3l(i64 %3) + br label %9 + +7: + %8 = tail call i64 @_Z2f4l(i64 %3) + br label %9 + +9: + %10 = phi i64 [ %6, %5 ], [ %8, %7 ] + ret i64 %10 +} + +define i32 @add_i32(i32 %0, i32 %1) { + %3 = add nsw i32 %1, %0 + %4 = icmp slt i32 %3, 1 + br i1 %4, label %5, label %7 + +5: + %6 = tail call i32 @_Z2f3l(i32 %3) + br label %9 + +7: + %8 = tail call i32 @_Z2f4l(i32 %3) + br label %9 + +9: + %10 = phi i32 [ %6, %5 ], [ %8, %7 ] + ret i32 %10 +} + + + +declare i32 @_Z2f1i(i32) +declare i32 @_Z2f2i(i32) +declare i64 @_Z2f3l(i64) +declare i64 @_Z2f4l(i64) + + +