diff options
author | 2021-07-12 16:40:16 +0100 | |
---|---|---|
committer | 2021-07-14 10:04:35 +0000 | |
commit | cd8286f6e69aeeb1abb69b7807effee2f1539508 (patch) | |
tree | 35a79e6834359dd8cd50eaa6bd170f8edbd8e8ff /runtime/class_table.h | |
parent | 0910d891d729ca984baa31d4e3ed51da8b0cad7d (diff) |
x86_64: Implement missing variants of XCHG. Add tests for them.
Also, clean up the handling of a special case when at least one of the
operands for XCHG is RAX/EAX/AX. Add a helper function that deduplicates
the code for different operand sizes.
This patch also extends `EmitOptionalByteRegNormalizingRex32` function
to handle the case when an instruction has both operands in byte
registers, and so it needs REX prefix if either of them is in a special
register (an example of such instruction is `xchg bpl, al`: if only the
source register is checked, no REX would be emitted). Previously
`EmitOptionalByteRegNormalizingRex32` handled only the case when the
source register is special (an example of such instruction is
`movzxb rax, bpl`).
Bug: 65872996
Test: m test-art-host-gtest
Change-Id: I20c5e9375bbd15d799e5748b127d154ddcc0fc11
Diffstat (limited to 'runtime/class_table.h')
0 files changed, 0 insertions, 0 deletions