1 DEF_HELPER_FLAGS_2(div_i32
, TCG_CALL_NO_RWG_SE
, s32
, s32
, s32
)
2 DEF_HELPER_FLAGS_2(rem_i32
, TCG_CALL_NO_RWG_SE
, s32
, s32
, s32
)
3 DEF_HELPER_FLAGS_2(divu_i32
, TCG_CALL_NO_RWG_SE
, i32
, i32
, i32
)
4 DEF_HELPER_FLAGS_2(remu_i32
, TCG_CALL_NO_RWG_SE
, i32
, i32
, i32
)
6 DEF_HELPER_FLAGS_2(div_i64
, TCG_CALL_NO_RWG_SE
, s64
, s64
, s64
)
7 DEF_HELPER_FLAGS_2(rem_i64
, TCG_CALL_NO_RWG_SE
, s64
, s64
, s64
)
8 DEF_HELPER_FLAGS_2(divu_i64
, TCG_CALL_NO_RWG_SE
, i64
, i64
, i64
)
9 DEF_HELPER_FLAGS_2(remu_i64
, TCG_CALL_NO_RWG_SE
, i64
, i64
, i64
)
11 DEF_HELPER_FLAGS_2(shl_i64
, TCG_CALL_NO_RWG_SE
, i64
, i64
, i64
)
12 DEF_HELPER_FLAGS_2(shr_i64
, TCG_CALL_NO_RWG_SE
, i64
, i64
, i64
)
13 DEF_HELPER_FLAGS_2(sar_i64
, TCG_CALL_NO_RWG_SE
, s64
, s64
, s64
)
15 DEF_HELPER_FLAGS_2(mulsh_i64
, TCG_CALL_NO_RWG_SE
, s64
, s64
, s64
)
16 DEF_HELPER_FLAGS_2(muluh_i64
, TCG_CALL_NO_RWG_SE
, i64
, i64
, i64
)
20 DEF_HELPER_FLAGS_5(atomic_cmpxchgb
, TCG_CALL_NO_WG
,
21 i32
, env
, tl
, i32
, i32
, i32
)
22 DEF_HELPER_FLAGS_5(atomic_cmpxchgw_be
, TCG_CALL_NO_WG
,
23 i32
, env
, tl
, i32
, i32
, i32
)
24 DEF_HELPER_FLAGS_5(atomic_cmpxchgl_be
, TCG_CALL_NO_WG
,
25 i32
, env
, tl
, i32
, i32
, i32
)
26 DEF_HELPER_FLAGS_5(atomic_cmpxchgq_be
, TCG_CALL_NO_WG
,
27 i64
, env
, tl
, i64
, i64
, i32
)
28 DEF_HELPER_FLAGS_5(atomic_cmpxchgw_le
, TCG_CALL_NO_WG
,
29 i32
, env
, tl
, i32
, i32
, i32
)
30 DEF_HELPER_FLAGS_5(atomic_cmpxchgl_le
, TCG_CALL_NO_WG
,
31 i32
, env
, tl
, i32
, i32
, i32
)
32 DEF_HELPER_FLAGS_5(atomic_cmpxchgq_le
, TCG_CALL_NO_WG
,
33 i64
, env
, tl
, i64
, i64
, i32
)
35 #define GEN_ATOMIC_HELPERS(NAME) \
36 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \
37 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
38 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \
39 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
40 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \
41 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
42 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \
43 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
44 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \
45 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
46 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_le), \
47 TCG_CALL_NO_WG, i64, env, tl, i64, i32) \
48 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_be), \
49 TCG_CALL_NO_WG, i64, env, tl, i64, i32)
53 DEF_HELPER_FLAGS_4(atomic_cmpxchgb
, TCG_CALL_NO_WG
, i32
, env
, tl
, i32
, i32
)
54 DEF_HELPER_FLAGS_4(atomic_cmpxchgw_be
, TCG_CALL_NO_WG
, i32
, env
, tl
, i32
, i32
)
55 DEF_HELPER_FLAGS_4(atomic_cmpxchgl_be
, TCG_CALL_NO_WG
, i32
, env
, tl
, i32
, i32
)
56 DEF_HELPER_FLAGS_4(atomic_cmpxchgq_be
, TCG_CALL_NO_WG
, i64
, env
, tl
, i64
, i64
)
57 DEF_HELPER_FLAGS_4(atomic_cmpxchgw_le
, TCG_CALL_NO_WG
, i32
, env
, tl
, i32
, i32
)
58 DEF_HELPER_FLAGS_4(atomic_cmpxchgl_le
, TCG_CALL_NO_WG
, i32
, env
, tl
, i32
, i32
)
59 DEF_HELPER_FLAGS_4(atomic_cmpxchgq_le
, TCG_CALL_NO_WG
, i64
, env
, tl
, i64
, i64
)
61 #define GEN_ATOMIC_HELPERS(NAME) \
62 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), b), \
63 TCG_CALL_NO_WG, i32, env, tl, i32) \
64 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_le), \
65 TCG_CALL_NO_WG, i32, env, tl, i32) \
66 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_be), \
67 TCG_CALL_NO_WG, i32, env, tl, i32) \
68 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_le), \
69 TCG_CALL_NO_WG, i32, env, tl, i32) \
70 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_be), \
71 TCG_CALL_NO_WG, i32, env, tl, i32) \
72 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), q_le), \
73 TCG_CALL_NO_WG, i64, env, tl, i64) \
74 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), q_be), \
75 TCG_CALL_NO_WG, i64, env, tl, i64)
77 #endif /* CONFIG_SOFTMMU */
79 GEN_ATOMIC_HELPERS(fetch_add
)
80 GEN_ATOMIC_HELPERS(fetch_and
)
81 GEN_ATOMIC_HELPERS(fetch_or
)
82 GEN_ATOMIC_HELPERS(fetch_xor
)
84 GEN_ATOMIC_HELPERS(add_fetch
)
85 GEN_ATOMIC_HELPERS(and_fetch
)
86 GEN_ATOMIC_HELPERS(or_fetch
)
87 GEN_ATOMIC_HELPERS(xor_fetch
)
89 GEN_ATOMIC_HELPERS(xchg
)
91 #undef GEN_ATOMIC_HELPERS