diff options
author | Jan Beulich <jbeulich@suse.com> | 2021-03-29 12:05:25 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2021-03-29 12:05:25 +0200 |
commit | 5cdaf100252746303a09e904b37aafea4153d12c (patch) | |
tree | ec5fa99f97833721df5c3437c37ca7840f2ae655 /opcodes/i386-gen.c | |
parent | 73e45eb208585e672945078b28fc8381c6f6ba5f (diff) | |
download | gdb-5cdaf100252746303a09e904b37aafea4153d12c.zip gdb-5cdaf100252746303a09e904b37aafea4153d12c.tar.gz gdb-5cdaf100252746303a09e904b37aafea4153d12c.tar.bz2 |
x86: fold SSE2AVX and their base MMX/SSE templates
This way not only the overall (source) table size shrinks by quite a
bit and the risk of related templates going out of sync with one another
gets lowered, but also (dis)similarities between neighboring templates
become easier to spot.
Note that for certain SSE2AVX templates this results in benign attribute
changes:
- LDMXCSR and STMXCSR: NoAVX gets set,
- MOVMSKPS, PMOVMSKB, PEXTR{B,W} (register destination), and PINSR{B,W}
(register source): IgnoreSize and NoRex64 get set,
- CVT{DQ,PS}2PD, CVTSD2SS, MOVMSKPD, MOVDDUP, PMOV{S,Z}X{BW,WD,DQ}, and
ROUNDSD: NoRex64 gets set,
- CVTSS2SD, INSERTPS, PEXTRW (memory destination), PINSRW (memory
source), and PMOV{S,Z}X{BD,WQ,BQ}: IgnoreSize gets set.
Similarly the "normal" (non-SSE2AVX)
- non-64-bit CVTS{I,S}2SD forms get NoRex64 set,
- CMP{EQ,ORD,NEQ,UNORD}{P,S}{S,D} forms get C set,
all again in a benign way.
The remaining differences in the generated table are due to re-ordering
of entries in the course of being folded into templates.
Diffstat (limited to 'opcodes/i386-gen.c')
-rw-r--r-- | opcodes/i386-gen.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c index 85ee1d5..27ddad4 100644 --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -1573,7 +1573,7 @@ parse_template (char *buf, int lineno) inst->args = NULL; cur = next_field (buf, ':', &next, end); - inst->name = xstrdup (cur); + inst->name = *cur != '$' ? xstrdup (cur) : ""; for (param = tmpl->params; param; param = param->next) { |