summaryrefslogtreecommitdiffstats
path: root/include/tcg/tcg.h
diff options
context:
space:
mode:
authorRichard Henderson2020-10-08 22:21:43 +0200
committerRichard Henderson2020-10-27 17:48:07 +0100
commitb4cb76e6208cf6b5bb39404c6d44a6514eb6842a (patch)
tree829655e4134d425e6c12ef42f2350f184a930635 /include/tcg/tcg.h
parentMerge remote-tracking branch 'remotes/stefanha-gitlab/tags/tracing-pull-reque... (diff)
downloadqemu-b4cb76e6208cf6b5bb39404c6d44a6514eb6842a.tar.gz
qemu-b4cb76e6208cf6b5bb39404c6d44a6514eb6842a.tar.xz
qemu-b4cb76e6208cf6b5bb39404c6d44a6514eb6842a.zip
tcg: Do not kill globals at conditional branches
We can easily register allocate the entire extended basic block (in this case, the set of blocks connected by fallthru), simply by not discarding the register state at the branch. This does not help blocks starting with a label, as they are reached via a taken branch, and that would require saving the complete register state at the branch. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include/tcg/tcg.h')
-rw-r--r--include/tcg/tcg.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index 8804a8c4a2..8ff9dad4ef 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -990,7 +990,7 @@ typedef struct TCGArgConstraint {
#define TCG_MAX_OP_ARGS 16
-/* Bits for TCGOpDef->flags, 8 bits available. */
+/* Bits for TCGOpDef->flags, 8 bits available, all used. */
enum {
/* Instruction exits the translation block. */
TCG_OPF_BB_EXIT = 0x01,
@@ -1008,6 +1008,8 @@ enum {
TCG_OPF_NOT_PRESENT = 0x20,
/* Instruction operands are vectors. */
TCG_OPF_VECTOR = 0x40,
+ /* Instruction is a conditional branch. */
+ TCG_OPF_COND_BRANCH = 0x80
};
typedef struct TCGOpDef {