diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2020-07-09 10:33:25 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2020-07-09 10:33:43 -0700 |
commit | 39776b1117bdbdc34eb46151edc8e09eecce1530 (patch) | |
tree | 15716b073961fbec542d624a6830a9af24b89253 /gas/config | |
parent | fc238d4a066cdb1a979475ffdf5bd45cdb8a00f0 (diff) | |
download | gdb-39776b1117bdbdc34eb46151edc8e09eecce1530.zip gdb-39776b1117bdbdc34eb46151edc8e09eecce1530.tar.gz gdb-39776b1117bdbdc34eb46151edc8e09eecce1530.tar.bz2 |
x86: Properly set YMM/ZMM features
Since VEX/EVEX vector instructions will always update the full YMM/ZMM
registers, set YMM/ZMM features for VEX/EVEX vector instructions.
* config/tc-i386.c (output_insn): Set YMM/ZMM features for
VEX/EVEX vector instructions.
* testsuite/gas/i386/property-4.d: New file.
* testsuite/gas/i386/property-4.s: Likewise.
* testsuite/gas/i386/property-5.d: Likewise.
* testsuite/gas/i386/property-5.s: Likewise.
* testsuite/gas/i386/x86-64-property-4.d: Likewise.
* testsuite/gas/i386/x86-64-property-5.d: Likewise.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-i386.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 2e0eb24..bb51133 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -9120,9 +9120,14 @@ output_insn (void) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_MMX; if (i.has_regxmm) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_XMM; - if (i.has_regymm) + if (i.has_regymm + || (i.has_regxmm + && (i.tm.opcode_modifier.vex + || i.tm.opcode_modifier.evex))) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_YMM; - if (i.has_regzmm) + if (i.has_regzmm + || ((i.has_regxmm || i.has_regymm) + && i.tm.opcode_modifier.evex)) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_ZMM; if (i.tm.cpu_flags.bitfield.cpufxsr) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_FXSR; |