12ef6175aSRichard Henderson /* Helper file for declaring TCG helper functions. 22ef6175aSRichard Henderson This one expands generation functions for tcg opcodes. */ 32ef6175aSRichard Henderson 42ef6175aSRichard Henderson #ifndef HELPER_GEN_H 52ef6175aSRichard Henderson #define HELPER_GEN_H 1 62ef6175aSRichard Henderson 72ef6175aSRichard Henderson #include <exec/helper-head.h> 82ef6175aSRichard Henderson 92ef6175aSRichard Henderson #define DEF_HELPER_FLAGS_0(name, flags, ret) \ 102ef6175aSRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl0(ret)) \ 112ef6175aSRichard Henderson { \ 12bbb8a1b4SRichard Henderson tcg_gen_callN(&tcg_ctx, HELPER(name), dh_retvar(ret), 0, NULL); \ 132ef6175aSRichard Henderson } 142ef6175aSRichard Henderson 152ef6175aSRichard Henderson #define DEF_HELPER_FLAGS_1(name, flags, ret, t1) \ 16*011209e1SRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ 17*011209e1SRichard Henderson dh_arg_decl(t1, 1)) \ 182ef6175aSRichard Henderson { \ 19*011209e1SRichard Henderson TCGArg args[1] = { dh_arg(t1, 1) }; \ 20bbb8a1b4SRichard Henderson tcg_gen_callN(&tcg_ctx, HELPER(name), dh_retvar(ret), 1, args); \ 212ef6175aSRichard Henderson } 222ef6175aSRichard Henderson 232ef6175aSRichard Henderson #define DEF_HELPER_FLAGS_2(name, flags, ret, t1, t2) \ 24*011209e1SRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ 25*011209e1SRichard Henderson dh_arg_decl(t1, 1), dh_arg_decl(t2, 2)) \ 262ef6175aSRichard Henderson { \ 27*011209e1SRichard Henderson TCGArg args[2] = { dh_arg(t1, 1), dh_arg(t2, 2) }; \ 28bbb8a1b4SRichard Henderson tcg_gen_callN(&tcg_ctx, HELPER(name), dh_retvar(ret), 2, args); \ 292ef6175aSRichard Henderson } 302ef6175aSRichard Henderson 312ef6175aSRichard Henderson #define DEF_HELPER_FLAGS_3(name, flags, ret, t1, t2, t3) \ 32*011209e1SRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ 33*011209e1SRichard Henderson dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3)) \ 342ef6175aSRichard Henderson { \ 35*011209e1SRichard Henderson TCGArg args[3] = { dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3) }; \ 36bbb8a1b4SRichard Henderson tcg_gen_callN(&tcg_ctx, HELPER(name), dh_retvar(ret), 3, args); \ 372ef6175aSRichard Henderson } 382ef6175aSRichard Henderson 392ef6175aSRichard Henderson #define DEF_HELPER_FLAGS_4(name, flags, ret, t1, t2, t3, t4) \ 40*011209e1SRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ 41*011209e1SRichard Henderson dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), \ 42*011209e1SRichard Henderson dh_arg_decl(t3, 3), dh_arg_decl(t4, 4)) \ 432ef6175aSRichard Henderson { \ 44*011209e1SRichard Henderson TCGArg args[4] = { dh_arg(t1, 1), dh_arg(t2, 2), \ 45*011209e1SRichard Henderson dh_arg(t3, 3), dh_arg(t4, 4) }; \ 46bbb8a1b4SRichard Henderson tcg_gen_callN(&tcg_ctx, HELPER(name), dh_retvar(ret), 4, args); \ 472ef6175aSRichard Henderson } 482ef6175aSRichard Henderson 492ef6175aSRichard Henderson #define DEF_HELPER_FLAGS_5(name, flags, ret, t1, t2, t3, t4, t5) \ 502ef6175aSRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ 512ef6175aSRichard Henderson dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \ 522ef6175aSRichard Henderson dh_arg_decl(t4, 4), dh_arg_decl(t5, 5)) \ 532ef6175aSRichard Henderson { \ 54*011209e1SRichard Henderson TCGArg args[5] = { dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \ 55*011209e1SRichard Henderson dh_arg(t4, 4), dh_arg(t5, 5) }; \ 56bbb8a1b4SRichard Henderson tcg_gen_callN(&tcg_ctx, HELPER(name), dh_retvar(ret), 5, args); \ 572ef6175aSRichard Henderson } 582ef6175aSRichard Henderson 592ef6175aSRichard Henderson #include "helper.h" 60944eea96SRichard Henderson #include "tcg-runtime.h" 612ef6175aSRichard Henderson 622ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_0 632ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_1 642ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_2 652ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_3 662ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_4 672ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_5 682ef6175aSRichard Henderson #undef GEN_HELPER 692ef6175aSRichard Henderson 702ef6175aSRichard Henderson #endif /* HELPER_GEN_H */ 71