aboutsummaryrefslogtreecommitdiff
path: root/include/exec
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2022-11-11 10:09:37 +1000
committerRichard Henderson <richard.henderson@linaro.org>2023-01-05 11:41:29 -0800
commit39004a71d8f6b61501e41be21cc874272c78212f (patch)
tree91069224f04f81257174e64f8d9062234b9f25a2 /include/exec
parent31fd884b2e53dc50328dd616667c745fc4808fd1 (diff)
downloadqemu-39004a71d8f6b61501e41be21cc874272c78212f.zip
qemu-39004a71d8f6b61501e41be21cc874272c78212f.tar.gz
qemu-39004a71d8f6b61501e41be21cc874272c78212f.tar.bz2
tcg: Reorg function calls
Pre-compute the function call layout for each helper at startup. Drop TCG_CALL_DUMMY_ARG, as we no longer need to leave gaps in the op->args[] array. This allows several places to stop checking for NULL TCGTemp, to which TCG_CALL_DUMMY_ARG mapped. For tcg_gen_callN, loop over the arguments once. Allocate the TCGOp for the call early but delay emitting it, collecting arguments first. This allows the argument processing loop to emit code for extensions and have them sequenced before the call. For tcg_reg_alloc_call, loop over the arguments in reverse order, which allows stack slots to be filled first naturally. Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include/exec')
-rw-r--r--include/exec/helper-head.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/exec/helper-head.h b/include/exec/helper-head.h
index 8bdf0f6..bc6698b 100644
--- a/include/exec/helper-head.h
+++ b/include/exec/helper-head.h
@@ -133,4 +133,6 @@
#define DEF_HELPER_7(name, ret, t1, t2, t3, t4, t5, t6, t7) \
DEF_HELPER_FLAGS_7(name, 0, ret, t1, t2, t3, t4, t5, t6, t7)
+/* MAX_CALL_IARGS must be set to n if last entry is DEF_HELPER_FLAGS_n. */
+
#endif /* EXEC_HELPER_HEAD_H */