]> git.ipfire.org Git - thirdparty/qemu.git/blame - include/exec/helper-gen.h
.travis.yml: don't run make check with multiple jobs
[thirdparty/qemu.git] / include / exec / helper-gen.h
CommitLineData
2ef6175a
RH
1/* Helper file for declaring TCG helper functions.
2 This one expands generation functions for tcg opcodes. */
3
4#ifndef HELPER_GEN_H
175de524 5#define HELPER_GEN_H
2ef6175a 6
a9c94277 7#include "exec/helper-head.h"
2ef6175a 8
011209e1
RH
9#define DEF_HELPER_FLAGS_0(name, flags, ret) \
10static inline void glue(gen_helper_, name)(dh_retvar_decl0(ret)) \
11{ \
960c50e0 12 tcg_gen_callN(HELPER(name), dh_retvar(ret), 0, NULL); \
2ef6175a
RH
13}
14
011209e1
RH
15#define DEF_HELPER_FLAGS_1(name, flags, ret, t1) \
16static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \
17 dh_arg_decl(t1, 1)) \
18{ \
ae8b75dc 19 TCGTemp *args[1] = { dh_arg(t1, 1) }; \
960c50e0 20 tcg_gen_callN(HELPER(name), dh_retvar(ret), 1, args); \
2ef6175a
RH
21}
22
011209e1
RH
23#define DEF_HELPER_FLAGS_2(name, flags, ret, t1, t2) \
24static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \
25 dh_arg_decl(t1, 1), dh_arg_decl(t2, 2)) \
26{ \
ae8b75dc 27 TCGTemp *args[2] = { dh_arg(t1, 1), dh_arg(t2, 2) }; \
960c50e0 28 tcg_gen_callN(HELPER(name), dh_retvar(ret), 2, args); \
2ef6175a
RH
29}
30
011209e1
RH
31#define DEF_HELPER_FLAGS_3(name, flags, ret, t1, t2, t3) \
32static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \
33 dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3)) \
34{ \
ae8b75dc 35 TCGTemp *args[3] = { dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3) }; \
960c50e0 36 tcg_gen_callN(HELPER(name), dh_retvar(ret), 3, args); \
2ef6175a
RH
37}
38
011209e1
RH
39#define DEF_HELPER_FLAGS_4(name, flags, ret, t1, t2, t3, t4) \
40static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \
41 dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), \
42 dh_arg_decl(t3, 3), dh_arg_decl(t4, 4)) \
43{ \
ae8b75dc 44 TCGTemp *args[4] = { dh_arg(t1, 1), dh_arg(t2, 2), \
011209e1 45 dh_arg(t3, 3), dh_arg(t4, 4) }; \
960c50e0 46 tcg_gen_callN(HELPER(name), dh_retvar(ret), 4, args); \
2ef6175a
RH
47}
48
011209e1
RH
49#define DEF_HELPER_FLAGS_5(name, flags, ret, t1, t2, t3, t4, t5) \
50static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \
51 dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \
52 dh_arg_decl(t4, 4), dh_arg_decl(t5, 5)) \
53{ \
ae8b75dc 54 TCGTemp *args[5] = { dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \
011209e1 55 dh_arg(t4, 4), dh_arg(t5, 5) }; \
960c50e0 56 tcg_gen_callN(HELPER(name), dh_retvar(ret), 5, args); \
2ef6175a
RH
57}
58
1df3caa9
RH
59#define DEF_HELPER_FLAGS_6(name, flags, ret, t1, t2, t3, t4, t5, t6) \
60static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \
61 dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \
62 dh_arg_decl(t4, 4), dh_arg_decl(t5, 5), dh_arg_decl(t6, 6)) \
63{ \
64 TCGTemp *args[6] = { dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \
65 dh_arg(t4, 4), dh_arg(t5, 5), dh_arg(t6, 6) }; \
66 tcg_gen_callN(HELPER(name), dh_retvar(ret), 6, args); \
67}
68
2ef6175a 69#include "helper.h"
76b53aa3
LV
70#include "trace/generated-helpers.h"
71#include "trace/generated-helpers-wrappers.h"
944eea96 72#include "tcg-runtime.h"
38b47b19 73#include "plugin-helpers.h"
2ef6175a
RH
74
75#undef DEF_HELPER_FLAGS_0
76#undef DEF_HELPER_FLAGS_1
77#undef DEF_HELPER_FLAGS_2
78#undef DEF_HELPER_FLAGS_3
79#undef DEF_HELPER_FLAGS_4
80#undef DEF_HELPER_FLAGS_5
1df3caa9 81#undef DEF_HELPER_FLAGS_6
2ef6175a
RH
82#undef GEN_HELPER
83
84#endif /* HELPER_GEN_H */