%scalar = type { [4 x i64] }
-define %scalar @pr31719(%scalar* nocapture readonly %this, %scalar %arg.b) {
+define %scalar @pr31719(%scalar* nocapture readonly %this, %scalar %arg.b) nounwind {
; CHECK-LABEL: pr31719:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: movq %rdi, %rax
%accumulator= type { i64, i64, i32 }
-define void @muladd(%accumulator* nocapture %this, i64 %arg.a, i64 %arg.b) {
+define void @muladd(%accumulator* nocapture %this, i64 %arg.a, i64 %arg.b) nounwind {
; CHECK-LABEL: muladd:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: movq %rdx, %rax
ret void
}
-define i64 @shiftadd(i64 %a, i64 %b, i64 %c, i64 %d) {
+define i64 @shiftadd(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
; CHECK-LABEL: shiftadd:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: movq %rdx, %rax
%S = type { [4 x i64] }
-define %S @readd(%S* nocapture readonly %this, %S %arg.b) {
+define %S @readd(%S* nocapture readonly %this, %S %arg.b) nounwind {
; CHECK-LABEL: readd:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: movq %rdi, %rax
ret %S %35
}
-define i128 @addcarry1_not(i128 %n) {
+define i128 @addcarry1_not(i128 %n) nounwind {
; CHECK-LABEL: addcarry1_not:
; CHECK: # %bb.0:
; CHECK-NEXT: movq %rdi, %rax
ret i128 %2
}
-define i128 @addcarry_to_subcarry(i64 %a, i64 %b) {
+define i128 @addcarry_to_subcarry(i64 %a, i64 %b) nounwind {
; CHECK-LABEL: addcarry_to_subcarry:
; CHECK: # %bb.0:
; CHECK-NEXT: movq %rdi, %rax
; Here %carryin is considered as valid carry flag for combining into ADDCARRY
; although %carryin does not come from any carry-producing instruction.
-define { i64, i1 } @addcarry_fake_carry(i64 %a, i64 %b, i1 %carryin) {
+define { i64, i1 } @addcarry_fake_carry(i64 %a, i64 %b, i1 %carryin) nounwind {
; CHECK-LABEL: addcarry_fake_carry:
; CHECK: # %bb.0:
; CHECK-NEXT: movq %rdi, %rax
}
; negative test: %carryin does not look like carry
-define { i64, i1 } @addcarry_carry_not_zext(i64 %a, i64 %b, i64 %carryin) {
+define { i64, i1 } @addcarry_carry_not_zext(i64 %a, i64 %b, i64 %carryin) nounwind {
; CHECK-LABEL: addcarry_carry_not_zext:
; CHECK: # %bb.0:
; CHECK-NEXT: movq %rdi, %rax
}
; negative test: %carryin does not look like carry
-define { i64, i1 } @addcarry_carry_not_i1(i64 %a, i64 %b, i8 %carryin) {
+define { i64, i1 } @addcarry_carry_not_i1(i64 %a, i64 %b, i8 %carryin) nounwind {
; CHECK-LABEL: addcarry_carry_not_i1:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $edx killed $edx def $rdx
%struct.U320 = type { [5 x i64] }
-define i32 @add_U320_without_i128_add(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) {
+define i32 @add_U320_without_i128_add(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) nounwind {
; CHECK-LABEL: add_U320_without_i128_add:
; CHECK: # %bb.0:
; CHECK-NEXT: pushq %r14
-; CHECK-NEXT: .cfi_def_cfa_offset 16
; CHECK-NEXT: pushq %rbx
-; CHECK-NEXT: .cfi_def_cfa_offset 24
-; CHECK-NEXT: .cfi_offset %rbx, -24
-; CHECK-NEXT: .cfi_offset %r14, -16
; CHECK-NEXT: movq 16(%rdi), %rax
; CHECK-NEXT: leaq (%rax,%rcx), %r10
; CHECK-NEXT: addq %rsi, (%rdi)
; CHECK-NEXT: movq %rsi, 32(%rdi)
; CHECK-NEXT: adcl $0, %eax
; CHECK-NEXT: popq %rbx
-; CHECK-NEXT: .cfi_def_cfa_offset 16
; CHECK-NEXT: popq %r14
-; CHECK-NEXT: .cfi_def_cfa_offset 8
; CHECK-NEXT: retq
%7 = getelementptr inbounds %struct.U320, %struct.U320* %0, i64 0, i32 0, i64 0
%8 = load i64, i64* %7, align 8
ret i32 %47
}
-define i32 @add_U320_without_i128_or(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) {
+define i32 @add_U320_without_i128_or(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) nounwind {
; CHECK-LABEL: add_U320_without_i128_or:
; CHECK: # %bb.0:
; CHECK-NEXT: addq %rsi, (%rdi)
ret i32 %43
}
-define i32 @add_U320_without_i128_xor(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) {
+define i32 @add_U320_without_i128_xor(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) nounwind {
; CHECK-LABEL: add_U320_without_i128_xor:
; CHECK: # %bb.0:
; CHECK-NEXT: addq %rsi, (%rdi)
; Either the primary addition can overflow or the addition of the carry, but
; they cannot both overflow.
-define i32 @bogus_add_U320_without_i128_and(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) {
+define i32 @bogus_add_U320_without_i128_and(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) nounwind {
; CHECK-LABEL: bogus_add_U320_without_i128_and:
; CHECK: # %bb.0:
; CHECK-NEXT: addq %rsi, (%rdi)
ret i32 %43
}
-define void @add_U320_without_i128_or_no_ret(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) {
+define void @add_U320_without_i128_or_no_ret(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) nounwind {
; CHECK-LABEL: add_U320_without_i128_or_no_ret:
; CHECK: # %bb.0:
; CHECK-NEXT: addq %rsi, (%rdi)
ret void
}
-define i32 @add_U320_uaddo(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) {
+define i32 @add_U320_uaddo(%struct.U320* nocapture dereferenceable(40) %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) nounwind {
; CHECK-LABEL: add_U320_uaddo:
; CHECK: # %bb.0:
; CHECK-NEXT: addq %rsi, (%rdi)
%struct.U192 = type { [3 x i64] }
-define void @PR39464(%struct.U192* noalias nocapture sret(%struct.U192) %0, %struct.U192* nocapture readonly dereferenceable(24) %1, %struct.U192* nocapture readonly dereferenceable(24) %2) {
+define void @PR39464(%struct.U192* noalias nocapture sret(%struct.U192) %0, %struct.U192* nocapture readonly dereferenceable(24) %1, %struct.U192* nocapture readonly dereferenceable(24) %2) nounwind {
; CHECK-LABEL: PR39464:
; CHECK: # %bb.0:
; CHECK-NEXT: movq %rdi, %rax
ret void
}
-define i32 @addcarry_ult(i32 %a, i32 %b, i32 %x, i32 %y) {
+define i32 @addcarry_ult(i32 %a, i32 %b, i32 %x, i32 %y) nounwind {
; CHECK-LABEL: addcarry_ult:
; CHECK: # %bb.0:
; CHECK-NEXT: movl %edi, %eax
ret i32 %r
}
-define i32 @addcarry_ugt(i32 %a, i32 %b, i32 %x, i32 %y) {
+define i32 @addcarry_ugt(i32 %a, i32 %b, i32 %x, i32 %y) nounwind {
; CHECK-LABEL: addcarry_ugt:
; CHECK: # %bb.0:
; CHECK-NEXT: movl %edi, %eax
ret i32 %r
}
-define i32 @addcarry_ule(i32 %a, i32 %b, i32 %x, i32 %y) {
+define i32 @addcarry_ule(i32 %a, i32 %b, i32 %x, i32 %y) nounwind {
; CHECK-LABEL: addcarry_ule:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $esi killed $esi def $rsi
ret i32 %r
}
-define i32 @addcarry_uge(i32 %a, i32 %b, i32 %x, i32 %y) {
+define i32 @addcarry_uge(i32 %a, i32 %b, i32 %x, i32 %y) nounwind {
; CHECK-LABEL: addcarry_uge:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $esi killed $esi def $rsi