| //===--- mulsi3.S - Integer multiplication routines routines ---===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is dual licensed under the MIT and the University of Illinois Open |
| // Source Licenses. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #if !defined(__riscv_mul) && __riscv_xlen == 32 |
| .text |
| .align 2 |
| |
| .globl __mulsi3 |
| .type __mulsi3, @function |
| __mulsi3: |
| mv a2, a0 |
| mv a0, zero |
| .L1: |
| andi a3, a1, 1 |
| beqz a3, .L2 |
| add a0, a0, a2 |
| .L2: |
| srli a1, a1, 1 |
| slli a2, a2, 1 |
| bnez a1, .L1 |
| ret |
| #endif |