]> git.proxmox.com Git - mirror_qemu.git/commit
target/xtensa: break circular register dependencies
authorMax Filippov <jcmvbkbc@gmail.com>
Wed, 13 Feb 2019 03:10:24 +0000 (19:10 -0800)
committerMax Filippov <jcmvbkbc@gmail.com>
Thu, 28 Feb 2019 12:43:22 +0000 (04:43 -0800)
commit89bec9e9117d454d2101f7848475b11677ca99ff
treecb737c95213f0251174d8e359298bdb3a84ffc06
parent575e962a01ca502c7c2a8d671f83c5173446c68d
target/xtensa: break circular register dependencies

Currently topologic opcode sorting stops at the first detected
dependency loop. Introduce struct opcode_arg_copy that describes
temporary register copy. Scan remaining opcodes searching for
dependencies that can be broken, break them by introducing temporary
register copies and record them in an array. In case of success
create local temporaries and initialize them with current register
values. Share single temporary copy between all register users. Delete
temporaries after translation.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
target/xtensa/translate.c