riscv32.rs 422 B

123456789101112131415161718
  1. intrinsics! {
  2. // Implementation from gcc
  3. // https://raw.githubusercontent.com/gcc-mirror/gcc/master/libgcc/config/epiphany/mulsi3.c
  4. pub extern "C" fn __mulsi3(a: u32, b: u32) -> u32 {
  5. let (mut a, mut b) = (a, b);
  6. let mut r: usize = 0;
  7. while a > 0 {
  8. if a & 1 > 0 {
  9. r += b;
  10. }
  11. a >>= 1;
  12. b <<= 1;
  13. }
  14. r
  15. }
  16. }