| OLD | NEW |
| 1 ; Wrappers around the bit manipulation intrinsics, which use name mangling | 1 ; Wrappers around the bit manipulation intrinsics, which use name mangling |
| 2 ; for encoding the type in the name instead of plain "C" suffixes. | 2 ; for encoding the type in the name instead of plain "C" suffixes. |
| 3 ; E.g., my_ctpop(unsigned long long) vs __builtin_popcountll(...) | 3 ; E.g., my_ctpop(unsigned long long) vs __builtin_popcountll(...) |
| 4 ; Also, normalize the intrinsic to take a single parameter when there | 4 ; Also, normalize the intrinsic to take a single parameter when there |
| 5 ; can be two, as is the case for ctlz and cttz. | 5 ; can be two, as is the case for ctlz and cttz. |
| 6 | 6 |
| 7 target triple = "i686-pc-linux-gnu" | |
| 8 | |
| 9 declare i32 @llvm.ctlz.i32(i32, i1) | 7 declare i32 @llvm.ctlz.i32(i32, i1) |
| 10 declare i64 @llvm.ctlz.i64(i64, i1) | 8 declare i64 @llvm.ctlz.i64(i64, i1) |
| 11 | 9 |
| 12 declare i32 @llvm.cttz.i32(i32, i1) | 10 declare i32 @llvm.cttz.i32(i32, i1) |
| 13 declare i64 @llvm.cttz.i64(i64, i1) | 11 declare i64 @llvm.cttz.i64(i64, i1) |
| 14 | 12 |
| 15 declare i32 @llvm.ctpop.i32(i32) | 13 declare i32 @llvm.ctpop.i32(i32) |
| 16 declare i64 @llvm.ctpop.i64(i64) | 14 declare i64 @llvm.ctpop.i64(i64) |
| 17 | 15 |
| 18 define i32 @_Z7my_ctlzj(i32 %a) { | 16 define i32 @_Z7my_ctlzj(i32 %a) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 37 | 35 |
| 38 define i32 @_Z8my_ctpopj(i32 %a) { | 36 define i32 @_Z8my_ctpopj(i32 %a) { |
| 39 %x = call i32 @llvm.ctpop.i32(i32 %a) | 37 %x = call i32 @llvm.ctpop.i32(i32 %a) |
| 40 ret i32 %x | 38 ret i32 %x |
| 41 } | 39 } |
| 42 | 40 |
| 43 define i64 @_Z8my_ctpopy(i64 %a) { | 41 define i64 @_Z8my_ctpopy(i64 %a) { |
| 44 %x = call i64 @llvm.ctpop.i64(i64 %a) | 42 %x = call i64 @llvm.ctpop.i64(i64 %a) |
| 45 ret i64 %x | 43 ret i64 %x |
| 46 } | 44 } |
| OLD | NEW |