diff options
| author | David Bolvansky <david.bolvansky@gmail.com> | 2019-06-11 11:09:25 +0000 |
|---|---|---|
| committer | David Bolvansky <david.bolvansky@gmail.com> | 2019-06-11 11:09:25 +0000 |
| commit | bc888f059d91f8480fb06af5765c30c639cf89a7 (patch) | |
| tree | d63dd39580db64498dfbc334a21871384c141a0e /llvm/test/CodeGen/ARM | |
| parent | 266f43964e9a2a426fca0b4e7944818a05bd8b05 (diff) | |
| download | bcm5719-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.ll | 22 |
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 |

