| Index: crosstest/test_bitmanip_intrin.ll
|
| diff --git a/crosstest/test_bitmanip_intrin.ll b/crosstest/test_bitmanip_intrin.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..23df5382885ad720da478d12906847a26d8058fc
|
| --- /dev/null
|
| +++ b/crosstest/test_bitmanip_intrin.ll
|
| @@ -0,0 +1,46 @@
|
| +; Wrappers around the bit manipulation intrinsics, which use name mangling
|
| +; for encoding the type in the name instead of plain "C" suffixes.
|
| +; E.g., my_ctpop(unsigned long long) vs __builtin_popcountll(...)
|
| +; Also, normalize the intrinsic to take a single parameter when there
|
| +; can be two, as is the case for ctlz and cttz.
|
| +
|
| +target triple = "i686-pc-linux-gnu"
|
| +
|
| +declare i32 @llvm.ctlz.i32(i32, i1)
|
| +declare i64 @llvm.ctlz.i64(i64, i1)
|
| +
|
| +declare i32 @llvm.cttz.i32(i32, i1)
|
| +declare i64 @llvm.cttz.i64(i64, i1)
|
| +
|
| +declare i32 @llvm.ctpop.i32(i32)
|
| +declare i64 @llvm.ctpop.i64(i64)
|
| +
|
| +define i32 @_Z7my_ctlzj(i32 %a) {
|
| + %x = call i32 @llvm.ctlz.i32(i32 %a, i1 0)
|
| + ret i32 %x
|
| +}
|
| +
|
| +define i64 @_Z7my_ctlzy(i64 %a) {
|
| + %x = call i64 @llvm.ctlz.i64(i64 %a, i1 0)
|
| + ret i64 %x
|
| +}
|
| +
|
| +define i32 @_Z7my_cttzj(i32 %a) {
|
| + %x = call i32 @llvm.cttz.i32(i32 %a, i1 0)
|
| + ret i32 %x
|
| +}
|
| +
|
| +define i64 @_Z7my_cttzy(i64 %a) {
|
| + %x = call i64 @llvm.cttz.i64(i64 %a, i1 0)
|
| + ret i64 %x
|
| +}
|
| +
|
| +define i32 @_Z8my_ctpopj(i32 %a) {
|
| + %x = call i32 @llvm.ctpop.i32(i32 %a)
|
| + ret i32 %x
|
| +}
|
| +
|
| +define i64 @_Z8my_ctpopy(i64 %a) {
|
| + %x = call i64 @llvm.ctpop.i64(i64 %a)
|
| + ret i64 %x
|
| +}
|
|
|