1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=m68k-linux -verify-machineinstrs | FileCheck %s 3 4declare {i32, i1} @llvm.sadd.with.overflow.i32(i32, i32) 5declare {i32, i1} @llvm.uadd.with.overflow.i32(i32, i32) 6 7define fastcc i32 @test5(i32 %v1, i32 %v2, ptr %X) nounwind { 8; CHECK-LABEL: test5: 9; CHECK: ; %bb.0: ; %entry 10; CHECK-NEXT: add.l %d1, %d0 11; CHECK-NEXT: bvs .LBB0_2 12; CHECK-NEXT: ; %bb.1: ; %normal 13; CHECK-NEXT: move.l #0, (%a0) 14; CHECK-NEXT: .LBB0_2: ; %overflow 15; CHECK-NEXT: rts 16entry: 17 %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %v1, i32 %v2) 18 %sum = extractvalue {i32, i1} %t, 0 19 %obit = extractvalue {i32, i1} %t, 1 20 br i1 %obit, label %overflow, label %normal 21 22normal: 23 store i32 0, ptr %X 24 br label %overflow 25 26overflow: 27 ret i32 %sum 28} 29 30define fastcc i1 @test6(i32 %v1, i32 %v2, ptr %X) nounwind { 31; CHECK-LABEL: test6: 32; CHECK: ; %bb.0: ; %entry 33; CHECK-NEXT: add.l %d1, %d0 34; CHECK-NEXT: bcs .LBB1_2 35; CHECK-NEXT: ; %bb.1: ; %normal 36; CHECK-NEXT: move.l #0, (%a0) 37; CHECK-NEXT: .LBB1_2: ; %carry 38; CHECK-NEXT: moveq #0, %d0 39; CHECK-NEXT: rts 40entry: 41 %t = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %v1, i32 %v2) 42 %sum = extractvalue {i32, i1} %t, 0 43 %obit = extractvalue {i32, i1} %t, 1 44 br i1 %obit, label %carry, label %normal 45 46normal: 47 store i32 0, ptr %X 48 br label %carry 49 50carry: 51 ret i1 false 52} 53 54define {i32, i1} @test7(i32 %v1, i32 %v2) nounwind { 55; CHECK-LABEL: test7: 56; CHECK: ; %bb.0: 57; CHECK-NEXT: move.l (4,%sp), %d0 58; CHECK-NEXT: add.l (8,%sp), %d0 59; CHECK-NEXT: scs %d1 60; CHECK-NEXT: rts 61 %t = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %v1, i32 %v2) 62 ret {i32, i1} %t 63} 64 65define fastcc i1 @test10(i32 %x) nounwind { 66; CHECK-LABEL: test10: 67; CHECK: ; %bb.0: ; %entry 68; CHECK-NEXT: add.l #1, %d0 69; CHECK-NEXT: svs %d0 70; CHECK-NEXT: rts 71entry: 72 %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %x, i32 1) 73 %obit = extractvalue {i32, i1} %t, 1 74 ret i1 %obit 75} 76