Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
tcg: Split helper-gen.h
Create helper-gen-common.h without the target specific portion. Use that in tcg-op-common.h. Reorg headers in target/arm to ensure that helper-gen.h is included before helper-info.c.inc. All other targets are already correct in this regard. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
- Loading branch information
Showing
6 changed files
with
129 additions
and
103 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| /* SPDX-License-Identifier: GPL-2.0-or-later */ | ||
| /* | ||
| * Helper file for declaring TCG helper functions. | ||
| * This one expands generation functions for tcg opcodes. | ||
| */ | ||
|
|
||
| #ifndef HELPER_GEN_COMMON_H | ||
| #define HELPER_GEN_COMMON_H | ||
|
|
||
| #define HELPER_H "accel/tcg/tcg-runtime.h" | ||
| #include "exec/helper-gen.h.inc" | ||
| #undef HELPER_H | ||
|
|
||
| #define HELPER_H "accel/tcg/plugin-helpers.h" | ||
| #include "exec/helper-gen.h.inc" | ||
| #undef HELPER_H | ||
|
|
||
| #endif /* HELPER_GEN_COMMON_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,102 @@ | ||
| /* SPDX-License-Identifier: GPL-2.0-or-later */ | ||
| /* | ||
| * Helper file for declaring TCG helper functions. | ||
| * This one expands generation functions for tcg opcodes. | ||
| * Define HELPER_H for the header file to be expanded, | ||
| * and static inline to change from global file scope. | ||
| */ | ||
|
|
||
| #include "tcg/tcg.h" | ||
| #include "tcg/helper-info.h" | ||
| #include "exec/helper-head.h" | ||
|
|
||
| #define DEF_HELPER_FLAGS_0(name, flags, ret) \ | ||
| extern TCGHelperInfo glue(helper_info_, name); \ | ||
| static inline void glue(gen_helper_, name)(dh_retvar_decl0(ret)) \ | ||
| { \ | ||
| tcg_gen_call0(&glue(helper_info_, name), dh_retvar(ret)); \ | ||
| } | ||
|
|
||
| #define DEF_HELPER_FLAGS_1(name, flags, ret, t1) \ | ||
| extern TCGHelperInfo glue(helper_info_, name); \ | ||
| static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ | ||
| dh_arg_decl(t1, 1)) \ | ||
| { \ | ||
| tcg_gen_call1(&glue(helper_info_, name), dh_retvar(ret), \ | ||
| dh_arg(t1, 1)); \ | ||
| } | ||
|
|
||
| #define DEF_HELPER_FLAGS_2(name, flags, ret, t1, t2) \ | ||
| extern TCGHelperInfo glue(helper_info_, name); \ | ||
| static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ | ||
| dh_arg_decl(t1, 1), dh_arg_decl(t2, 2)) \ | ||
| { \ | ||
| tcg_gen_call2(&glue(helper_info_, name), dh_retvar(ret), \ | ||
| dh_arg(t1, 1), dh_arg(t2, 2)); \ | ||
| } | ||
|
|
||
| #define DEF_HELPER_FLAGS_3(name, flags, ret, t1, t2, t3) \ | ||
| extern TCGHelperInfo glue(helper_info_, name); \ | ||
| static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ | ||
| dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3)) \ | ||
| { \ | ||
| tcg_gen_call3(&glue(helper_info_, name), dh_retvar(ret), \ | ||
| dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3)); \ | ||
| } | ||
|
|
||
| #define DEF_HELPER_FLAGS_4(name, flags, ret, t1, t2, t3, t4) \ | ||
| extern TCGHelperInfo glue(helper_info_, name); \ | ||
| static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ | ||
| dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), \ | ||
| dh_arg_decl(t3, 3), dh_arg_decl(t4, 4)) \ | ||
| { \ | ||
| tcg_gen_call4(&glue(helper_info_, name), dh_retvar(ret), \ | ||
| dh_arg(t1, 1), dh_arg(t2, 2), \ | ||
| dh_arg(t3, 3), dh_arg(t4, 4)); \ | ||
| } | ||
|
|
||
| #define DEF_HELPER_FLAGS_5(name, flags, ret, t1, t2, t3, t4, t5) \ | ||
| extern TCGHelperInfo glue(helper_info_, name); \ | ||
| static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ | ||
| dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \ | ||
| dh_arg_decl(t4, 4), dh_arg_decl(t5, 5)) \ | ||
| { \ | ||
| tcg_gen_call5(&glue(helper_info_, name), dh_retvar(ret), \ | ||
| dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \ | ||
| dh_arg(t4, 4), dh_arg(t5, 5)); \ | ||
| } | ||
|
|
||
| #define DEF_HELPER_FLAGS_6(name, flags, ret, t1, t2, t3, t4, t5, t6) \ | ||
| extern TCGHelperInfo glue(helper_info_, name); \ | ||
| static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ | ||
| dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \ | ||
| dh_arg_decl(t4, 4), dh_arg_decl(t5, 5), dh_arg_decl(t6, 6)) \ | ||
| { \ | ||
| tcg_gen_call6(&glue(helper_info_, name), dh_retvar(ret), \ | ||
| dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \ | ||
| dh_arg(t4, 4), dh_arg(t5, 5), dh_arg(t6, 6)); \ | ||
| } | ||
|
|
||
| #define DEF_HELPER_FLAGS_7(name, flags, ret, t1, t2, t3, t4, t5, t6, t7)\ | ||
| extern TCGHelperInfo glue(helper_info_, name); \ | ||
| static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ | ||
| dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \ | ||
| dh_arg_decl(t4, 4), dh_arg_decl(t5, 5), dh_arg_decl(t6, 6), \ | ||
| dh_arg_decl(t7, 7)) \ | ||
| { \ | ||
| tcg_gen_call7(&glue(helper_info_, name), dh_retvar(ret), \ | ||
| dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \ | ||
| dh_arg(t4, 4), dh_arg(t5, 5), dh_arg(t6, 6), \ | ||
| dh_arg(t7, 7)); \ | ||
| } | ||
|
|
||
| #include HELPER_H | ||
|
|
||
| #undef DEF_HELPER_FLAGS_0 | ||
| #undef DEF_HELPER_FLAGS_1 | ||
| #undef DEF_HELPER_FLAGS_2 | ||
| #undef DEF_HELPER_FLAGS_3 | ||
| #undef DEF_HELPER_FLAGS_4 | ||
| #undef DEF_HELPER_FLAGS_5 | ||
| #undef DEF_HELPER_FLAGS_6 | ||
| #undef DEF_HELPER_FLAGS_7 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters