36 lines · plain
1; RUN: llc < %s2 3 4@ok = internal constant [4 x i8] c"%d\0A\00"5@no = internal constant [4 x i8] c"no\0A\00"6 7 8 9define i1 @func2(i128 zeroext %v1, i128 zeroext %v2) nounwind {10entry:11 %t = call {i128, i1} @llvm.uadd.with.overflow.i128(i128 %v1, i128 %v2)12 %sum = extractvalue {i128, i1} %t, 013 %sum32 = trunc i128 %sum to i3214 %obit = extractvalue {i128, i1} %t, 115 br i1 %obit, label %carry, label %normal16 17normal:18 %t1 = tail call i32 (ptr, ...) @printf( ptr @ok, i32 %sum32 ) nounwind19 ret i1 true20 21carry:22 %t2 = tail call i32 (ptr, ...) @printf( ptr @no ) nounwind23 ret i1 false24}25 26declare i32 @printf(ptr, ...) nounwind27declare {i96, i1} @llvm.sadd.with.overflow.i96(i96, i96)28declare {i128, i1} @llvm.uadd.with.overflow.i128(i128, i128)29 30define i1 @func1(i96 signext %v1, i96 signext %v2) nounwind {31entry:32 %t = call {i96, i1} @llvm.sadd.with.overflow.i96(i96 %v1, i96 %v2)33 %obit = extractvalue {i96, i1} %t, 134 ret i1 %obit35}36