llvm-6502/test/CodeGen/ARM/umulo-32.ll
Eric Christopher 38a18261b9 If we can, lower the multiply part of a umulo/smulo call to a libcall
with an invalid type then split the result and perform the overflow check
normally.

Fixes the 32-bit parts of rdar://8622122 and rdar://8774702.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123864 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-20 00:29:24 +00:00

15 lines
410 B
LLVM

; RUN: llc < %s -mtriple=thumbv6-apple-darwin | FileCheck %s
%umul.ty = type { i32, i1 }
define i32 @func(i32 %a) nounwind {
; CHECK: func
; CHECK: muldi3
%tmp0 = tail call %umul.ty @llvm.umul.with.overflow.i32(i32 %a, i32 37)
%tmp1 = extractvalue %umul.ty %tmp0, 0
%tmp2 = select i1 undef, i32 -1, i32 %tmp1
ret i32 %tmp2
}
declare %umul.ty @llvm.umul.with.overflow.i32(i32, i32) nounwind readnone