diff options
author | Jan Beulich <jbeulich@suse.com> | 2023-07-04 17:01:10 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2023-07-04 17:01:10 +0200 |
commit | 1f83c96159d55af9caa96aa8f335ca1fd501a953 (patch) | |
tree | 9af65b8d140147687ee0cce03faaa91e6e535d04 /opcodes | |
parent | ac500f1772cfd5b1cf92acfa3ea4e7c43fab4fe3 (diff) | |
download | binutils-1f83c96159d55af9caa96aa8f335ca1fd501a953.zip binutils-1f83c96159d55af9caa96aa8f335ca1fd501a953.tar.gz binutils-1f83c96159d55af9caa96aa8f335ca1fd501a953.tar.bz2 |
x86: flag EVEX.z set when destination is memory
Zeroing-masking is not permitted in this case. See the code comment for
how this is being dealt with.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/i386-dis.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index e440b69..7c41302 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -11855,6 +11855,13 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag) if (ins->vex.evex) { + + /* Zeroing-masking is invalid for memory destinations. Set the flag + uniformly, as the consumer will inspect it only for the destination + operand. */ + if (ins->vex.zeroing) + ins->illegal_masking = true; + switch (bytemode) { case dw_mode: |