diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2019-01-29 19:21:10 -0800 |
---|---|---|
committer | Max Filippov <jcmvbkbc@gmail.com> | 2019-02-28 04:43:15 -0800 |
commit | 20e9fd0fc0634de24ee2763d769e3780e369afdd (patch) | |
tree | a9d58f7b053dde736db607776c4fa9c771a1821b /target/xtensa/cpu.h | |
parent | fa6bc73c8b46782bf07dadcac908405cf19b8ab8 (diff) | |
download | qemu-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.h | 2 |
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 { |