]> git.proxmox.com Git - mirror_qemu.git/blob - include/exec/helper-gen.h
tcg: Invert the inclusion of helper.h
[mirror_qemu.git] / include / exec / helper-gen.h
1 /* Helper file for declaring TCG helper functions.
2 This one expands generation functions for tcg opcodes. */
3
4 #ifndef HELPER_GEN_H
5 #define HELPER_GEN_H 1
6
7 #include <exec/helper-head.h>
8
9 #define DEF_HELPER_FLAGS_0(name, flags, ret) \
10 static inline void glue(gen_helper_, name)(dh_retvar_decl0(ret)) \
11 { \
12 int sizemask; \
13 sizemask = dh_is_64bit(ret); \
14 tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 0, NULL); \
15 }
16
17 #define DEF_HELPER_FLAGS_1(name, flags, ret, t1) \
18 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) dh_arg_decl(t1, 1)) \
19 { \
20 TCGArg args[1]; \
21 int sizemask = 0; \
22 dh_sizemask(ret, 0); \
23 dh_arg(t1, 1); \
24 tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 1, args); \
25 }
26
27 #define DEF_HELPER_FLAGS_2(name, flags, ret, t1, t2) \
28 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) dh_arg_decl(t1, 1), \
29 dh_arg_decl(t2, 2)) \
30 { \
31 TCGArg args[2]; \
32 int sizemask = 0; \
33 dh_sizemask(ret, 0); \
34 dh_arg(t1, 1); \
35 dh_arg(t2, 2); \
36 tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 2, args); \
37 }
38
39 #define DEF_HELPER_FLAGS_3(name, flags, ret, t1, t2, t3) \
40 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) dh_arg_decl(t1, 1), \
41 dh_arg_decl(t2, 2), dh_arg_decl(t3, 3)) \
42 { \
43 TCGArg args[3]; \
44 int sizemask = 0; \
45 dh_sizemask(ret, 0); \
46 dh_arg(t1, 1); \
47 dh_arg(t2, 2); \
48 dh_arg(t3, 3); \
49 tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 3, args); \
50 }
51
52 #define DEF_HELPER_FLAGS_4(name, flags, ret, t1, t2, t3, t4) \
53 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) dh_arg_decl(t1, 1), \
54 dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), dh_arg_decl(t4, 4)) \
55 { \
56 TCGArg args[4]; \
57 int sizemask = 0; \
58 dh_sizemask(ret, 0); \
59 dh_arg(t1, 1); \
60 dh_arg(t2, 2); \
61 dh_arg(t3, 3); \
62 dh_arg(t4, 4); \
63 tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 4, args); \
64 }
65
66 #define DEF_HELPER_FLAGS_5(name, flags, ret, t1, t2, t3, t4, t5) \
67 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \
68 dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \
69 dh_arg_decl(t4, 4), dh_arg_decl(t5, 5)) \
70 { \
71 TCGArg args[5]; \
72 int sizemask = 0; \
73 dh_sizemask(ret, 0); \
74 dh_arg(t1, 1); \
75 dh_arg(t2, 2); \
76 dh_arg(t3, 3); \
77 dh_arg(t4, 4); \
78 dh_arg(t5, 5); \
79 tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 5, args); \
80 }
81
82 #include "helper.h"
83
84 #undef DEF_HELPER_FLAGS_0
85 #undef DEF_HELPER_FLAGS_1
86 #undef DEF_HELPER_FLAGS_2
87 #undef DEF_HELPER_FLAGS_3
88 #undef DEF_HELPER_FLAGS_4
89 #undef DEF_HELPER_FLAGS_5
90 #undef GEN_HELPER
91
92 #endif /* HELPER_GEN_H */