diff options
author | Sanjay Patel <spatel@rotateright.com> | 2017-06-09 23:15:14 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2017-06-09 23:15:14 +0000 |
commit | dd9627047202118037ea4347b74cfa593e2a2fe8 (patch) | |
tree | 4fda578baa1d7e5136128adba162dadc2384c22f /llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll | |
parent | be5cb93088429e598de3d7acfa5d9feb53b621fd (diff) | |
download | bcm5719-llvm-dd9627047202118037ea4347b74cfa593e2a2fe8.tar.gz bcm5719-llvm-dd9627047202118037ea4347b74cfa593e2a2fe8.zip |
[PowerPC] add memcmp test with one constant operand and equality cmp; NFC
llvm-svn: 305131
Diffstat (limited to 'llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll')
-rw-r--r-- | llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll b/llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll index 9e5a31d00b6..ad9078c8206 100644 --- a/llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll +++ b/llvm/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: |