1944eea96SRichard Henderson DEF_HELPER_FLAGS_2(div_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) 2944eea96SRichard Henderson DEF_HELPER_FLAGS_2(rem_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) 3944eea96SRichard Henderson DEF_HELPER_FLAGS_2(divu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) 4944eea96SRichard Henderson DEF_HELPER_FLAGS_2(remu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) 596e132e2SBlue Swirl 6944eea96SRichard Henderson DEF_HELPER_FLAGS_2(div_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) 7944eea96SRichard Henderson DEF_HELPER_FLAGS_2(rem_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) 8944eea96SRichard Henderson DEF_HELPER_FLAGS_2(divu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) 9944eea96SRichard Henderson DEF_HELPER_FLAGS_2(remu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) 1031d66551SAurelien Jarno 11944eea96SRichard Henderson DEF_HELPER_FLAGS_2(shl_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) 12944eea96SRichard Henderson DEF_HELPER_FLAGS_2(shr_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) 13944eea96SRichard Henderson DEF_HELPER_FLAGS_2(sar_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) 1496e132e2SBlue Swirl 15944eea96SRichard Henderson DEF_HELPER_FLAGS_2(mulsh_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) 16944eea96SRichard Henderson DEF_HELPER_FLAGS_2(muluh_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) 17c482cb11SRichard Henderson 18df79b996SRichard Henderson DEF_HELPER_FLAGS_1(exit_atomic, TCG_CALL_NO_WG, noreturn, env) 19df79b996SRichard Henderson 20c482cb11SRichard Henderson #ifdef CONFIG_SOFTMMU 21c482cb11SRichard Henderson 22c482cb11SRichard Henderson DEF_HELPER_FLAGS_5(atomic_cmpxchgb, TCG_CALL_NO_WG, 23c482cb11SRichard Henderson i32, env, tl, i32, i32, i32) 24c482cb11SRichard Henderson DEF_HELPER_FLAGS_5(atomic_cmpxchgw_be, TCG_CALL_NO_WG, 25c482cb11SRichard Henderson i32, env, tl, i32, i32, i32) 26c482cb11SRichard Henderson DEF_HELPER_FLAGS_5(atomic_cmpxchgw_le, TCG_CALL_NO_WG, 27c482cb11SRichard Henderson i32, env, tl, i32, i32, i32) 28df79b996SRichard Henderson DEF_HELPER_FLAGS_5(atomic_cmpxchgl_be, TCG_CALL_NO_WG, 29df79b996SRichard Henderson i32, env, tl, i32, i32, i32) 30c482cb11SRichard Henderson DEF_HELPER_FLAGS_5(atomic_cmpxchgl_le, TCG_CALL_NO_WG, 31c482cb11SRichard Henderson i32, env, tl, i32, i32, i32) 32df79b996SRichard Henderson #ifdef CONFIG_ATOMIC64 33df79b996SRichard Henderson DEF_HELPER_FLAGS_5(atomic_cmpxchgq_be, TCG_CALL_NO_WG, 34df79b996SRichard Henderson i64, env, tl, i64, i64, i32) 35c482cb11SRichard Henderson DEF_HELPER_FLAGS_5(atomic_cmpxchgq_le, TCG_CALL_NO_WG, 36c482cb11SRichard Henderson i64, env, tl, i64, i64, i32) 37df79b996SRichard Henderson #endif 38c482cb11SRichard Henderson 39df79b996SRichard Henderson #ifdef CONFIG_ATOMIC64 40c482cb11SRichard Henderson #define GEN_ATOMIC_HELPERS(NAME) \ 41c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \ 42c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ 43c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \ 44c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ 45c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \ 46c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ 47c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \ 48c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ 49c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \ 50c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ 51c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_le), \ 52c482cb11SRichard Henderson TCG_CALL_NO_WG, i64, env, tl, i64, i32) \ 53c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_be), \ 54c482cb11SRichard Henderson TCG_CALL_NO_WG, i64, env, tl, i64, i32) 55df79b996SRichard Henderson #else 56df79b996SRichard Henderson #define GEN_ATOMIC_HELPERS(NAME) \ 57df79b996SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \ 58df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ 59df79b996SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \ 60df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ 61df79b996SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \ 62df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ 63df79b996SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \ 64df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ 65df79b996SRichard Henderson DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \ 66df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32, i32) 67df79b996SRichard Henderson #endif /* CONFIG_ATOMIC64 */ 68c482cb11SRichard Henderson 69c482cb11SRichard Henderson #else 70c482cb11SRichard Henderson 71c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(atomic_cmpxchgb, TCG_CALL_NO_WG, i32, env, tl, i32, i32) 72c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(atomic_cmpxchgw_be, TCG_CALL_NO_WG, i32, env, tl, i32, i32) 73c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(atomic_cmpxchgw_le, TCG_CALL_NO_WG, i32, env, tl, i32, i32) 74df79b996SRichard Henderson DEF_HELPER_FLAGS_4(atomic_cmpxchgl_be, TCG_CALL_NO_WG, i32, env, tl, i32, i32) 75c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(atomic_cmpxchgl_le, TCG_CALL_NO_WG, i32, env, tl, i32, i32) 76df79b996SRichard Henderson #ifdef CONFIG_ATOMIC64 77df79b996SRichard Henderson DEF_HELPER_FLAGS_4(atomic_cmpxchgq_be, TCG_CALL_NO_WG, i64, env, tl, i64, i64) 78c482cb11SRichard Henderson DEF_HELPER_FLAGS_4(atomic_cmpxchgq_le, TCG_CALL_NO_WG, i64, env, tl, i64, i64) 79df79b996SRichard Henderson #endif 80c482cb11SRichard Henderson 81df79b996SRichard Henderson #ifdef CONFIG_ATOMIC64 82c482cb11SRichard Henderson #define GEN_ATOMIC_HELPERS(NAME) \ 83c482cb11SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), b), \ 84c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) \ 85c482cb11SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_le), \ 86c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) \ 87c482cb11SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_be), \ 88c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) \ 89c482cb11SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_le), \ 90c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) \ 91c482cb11SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_be), \ 92c482cb11SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) \ 93c482cb11SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), q_le), \ 94c482cb11SRichard Henderson TCG_CALL_NO_WG, i64, env, tl, i64) \ 95c482cb11SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), q_be), \ 96c482cb11SRichard Henderson TCG_CALL_NO_WG, i64, env, tl, i64) 97df79b996SRichard Henderson #else 98df79b996SRichard Henderson #define GEN_ATOMIC_HELPERS(NAME) \ 99df79b996SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), b), \ 100df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) \ 101df79b996SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_le), \ 102df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) \ 103df79b996SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_be), \ 104df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) \ 105df79b996SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_le), \ 106df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) \ 107df79b996SRichard Henderson DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_be), \ 108df79b996SRichard Henderson TCG_CALL_NO_WG, i32, env, tl, i32) 109df79b996SRichard Henderson #endif /* CONFIG_ATOMIC64 */ 110c482cb11SRichard Henderson 111c482cb11SRichard Henderson #endif /* CONFIG_SOFTMMU */ 112c482cb11SRichard Henderson 113c482cb11SRichard Henderson GEN_ATOMIC_HELPERS(fetch_add) 114c482cb11SRichard Henderson GEN_ATOMIC_HELPERS(fetch_and) 115c482cb11SRichard Henderson GEN_ATOMIC_HELPERS(fetch_or) 116c482cb11SRichard Henderson GEN_ATOMIC_HELPERS(fetch_xor) 117c482cb11SRichard Henderson 118c482cb11SRichard Henderson GEN_ATOMIC_HELPERS(add_fetch) 119c482cb11SRichard Henderson GEN_ATOMIC_HELPERS(and_fetch) 120c482cb11SRichard Henderson GEN_ATOMIC_HELPERS(or_fetch) 121c482cb11SRichard Henderson GEN_ATOMIC_HELPERS(xor_fetch) 122c482cb11SRichard Henderson 123c482cb11SRichard Henderson GEN_ATOMIC_HELPERS(xchg) 124c482cb11SRichard Henderson 125c482cb11SRichard Henderson #undef GEN_ATOMIC_HELPERS 126