x86: template-ize packed/scalar vector floating point insns
authorJan Beulich <jbeulich@suse.com>
Tue, 16 Aug 2022 07:11:59 +0000 (09:11 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 16 Aug 2022 07:11:59 +0000 (09:11 +0200)
commit73d214b268a95d06a0eff0f2347049820d1ae320
treebe94a9d12fe55f6fbf92373b58a5cc24fcfdadcc
parent33b6a20af3854e1aa144fbfca6ff98fccd0ef86d
x86: template-ize packed/scalar vector floating point insns

The vast majority of vector FP insns comes in single/double pairs. Many
pairs follow certain encoding patterns. Introduce an "sd" template to
reduce redundancy. Similarly, to further cover similarities between
AVX512F and AVX512-FP16, introduce an "sdh" template.

For element-size Disp8 shift generalize i386-gen's broadcast size
determination, allowing Disp8MemShift to be specified without an operand
in the affected templated templates. While doing the adjustment also
eliminate an unhelpful (lost information) diagnostic combined with a use
after free in what is now get_element_size().

Note that in the course of the conversion
- the AVX512F form of VMOVUPD has a stray (leftover) Load attribute
  dropped,
- VMOVSH has a benign IgnoreSize added (the attribute is still strictly
  necessary for VMOVSD, and necessary for VMOVSS as long as we permit
  strange combinations like "-march=i286+avx"),
- VFPCLASSPH is properly split to separate AT&T and Intel syntax forms,
  matching VFPCLASSP{S,D}.
opcodes/i386-gen.c
opcodes/i386-opc.tbl
opcodes/i386-tbl.h