[llvm] r305131 - [PowerPC] add memcmp test with one constant operand and equality cmp; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 9 16:15:14 PDT 2017


Author: spatel
Date: Fri Jun  9 18:15:14 2017
New Revision: 305131

URL: http://llvm.org/viewvc/llvm-project?rev=305131&view=rev
Log:
[PowerPC] add memcmp test with one constant operand and equality cmp; NFC

Modified:
    llvm/trunk/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll

Modified: llvm/trunk/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll?rev=305131&r1=305130&r2=305131&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll (original)
+++ llvm/trunk/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll Fri Jun  9 18:15:14 2017
@@ -166,9 +166,8 @@ define signext i32 @zeroEqualityTest05()
 }
 
 ; Validate with memcmp()?:
-; Function Attrs: nounwind readonly
-define signext i32 @zeroEqualityTest06() {
-; CHECK-LABEL: zeroEqualityTest06:
+define signext i32 @equalityFoldTwoConstants() {
+; CHECK-LABEL: equalityFoldTwoConstants:
 ; CHECK:       # BB#0: # %loadbb
 ; CHECK-NEXT:    addis 3, 2, .LzeroEqualityTest04.buffer1 at toc@ha
 ; CHECK-NEXT:    addis 4, 2, .LzeroEqualityTest04.buffer2 at toc@ha
@@ -194,6 +193,33 @@ define signext i32 @zeroEqualityTest06()
   %not.tobool = icmp eq i32 %call, 0
   %cond = zext i1 %not.tobool to i32
   ret i32 %cond
+}
+
+define signext i32 @equalityFoldOneConstant(i8* %X) {
+; CHECK-LABEL: equalityFoldOneConstant:
+; CHECK:       # BB#0: # %loadbb
+; CHECK-NEXT:    addis 4, 2, .LzeroEqualityTest04.buffer1 at toc@ha
+; CHECK-NEXT:    ld 5, 0(3)
+; CHECK-NEXT:    ld 4, .LzeroEqualityTest04.buffer1 at toc@l(4)
+; CHECK-NEXT:    cmpld 4, 5
+; CHECK-NEXT:    bne 0, .LBB6_2
+; CHECK-NEXT:  # BB#1: # %loadbb1
+; CHECK-NEXT:    addis 4, 2, .LzeroEqualityTest04.buffer1 at toc@ha+8
+; CHECK-NEXT:    ld 3, 8(3)
+; CHECK-NEXT:    ld 4, .LzeroEqualityTest04.buffer1 at toc@l+8(4)
+; CHECK-NEXT:    cmpld 4, 3
+; CHECK-NEXT:    li 3, 0
+; CHECK-NEXT:    beq 0, .LBB6_3
+; CHECK-NEXT:  .LBB6_2: # %res_block
+; CHECK-NEXT:    li 3, 1
+; CHECK-NEXT:  .LBB6_3: # %endblock
+; CHECK-NEXT:    cntlzw 3, 3
+; CHECK-NEXT:    srwi 3, 3, 5
+; CHECK-NEXT:    blr
+  %call = tail call signext i32 @memcmp(i8* bitcast ([15 x i32]* @zeroEqualityTest04.buffer1 to i8*), i8* %X, i64 16)
+  %not.tobool = icmp eq i32 %call, 0
+  %cond = zext i1 %not.tobool to i32
+  ret i32 %cond
 }
 
 define i1 @length2_eq_nobuiltin_attr(i8* %X, i8* %Y) {




More information about the llvm-commits mailing list