1/* Copyright (C) 2012-2022 Free Software Foundation, Inc.
2   Contributed by Altera and Mentor Graphics, Inc.
3
4This file is free software; you can redistribute it and/or modify it
5under the terms of the GNU General Public License as published by the
6Free Software Foundation; either version 3, or (at your option) any
7later version.
8
9This file is distributed in the hope that it will be useful, but
10WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12General Public License for more details.
13
14Under Section 7 of GPL version 3, you are granted additional
15permissions described in the GCC Runtime Library Exception, version
163.1, as published by the Free Software Foundation.
17
18You should have received a copy of the GNU General Public License and
19a copy of the GCC Runtime Library Exception along with this program;
20see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
21<http://www.gnu.org/licenses/>.  */
22
23#include "lib2-nios2.h"
24
25/* 32-bit SI multiply for Nios II.  */
26
27SItype
28__mulsi3 (SItype a, SItype b)
29{
30  SItype res = 0;
31  USItype cnt = a;
32
33  while (cnt)
34    {
35      if (cnt & 1)
36	res += b;
37      b <<= 1;
38      cnt >>= 1;
39    }
40
41  return res;
42}
43