From: Sanjay Patel Date: Fri, 9 Jun 2017 23:15:14 +0000 (+0000) Subject: [PowerPC] add memcmp test with one constant operand and equality cmp; NFC X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a1e0378901fe8f55c26017c208fbd49e50693778;p=llvm [PowerPC] add memcmp test with one constant operand and equality cmp; NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305131 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll b/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll index 9e5a31d00b6..ad9078c8206 100644 --- a/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll +++ b/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll @@ -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@toc@ha ; CHECK-NEXT: addis 4, 2, .LzeroEqualityTest04.buffer2@toc@ha @@ -196,6 +195,33 @@ define signext i32 @zeroEqualityTest06() { ret i32 %cond } +define signext i32 @equalityFoldOneConstant(i8* %X) { +; CHECK-LABEL: equalityFoldOneConstant: +; CHECK: # BB#0: # %loadbb +; CHECK-NEXT: addis 4, 2, .LzeroEqualityTest04.buffer1@toc@ha +; CHECK-NEXT: ld 5, 0(3) +; CHECK-NEXT: ld 4, .LzeroEqualityTest04.buffer1@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@toc@ha+8 +; CHECK-NEXT: ld 3, 8(3) +; CHECK-NEXT: ld 4, .LzeroEqualityTest04.buffer1@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) { ; CHECK-LABEL: length2_eq_nobuiltin_attr: ; CHECK: # BB#0: