[llvm] 8f5b1d9 - [test][DAGCombine] Add tests for cmp+add -> addcarry
Paweł Bylica via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 25 13:17:34 PST 2022
Author: Paweł Bylica
Date: 2022-01-25T22:17:09+01:00
New Revision: 8f5b1d9e146250affd69c08989a2885b77f8463c
URL: https://github.com/llvm/llvm-project/commit/8f5b1d9e146250affd69c08989a2885b77f8463c
DIFF: https://github.com/llvm/llvm-project/commit/8f5b1d9e146250affd69c08989a2885b77f8463c.diff
LOG: [test][DAGCombine] Add tests for cmp+add -> addcarry
Tests for https://reviews.llvm.org/D118037.
Added:
Modified:
llvm/test/CodeGen/X86/addcarry.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/X86/addcarry.ll b/llvm/test/CodeGen/X86/addcarry.ll
index f8f7d7ed2c556..1f66d2c5a6c9d 100644
--- a/llvm/test/CodeGen/X86/addcarry.ll
+++ b/llvm/test/CodeGen/X86/addcarry.ll
@@ -1033,3 +1033,67 @@ define void @add_U256_without_i128_or_recursive(%uint256* sret(%uint256) %0, %ui
store i64 %37, i64* %41, align 8
ret void
}
+
+define i32 @addcarry_ult(i32 %a, i32 %b, i32 %x, i32 %y) {
+; CHECK-LABEL: addcarry_ult:
+; CHECK: # %bb.0:
+; CHECK-NEXT: # kill: def $esi killed $esi def $rsi
+; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
+; CHECK-NEXT: leal (%rdi,%rsi), %eax
+; CHECK-NEXT: cmpl %ecx, %edx
+; CHECK-NEXT: adcl $0, %eax
+; CHECK-NEXT: retq
+ %s = add i32 %a, %b
+ %k = icmp ult i32 %x, %y
+ %z = zext i1 %k to i32
+ %r = add i32 %s, %z
+ ret i32 %r
+}
+
+define i32 @addcarry_ugt(i32 %a, i32 %b, i32 %x, i32 %y) {
+; CHECK-LABEL: addcarry_ugt:
+; CHECK: # %bb.0:
+; CHECK-NEXT: # kill: def $esi killed $esi def $rsi
+; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
+; CHECK-NEXT: leal (%rdi,%rsi), %eax
+; CHECK-NEXT: cmpl %edx, %ecx
+; CHECK-NEXT: adcl $0, %eax
+; CHECK-NEXT: retq
+ %s = add i32 %a, %b
+ %k = icmp ugt i32 %x, %y
+ %z = zext i1 %k to i32
+ %r = add i32 %s, %z
+ ret i32 %r
+}
+
+define i32 @addcarry_ule(i32 %a, i32 %b, i32 %x, i32 %y) {
+; CHECK-LABEL: addcarry_ule:
+; CHECK: # %bb.0:
+; CHECK-NEXT: # kill: def $esi killed $esi def $rsi
+; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
+; CHECK-NEXT: leal (%rdi,%rsi), %eax
+; CHECK-NEXT: cmpl %edx, %ecx
+; CHECK-NEXT: sbbl $-1, %eax
+; CHECK-NEXT: retq
+ %s = add i32 %a, %b
+ %k = icmp ule i32 %x, %y
+ %z = zext i1 %k to i32
+ %r = add i32 %s, %z
+ ret i32 %r
+}
+
+define i32 @addcarry_uge(i32 %a, i32 %b, i32 %x, i32 %y) {
+; CHECK-LABEL: addcarry_uge:
+; CHECK: # %bb.0:
+; CHECK-NEXT: # kill: def $esi killed $esi def $rsi
+; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
+; CHECK-NEXT: leal (%rdi,%rsi), %eax
+; CHECK-NEXT: cmpl %ecx, %edx
+; CHECK-NEXT: sbbl $-1, %eax
+; CHECK-NEXT: retq
+ %s = add i32 %a, %b
+ %k = icmp uge i32 %x, %y
+ %z = zext i1 %k to i32
+ %r = add i32 %s, %z
+ ret i32 %r
+}
More information about the llvm-commits
mailing list