x86: fold certain VCVT{,U}SI2S{S,D} templates
authorJan Beulich <jbeulich@suse.com>
Mon, 17 Feb 2020 07:59:52 +0000 (08:59 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 17 Feb 2020 07:59:52 +0000 (08:59 +0100)
commit1f730c46141c1513e72cb24d471834b448d6d0e6
treebcb5bc25f8d1a89c65605f3b2735a237b943e9f6
parentc8f8eebc3fc3662fdb9077355ecde9c88bd33727
x86: fold certain VCVT{,U}SI2S{S,D} templates

There don't really need to be separate Cpu64 and CpuNo64 templates for
these. One small issue with this is that slightly strange code

.intel_syntax noprefix
.code16
.arch i286
.arch .avx
vcvtsi2sd xmm0, xmm0, dword ptr [bx]
vcvtsi2sd xmm0, xmm0, qword ptr [bx]

vcvtsi2sd xmm0, xmm0, ebx
vcvtsi2sd xmm0, xmm0, rbx

now will match in behavior with the AVX512 counterparts in that not
only the 2nd vcvtsi2sd won't assemble, but also the first. The last
two, otoh, will continue to assemble fine (due to the lack of any
memory operand size specifier). As a result, another way to make
things behave more consistently would be to avoid the folding and
add IgnoreSize to the CpuNo64 AVX512 variants. A 3rd way to do so
would be to add Cpu386 to any such insn template.

While doing this also make the usual cosmetic adjustments for the
insns touched anyway. Additionally drop the redundant Cpu64 from
the SAE forms of VCVT{,U}SI2SD - they won't assemble outside of
64-bit mode due to there not being anything to match the Reg64
operand.
opcodes/ChangeLog
opcodes/i386-opc.tbl
opcodes/i386-tbl.h