diff options
author | Jia Liu <proljc@gmail.com> | 2012-07-20 15:50:44 +0800 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2012-07-27 21:13:00 +0000 |
commit | 5b5695073b1d8eda14f8253a1750193d98a42ae8 (patch) | |
tree | 1f2ef34c2e4d5dba5fa9859d37c6244f7f9ee876 /target-openrisc/helper.h | |
parent | e54a5aff1305bd538ba320c4b637e0c89029337e (diff) |
target-or32: Add float instruction helpers
Add OpenRISC float instruction helpers.
Signed-off-by: Jia Liu <proljc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'target-openrisc/helper.h')
-rw-r--r-- | target-openrisc/helper.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/target-openrisc/helper.h b/target-openrisc/helper.h index b4128ac3f6..635c69c423 100644 --- a/target-openrisc/helper.h +++ b/target-openrisc/helper.h @@ -22,6 +22,39 @@ /* exception */ DEF_HELPER_FLAGS_2(exception, 0, void, env, i32) +/* float */ +DEF_HELPER_FLAGS_2(itofd, 0, i64, env, i64) +DEF_HELPER_FLAGS_2(itofs, 0, i32, env, i32) +DEF_HELPER_FLAGS_2(ftoid, 0, i64, env, i64) +DEF_HELPER_FLAGS_2(ftois, 0, i32, env, i32) + +#define FOP_MADD(op) \ +DEF_HELPER_FLAGS_3(float_ ## op ## _s, 0, i32, env, i32, i32) \ +DEF_HELPER_FLAGS_3(float_ ## op ## _d, 0, i64, env, i64, i64) +FOP_MADD(muladd) +#undef FOP_MADD + +#define FOP_CALC(op) \ +DEF_HELPER_FLAGS_3(float_ ## op ## _s, 0, i32, env, i32, i32) \ +DEF_HELPER_FLAGS_3(float_ ## op ## _d, 0, i64, env, i64, i64) +FOP_CALC(add) +FOP_CALC(sub) +FOP_CALC(mul) +FOP_CALC(div) +FOP_CALC(rem) +#undef FOP_CALC + +#define FOP_CMP(op) \ +DEF_HELPER_FLAGS_3(float_ ## op ## _s, 0, i32, env, i32, i32) \ +DEF_HELPER_FLAGS_3(float_ ## op ## _d, 0, i64, env, i64, i64) +FOP_CMP(eq) +FOP_CMP(lt) +FOP_CMP(le) +FOP_CMP(ne) +FOP_CMP(gt) +FOP_CMP(ge) +#undef FOP_CMP + /* int */ DEF_HELPER_FLAGS_1(ff1, 0, tl, tl) DEF_HELPER_FLAGS_1(fl1, 0, tl, tl) |