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 5175de524SMarkus Armbruster #define HELPER_GEN_H 62ef6175aSRichard Henderson 7a9c94277SMarkus Armbruster #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 { \ 12960c50e0SRichard Henderson tcg_gen_callN(HELPER(name), dh_retvar(ret), 0, NULL); \ 132ef6175aSRichard Henderson } 142ef6175aSRichard Henderson 152ef6175aSRichard Henderson #define DEF_HELPER_FLAGS_1(name, flags, ret, t1) \ 16011209e1SRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ 17011209e1SRichard Henderson dh_arg_decl(t1, 1)) \ 182ef6175aSRichard Henderson { \ 19*ae8b75dcSRichard Henderson TCGTemp *args[1] = { dh_arg(t1, 1) }; \ 20960c50e0SRichard Henderson tcg_gen_callN(HELPER(name), dh_retvar(ret), 1, args); \ 212ef6175aSRichard Henderson } 222ef6175aSRichard Henderson 232ef6175aSRichard Henderson #define DEF_HELPER_FLAGS_2(name, flags, ret, t1, t2) \ 24011209e1SRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ 25011209e1SRichard Henderson dh_arg_decl(t1, 1), dh_arg_decl(t2, 2)) \ 262ef6175aSRichard Henderson { \ 27*ae8b75dcSRichard Henderson TCGTemp *args[2] = { dh_arg(t1, 1), dh_arg(t2, 2) }; \ 28960c50e0SRichard Henderson tcg_gen_callN(HELPER(name), dh_retvar(ret), 2, args); \ 292ef6175aSRichard Henderson } 302ef6175aSRichard Henderson 312ef6175aSRichard Henderson #define DEF_HELPER_FLAGS_3(name, flags, ret, t1, t2, t3) \ 32011209e1SRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ 33011209e1SRichard Henderson dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3)) \ 342ef6175aSRichard Henderson { \ 35*ae8b75dcSRichard Henderson TCGTemp *args[3] = { dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3) }; \ 36960c50e0SRichard Henderson tcg_gen_callN(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) \ 40011209e1SRichard Henderson static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ 41011209e1SRichard Henderson dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), \ 42011209e1SRichard Henderson dh_arg_decl(t3, 3), dh_arg_decl(t4, 4)) \ 432ef6175aSRichard Henderson { \ 44*ae8b75dcSRichard Henderson TCGTemp *args[4] = { dh_arg(t1, 1), dh_arg(t2, 2), \ 45011209e1SRichard Henderson dh_arg(t3, 3), dh_arg(t4, 4) }; \ 46960c50e0SRichard Henderson tcg_gen_callN(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*ae8b75dcSRichard Henderson TCGTemp *args[5] = { dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \ 55011209e1SRichard Henderson dh_arg(t4, 4), dh_arg(t5, 5) }; \ 56960c50e0SRichard Henderson tcg_gen_callN(HELPER(name), dh_retvar(ret), 5, args); \ 572ef6175aSRichard Henderson } 582ef6175aSRichard Henderson 592ef6175aSRichard Henderson #include "helper.h" 6076b53aa3SLluís Vilanova #include "trace/generated-helpers.h" 6176b53aa3SLluís Vilanova #include "trace/generated-helpers-wrappers.h" 62944eea96SRichard Henderson #include "tcg-runtime.h" 632ef6175aSRichard Henderson 642ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_0 652ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_1 662ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_2 672ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_3 682ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_4 692ef6175aSRichard Henderson #undef DEF_HELPER_FLAGS_5 702ef6175aSRichard Henderson #undef GEN_HELPER 712ef6175aSRichard Henderson 722ef6175aSRichard Henderson #endif /* HELPER_GEN_H */ 73