bit_manipulation.odin 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Bit Manipulation Intrinsics
  2. package sys_llvm
  3. /*
  4. @(default_calling_convention="none")
  5. foreign _ {
  6. @(link_name="llvm.bitreverse.i8")
  7. bit_reverse_u8 :: proc(u8) -> u8 ---
  8. @(link_name="llvm.bitreverse.i16")
  9. bit_reverse_u16 :: proc(u16) -> u16 ---
  10. @(link_name="llvm.bitreverse.i32")
  11. bit_reverse_u32 :: proc(u32) -> u32 ---
  12. @(link_name="llvm.bitreverse.i64")
  13. bit_reverse_u64 :: proc(u64) -> u64 ---
  14. @(link_name="llvm.bitreverse.i128")
  15. bit_reverse_u128 :: proc(u128) -> u128 ---
  16. @(link_name="llvm.bswap.i16")
  17. bswap_u16 :: proc(u16) -> u16 ---
  18. @(link_name="llvm.bswap.i32")
  19. bswap_u32 :: proc(u32) -> u32 ---
  20. @(link_name="llvm.bswap.i64")
  21. bswap_u64 :: proc(u64) -> u64 ---
  22. @(link_name="llvm.bswap.i128")
  23. bswap_u128 :: proc(u128) -> u128 ---
  24. @(link_name="llvm.ctpop.i8")
  25. ctpop_u8 :: proc(u8) -> u8 ---
  26. @(link_name="llvm.ctpop.i16")
  27. ctpop_u16 :: proc(u16) -> u16 ---
  28. @(link_name="llvm.ctpop.i32")
  29. ctpop_u32 :: proc(u32) -> u32 ---
  30. @(link_name="llvm.ctpop.i64")
  31. ctpop_u64 :: proc(u64) -> u64 ---
  32. @(link_name="llvm.ctpop.i128")
  33. ctpop_u128 :: proc(u128) -> u128 ---
  34. @(link_name="llvm.ctlz.i8")
  35. ctlz_u8 :: proc(u8) -> u8 ---
  36. @(link_name="llvm.ctlz.i16")
  37. ctlz_u16 :: proc(u16) -> u16 ---
  38. @(link_name="llvm.ctlz.i32")
  39. ctlz_u32 :: proc(u32) -> u32 ---
  40. @(link_name="llvm.ctlz.i64")
  41. ctlz_u64 :: proc(u64) -> u64 ---
  42. @(link_name="llvm.ctlz.i128")
  43. ctlz_u128 :: proc(u128) -> u128 ---
  44. @(link_name="llvm.cttz.i8")
  45. cttz_u8 :: proc(u8) -> u8 ---
  46. @(link_name="llvm.cttz.i16")
  47. cttz_u16 :: proc(u16) -> u16 ---
  48. @(link_name="llvm.cttz.i32")
  49. cttz_u32 :: proc(u32) -> u32 ---
  50. @(link_name="llvm.cttz.i64")
  51. cttz_u64 :: proc(u64) -> u64 ---
  52. @(link_name="llvm.cttz.i128")
  53. cttz_u128 :: proc(u128) -> u128 ---
  54. @(link_name="llvm.fshl.i8")
  55. fshl_u8 :: proc(a, b, c: u8) -> u8 ---
  56. @(link_name="llvm.fshl.i16")
  57. fshl_u16 :: proc(a, b, c: u16) -> u16 ---
  58. @(link_name="llvm.fshl.i32")
  59. fshl_u32 :: proc(a, b, c: u32) -> u32 ---
  60. @(link_name="llvm.fshl.i64")
  61. fshl_u64 :: proc(a, b, c: u64) -> u64 ---
  62. @(link_name="llvm.fshl.i128")
  63. fshl_u128 :: proc(a, b, c: u128) -> u128 ---
  64. @(link_name="llvm.fshr.i8")
  65. fshr_u8 :: proc(a, b, c: u8) -> u8 ---
  66. @(link_name="llvm.fshr.i16")
  67. fshr_u16 :: proc(a, b, c: u16) -> u16 ---
  68. @(link_name="llvm.fshr.i32")
  69. fshr_u32 :: proc(a, b, c: u32) -> u32 ---
  70. @(link_name="llvm.fshr.i64")
  71. fshr_u64 :: proc(a, b, c: u64) -> u64 ---
  72. @(link_name="llvm.fshr.i128")
  73. fshr_u128 :: proc(a, b, c: u128) -> u128 ---
  74. }
  75. */