diff options
author | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2013-11-03 05:59:07 +0000 |
---|---|---|
committer | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2013-11-03 05:59:07 +0000 |
commit | 11cecbe1a070d461bb213a6037712f25e59a920a (patch) | |
tree | 0e2cde816bed87356cd66f8b6e30851c67ce5c7e /test | |
parent | d6b6425d3c576419cc5c570ae9e7711af49cf035 (diff) | |
download | external_llvm-11cecbe1a070d461bb213a6037712f25e59a920a.zip external_llvm-11cecbe1a070d461bb213a6037712f25e59a920a.tar.gz external_llvm-11cecbe1a070d461bb213a6037712f25e59a920a.tar.bz2 |
[SparcV9] Add ctpop instruction for i64. Also, expand ctlz, cttz and bswap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193941 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/SPARC/64bit.ll | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/CodeGen/SPARC/64bit.ll b/test/CodeGen/SPARC/64bit.ll index f778f9d..f5ed047 100644 --- a/test/CodeGen/SPARC/64bit.ll +++ b/test/CodeGen/SPARC/64bit.ll @@ -285,3 +285,26 @@ entry: store i64 0, i64* %0, align 8 ret i64 0 } + +; CHECK-LABEL: bit_ops +; CHECK: popc + +; OPT-LABEL: bit_ops +; OPT: popc + +define i64 @bit_ops(i64 %arg) { +entry: + %0 = tail call i64 @llvm.ctpop.i64(i64 %arg) + %1 = tail call i64 @llvm.ctlz.i64(i64 %arg, i1 true) + %2 = tail call i64 @llvm.cttz.i64(i64 %arg, i1 true) + %3 = tail call i64 @llvm.bswap.i64(i64 %arg) + %4 = add i64 %0, %1 + %5 = add i64 %2, %3 + %6 = add i64 %4, %5 + ret i64 %6 +} + +declare i64 @llvm.ctpop.i64(i64) nounwind readnone +declare i64 @llvm.ctlz.i64(i64, i1) nounwind readnone +declare i64 @llvm.cttz.i64(i64, i1) nounwind readnone +declare i64 @llvm.bswap.i64(i64) nounwind readnone |