1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2; RUN: llc -O3 -mtriple=aarch64 %s -o - | FileCheck %s 3 4target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" 5target triple = "aarch64-unknown-linux-gnu" 6 7define i32 @sub_icmp_i32(i32 %0, i32 %1) { 8; CHECK-LABEL: sub_icmp_i32: 9; CHECK: // %bb.0: 10; CHECK-NEXT: subs w0, w0, w1 11; CHECK-NEXT: b.le .LBB0_2 12; CHECK-NEXT: // %bb.1: 13; CHECK-NEXT: b _Z2f2i 14; CHECK-NEXT: .LBB0_2: 15; CHECK-NEXT: b _Z2f1i 16 %3 = sub nsw i32 %0, %1 17 %4 = icmp slt i32 %3, 1 18 br i1 %4, label %5, label %7 19 205: 21 %6 = tail call i32 @_Z2f1i(i32 %3) 22 br label %9 23 247: 25 %8 = tail call i32 @_Z2f2i(i32 %3) 26 br label %9 27 289: 29 %10 = phi i32 [ %6, %5 ], [ %8, %7 ] 30 ret i32 %10 31} 32 33 34 35define i64 @sub_icmp_i64(i64 %0, i64 %1) { 36; CHECK-LABEL: sub_icmp_i64: 37; CHECK: // %bb.0: 38; CHECK-NEXT: subs x0, x0, x1 39; CHECK-NEXT: b.le .LBB1_2 40; CHECK-NEXT: // %bb.1: 41; CHECK-NEXT: b _Z2f4l 42; CHECK-NEXT: .LBB1_2: 43; CHECK-NEXT: b _Z2f3l 44 %3 = sub nsw i64 %0, %1 45 %4 = icmp slt i64 %3, 1 46 br i1 %4, label %5, label %7 47 485: 49 %6 = tail call i64 @_Z2f3l(i64 %3) 50 br label %9 51 527: 53 %8 = tail call i64 @_Z2f4l(i64 %3) 54 br label %9 55 569: 57 %10 = phi i64 [ %6, %5 ], [ %8, %7 ] 58 ret i64 %10 59} 60 61define i64 @add_i64(i64 %0, i64 %1) { 62; CHECK-LABEL: add_i64: 63; CHECK: // %bb.0: 64; CHECK-NEXT: adds x0, x1, x0 65; CHECK-NEXT: b.le .LBB2_2 66; CHECK-NEXT: // %bb.1: 67; CHECK-NEXT: b _Z2f4l 68; CHECK-NEXT: .LBB2_2: 69; CHECK-NEXT: b _Z2f3l 70 %3 = add nsw i64 %1, %0 71 %4 = icmp slt i64 %3, 1 72 br i1 %4, label %5, label %7 73 745: 75 %6 = tail call i64 @_Z2f3l(i64 %3) 76 br label %9 77 787: 79 %8 = tail call i64 @_Z2f4l(i64 %3) 80 br label %9 81 829: 83 %10 = phi i64 [ %6, %5 ], [ %8, %7 ] 84 ret i64 %10 85} 86 87define i32 @add_i32(i32 %0, i32 %1) { 88; CHECK-LABEL: add_i32: 89; CHECK: // %bb.0: 90; CHECK-NEXT: adds w0, w1, w0 91; CHECK-NEXT: b.le .LBB3_2 92; CHECK-NEXT: // %bb.1: 93; CHECK-NEXT: b _Z2f4l 94; CHECK-NEXT: .LBB3_2: 95; CHECK-NEXT: b _Z2f3l 96 %3 = add nsw i32 %1, %0 97 %4 = icmp slt i32 %3, 1 98 br i1 %4, label %5, label %7 99 1005: 101 %6 = tail call i32 @_Z2f3l(i32 %3) 102 br label %9 103 1047: 105 %8 = tail call i32 @_Z2f4l(i32 %3) 106 br label %9 107 1089: 109 %10 = phi i32 [ %6, %5 ], [ %8, %7 ] 110 ret i32 %10 111} 112 113 114 115declare i32 @_Z2f1i(i32) 116declare i32 @_Z2f2i(i32) 117declare i64 @_Z2f3l(i64) 118declare i64 @_Z2f4l(i64) 119