summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2017-06-09 23:15:14 +0000
committerSanjay Patel <spatel@rotateright.com>2017-06-09 23:15:14 +0000
commitdd9627047202118037ea4347b74cfa593e2a2fe8 (patch)
tree4fda578baa1d7e5136128adba162dadc2384c22f /llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll
parentbe5cb93088429e598de3d7acfa5d9feb53b621fd (diff)
downloadbcm5719-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.ll32
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:
OpenPOWER on IntegriCloud