summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorDavid Bolvansky <david.bolvansky@gmail.com>2019-06-11 11:09:25 +0000
committerDavid Bolvansky <david.bolvansky@gmail.com>2019-06-11 11:09:25 +0000
commitbc888f059d91f8480fb06af5765c30c639cf89a7 (patch)
treed63dd39580db64498dfbc334a21871384c141a0e /llvm/test/CodeGen/ARM
parent266f43964e9a2a426fca0b4e7944818a05bd8b05 (diff)
downloadbcm5719-llvm-bc888f059d91f8480fb06af5765c30c639cf89a7.tar.gz
bcm5719-llvm-bc888f059d91f8480fb06af5765c30c639cf89a7.zip
[NFC] Fixed arm/aarch64 test
llvm-svn: 363049
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/popcnt.ll22
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/popcnt.ll b/llvm/test/CodeGen/ARM/popcnt.ll
index e3ce5cd1ff9..b1e41da497e 100644
--- a/llvm/test/CodeGen/ARM/popcnt.ll
+++ b/llvm/test/CodeGen/ARM/popcnt.ll
@@ -281,6 +281,28 @@ define <4 x i32> @vclsQs32(<4 x i32>* %A) nounwind {
ret <4 x i32> %tmp2
}
+define i32 @ctpop_eq_one(i64 %x) nounwind readnone {
+; CHECK-LABEL: ctpop_eq_one:
+; CHECK: @ %bb.0:
+; CHECK-NEXT: subs r2, r0, #1
+; CHECK-NEXT: sbc r3, r1, #0
+; CHECK-NEXT: and r2, r0, r2
+; CHECK-NEXT: and r3, r1, r3
+; CHECK-NEXT: orr r2, r2, r3
+; CHECK-NEXT: rsbs r3, r2, #0
+; CHECK-NEXT: adc r2, r2, r3
+; CHECK-NEXT: orrs r0, r0, r1
+; CHECK-NEXT: movne r0, #1
+; CHECK-NEXT: and r0, r0, r2
+; CHECK-NEXT: mov pc, lr
+ %count = tail call i64 @llvm.ctpop.i64(i64 %x)
+ %cmp = icmp eq i64 %count, 1
+ %conv = zext i1 %cmp to i32
+ ret i32 %conv
+}
+
+declare i64 @llvm.ctpop.i64(i64) nounwind readnone
+
declare <8 x i8> @llvm.arm.neon.vcls.v8i8(<8 x i8>) nounwind readnone
declare <4 x i16> @llvm.arm.neon.vcls.v4i16(<4 x i16>) nounwind readnone
declare <2 x i32> @llvm.arm.neon.vcls.v2i32(<2 x i32>) nounwind readnone
OpenPOWER on IntegriCloud