75 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=aarch64-linux-gnu -O3 -o - %s | FileCheck %s3 4define { i32, i32 } @adds_cmn(i32 noundef %x, i32 noundef %y) {5; CHECK-LABEL: adds_cmn:6; CHECK: // %bb.0: // %entry7; CHECK-NEXT: adds w1, w0, w18; CHECK-NEXT: cset w0, lo9; CHECK-NEXT: ret10entry:11 %0 = tail call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %x, i32 %y)12 %_4.1 = extractvalue { i32, i1 } %0, 113 %_5 = add nuw i32 %x, %y14 %_0.sroa.3.0 = select i1 %_4.1, i32 undef, i32 %_515 %not._4.1 = xor i1 %_4.1, true16 %_0.sroa.0.0 = zext i1 %not._4.1 to i3217 %1 = insertvalue { i32, i32 } poison, i32 %_0.sroa.0.0, 018 %2 = insertvalue { i32, i32 } %1, i32 %_0.sroa.3.0, 119 ret { i32, i32 } %220}21 22define { i32, i32 } @adds_cmn_c(i32 noundef %x, i32 noundef %y) {23; CHECK-LABEL: adds_cmn_c:24; CHECK: // %bb.0: // %entry25; CHECK-NEXT: adds w1, w0, w126; CHECK-NEXT: cset w0, lo27; CHECK-NEXT: ret28entry:29 %0 = tail call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %x, i32 %y)30 %_4.1 = extractvalue { i32, i1 } %0, 131 %_5 = add nuw i32 %y, %x32 %_0.sroa.3.0 = select i1 %_4.1, i32 undef, i32 %_533 %not._4.1 = xor i1 %_4.1, true34 %_0.sroa.0.0 = zext i1 %not._4.1 to i3235 %1 = insertvalue { i32, i32 } poison, i32 %_0.sroa.0.0, 036 %2 = insertvalue { i32, i32 } %1, i32 %_0.sroa.3.0, 137 ret { i32, i32 } %238}39 40define { i32, i32 } @subs_cmp(i32 noundef %x, i32 noundef %y) {41; CHECK-LABEL: subs_cmp:42; CHECK: // %bb.0: // %entry43; CHECK-NEXT: subs w1, w0, w144; CHECK-NEXT: cset w0, hs45; CHECK-NEXT: ret46entry:47 %0 = tail call { i32, i1 } @llvm.usub.with.overflow.i32(i32 %x, i32 %y)48 %_4.1 = extractvalue { i32, i1 } %0, 149 %_5 = sub nuw i32 %x, %y50 %_0.sroa.3.0 = select i1 %_4.1, i32 undef, i32 %_551 %not._4.1 = xor i1 %_4.1, true52 %_0.sroa.0.0 = zext i1 %not._4.1 to i3253 %1 = insertvalue { i32, i32 } poison, i32 %_0.sroa.0.0, 054 %2 = insertvalue { i32, i32 } %1, i32 %_0.sroa.3.0, 155 ret { i32, i32 } %256}57 58define { i32, i32 } @subs_cmp_c(i32 noundef %x, i32 noundef %y) {59; CHECK-LABEL: subs_cmp_c:60; CHECK: // %bb.0: // %entry61; CHECK-NEXT: subs w1, w1, w062; CHECK-NEXT: cset w0, ls63; CHECK-NEXT: ret64entry:65 %0 = tail call { i32, i1 } @llvm.usub.with.overflow.i32(i32 %x, i32 %y)66 %_4.1 = extractvalue { i32, i1 } %0, 167 %_5 = sub nuw i32 %y, %x68 %_0.sroa.3.0 = select i1 %_4.1, i32 undef, i32 %_569 %not._4.1 = xor i1 %_4.1, true70 %_0.sroa.0.0 = zext i1 %not._4.1 to i3271 %1 = insertvalue { i32, i32 } poison, i32 %_0.sroa.0.0, 072 %2 = insertvalue { i32, i32 } %1, i32 %_0.sroa.3.0, 173 ret { i32, i32 } %274}75