This patch contains a minor compatibility change that now splits the existing AVX general register versions of vmovd/vmovq into the opcodes vmovd/vmovq.
Adds the evex-promoted opcodes vmovd, vmovq, vpshufhw, vpshufd, vpshuflw, vpshufb, vpmovsxbw, vpmovsxbd, vpmovsxbq, vpmovsxwd, vpmovsxwq, vpmovsxdq, vpmovzxbw, vpmovzxbd, vpmovzxbq, vpmovzxwd, vpmovzxwq, and vpmovzxdq.
Adds the new AVX-512 opcodes vpmovqb, vpmovsqb, vpmovusqb, vpmovqw, vpmovsqw, vpmovusqw, vpmovqd, vpmovsqd, vpmovusqd, vpmovdb, vpmovsdb, vpmovusdb, vpmovdw, vpmovsdw, vpmovusdw, vpmovwb, vpmovswb, vpmovuswb, vpmovm2b, vpmovm2w, vpmovm2d, vpmovm2q, vpmovb2m, vpmovw2m, vpmovd2m, and vpmovq2m.
Adds new letter codes 'i' for quarter and 'j' for eighth.
Along with adding the AVX-512 evex-promoted opcodes, this patch fixes incorrect AVX constraints of vpmovsxbw, vpmovsxbd, vpmovsxbq, vpmovsxwd, vpmovsxwq, vpmovsxdq, vpmovzxbw, vpmovzxbd, vpmovzxbq, vpmovzxwd, vpmovzxwq, and vpmovzxdq.
Adds the internal opsizes OPSZ_quarter_16_vex32, OPSZ_quarter_16_vex32_evex64, OPSZ_eighth_16_vex32, and OPSZ_eighth_16_vex32_evex64.
Adds tests for above.
Opcodes have been checked against llvm-mc, binutils/gas/objdump and capstone.
This patch does not include the AVX-512 vshuf* opcodes, which will be included in a future patch.
Issue: #1312