root / target-openrisc / helper.h @ 7162bdea
History | View | Annotate | Download (2.1 kB)
1 |
/*
|
---|---|
2 |
* OpenRISC helper defines
|
3 |
*
|
4 |
* Copyright (c) 2011-2012 Jia Liu <proljc@gmail.com>
|
5 |
*
|
6 |
* This library is free software; you can redistribute it and/or
|
7 |
* modify it under the terms of the GNU Lesser General Public
|
8 |
* License as published by the Free Software Foundation; either
|
9 |
* version 2 of the License, or (at your option) any later version.
|
10 |
*
|
11 |
* This library is distributed in the hope that it will be useful,
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14 |
* Lesser General Public License for more details.
|
15 |
*
|
16 |
* You should have received a copy of the GNU Lesser General Public
|
17 |
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
18 |
*/
|
19 |
|
20 |
#include "exec/def-helper.h" |
21 |
|
22 |
/* exception */
|
23 |
DEF_HELPER_FLAGS_2(exception, 0, void, env, i32) |
24 |
|
25 |
/* float */
|
26 |
DEF_HELPER_FLAGS_2(itofd, 0, i64, env, i64)
|
27 |
DEF_HELPER_FLAGS_2(itofs, 0, i32, env, i32)
|
28 |
DEF_HELPER_FLAGS_2(ftoid, 0, i64, env, i64)
|
29 |
DEF_HELPER_FLAGS_2(ftois, 0, i32, env, i32)
|
30 |
|
31 |
#define FOP_MADD(op) \
|
32 |
DEF_HELPER_FLAGS_3(float_ ## op ## _s, 0, i32, env, i32, i32) \ |
33 |
DEF_HELPER_FLAGS_3(float_ ## op ## _d, 0, i64, env, i64, i64) |
34 |
FOP_MADD(muladd) |
35 |
#undef FOP_MADD
|
36 |
|
37 |
#define FOP_CALC(op) \
|
38 |
DEF_HELPER_FLAGS_3(float_ ## op ## _s, 0, i32, env, i32, i32) \ |
39 |
DEF_HELPER_FLAGS_3(float_ ## op ## _d, 0, i64, env, i64, i64) |
40 |
FOP_CALC(add) |
41 |
FOP_CALC(sub) |
42 |
FOP_CALC(mul) |
43 |
FOP_CALC(div) |
44 |
FOP_CALC(rem) |
45 |
#undef FOP_CALC
|
46 |
|
47 |
#define FOP_CMP(op) \
|
48 |
DEF_HELPER_FLAGS_3(float_ ## op ## _s, 0, i32, env, i32, i32) \ |
49 |
DEF_HELPER_FLAGS_3(float_ ## op ## _d, 0, i64, env, i64, i64) |
50 |
FOP_CMP(eq) |
51 |
FOP_CMP(lt) |
52 |
FOP_CMP(le) |
53 |
FOP_CMP(ne) |
54 |
FOP_CMP(gt) |
55 |
FOP_CMP(ge) |
56 |
#undef FOP_CMP
|
57 |
|
58 |
/* int */
|
59 |
DEF_HELPER_FLAGS_1(ff1, 0, tl, tl)
|
60 |
DEF_HELPER_FLAGS_1(fl1, 0, tl, tl)
|
61 |
DEF_HELPER_FLAGS_3(mul32, 0, i32, env, i32, i32)
|
62 |
|
63 |
/* interrupt */
|
64 |
DEF_HELPER_FLAGS_1(rfe, 0, void, env) |
65 |
|
66 |
/* sys */
|
67 |
DEF_HELPER_FLAGS_4(mtspr, 0, void, env, tl, tl, tl) |
68 |
DEF_HELPER_FLAGS_4(mfspr, 0, tl, env, tl, tl, tl)
|
69 |
|
70 |
#include "exec/def-helper.h" |