aboutsummaryrefslogtreecommitdiff
path: root/target/xtensa/cpu.h
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2019-01-29 19:21:10 -0800
committerMax Filippov <jcmvbkbc@gmail.com>2019-02-28 04:43:15 -0800
commit20e9fd0fc0634de24ee2763d769e3780e369afdd (patch)
treea9d58f7b053dde736db607776c4fa9c771a1821b /target/xtensa/cpu.h
parentfa6bc73c8b46782bf07dadcac908405cf19b8ab8 (diff)
downloadqemu-20e9fd0fc0634de24ee2763d769e3780e369afdd.zip
qemu-20e9fd0fc0634de24ee2763d769e3780e369afdd.tar.gz
qemu-20e9fd0fc0634de24ee2763d769e3780e369afdd.tar.bz2
target/xtensa: sort FLIX instruction opcodes
Opcodes in different slots may read and write same resources (registers, states). In the absence of resource dependency loops it must be possible to sort opcodes to avoid interference. Record resources used by each opcode in the bundle. Build opcode dependency graph and use topological sort to order its nodes. In case of success translate opcodes in sort order. In case of failure report and raise invalid opcode exception. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'target/xtensa/cpu.h')
-rw-r--r--target/xtensa/cpu.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/target/xtensa/cpu.h b/target/xtensa/cpu.h
index db8ee70..c59f79e 100644
--- a/target/xtensa/cpu.h
+++ b/target/xtensa/cpu.h
@@ -373,6 +373,8 @@ enum {
XTENSA_OP_EXIT_TB_0 = 0x800,
XTENSA_OP_NAME_ARRAY = 0x8000,
+
+ XTENSA_OP_CONTROL_FLOW = 0x10000,
};
typedef struct XtensaOpcodeOps {