diff options
author | Amaury Sechet <deadalnix@gmail.com> | 2019-03-11 01:25:48 +0000 |
---|---|---|
committer | Amaury Sechet <deadalnix@gmail.com> | 2019-03-11 01:25:48 +0000 |
commit | a5820cbd20fac070de828166e4accc2719d4d14f (patch) | |
tree | 5b1f5533fa468a12da8cb26c5f2e1be738ae64f3 | |
parent | d8ebbe4a763be565769b484bf8fca733b7d131b3 (diff) | |
download | llvm-a5820cbd20fac070de828166e4accc2719d4d14f.zip llvm-a5820cbd20fac070de828166e4accc2719d4d14f.tar.gz llvm-a5820cbd20fac070de828166e4accc2719d4d14f.tar.bz2 |
Add test case for add to sub post legalization. NFC
llvm-svn: 355797
-rw-r--r-- | llvm/test/CodeGen/X86/addcarry.ll | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/addcarry.ll b/llvm/test/CodeGen/X86/addcarry.ll index 956d52c..33892ad 100644 --- a/llvm/test/CodeGen/X86/addcarry.ll +++ b/llvm/test/CodeGen/X86/addcarry.ll @@ -386,3 +386,29 @@ define i128 @addcarry1_not(i128 %n) { %2 = add i128 %1, 1 ret i128 %2 } + +define i128 @addcarry_to_subcarry(i64 %a, i64 %b) { +; CHECK-LABEL: addcarry_to_subcarry: +; CHECK: # %bb.0: +; CHECK-NEXT: notq %rsi +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: movq %rdi, %rcx +; CHECK-NEXT: addq %rsi, %rcx +; CHECK-NEXT: setb %al +; CHECK-NEXT: addq $1, %rcx +; CHECK-NEXT: adcq %rdi, %rax +; CHECK-NEXT: setb %cl +; CHECK-NEXT: movzbl %cl, %edx +; CHECK-NEXT: addq %rsi, %rax +; CHECK-NEXT: adcq $0, %rdx +; CHECK-NEXT: retq + %notb = xor i64 %b, -1 + %notb128 = zext i64 %notb to i128 + %a128 = zext i64 %a to i128 + %sum1 = add i128 %a128, 1 + %sub1 = add i128 %sum1, %notb128 + %hi = lshr i128 %sub1, 64 + %sum2 = add i128 %hi, %a128 + %sub2 = add i128 %sum2, %notb128 + ret i128 %sub2 +} |