Files
gasm-sdk/asm/amd64_vexparity_test.go
T

835 lines
38 KiB
Go
Raw Normal View History

// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
// SPDX-License-Identifier: BSD-3-Clause
package asm
import (
"slices"
"strings"
"testing"
)
// amd64VexParityCorpus holds every line the Go toolchain's own
// amd64enc.s carries for the mnemonics the full-file byte sweep
// flagged: the VEX forms the toolchain prefers for plain vector
// registers, the compare-with-predicate family and the byte-level
// corrections (PEXTRW's GPR fields, PUSHW and POPW widths, the double
// shift's high register field, VCOMISS's prefix, RORX's destination
// bit, the variable shifts' consolidated rows). Each entry lists the
// byte strings go tool asm emits or accepts for the line; a line
// passes when the assembled bytes match one of them.
var amd64VexParityCorpus = []struct {
line string
want string
}{
{"PEXTRW $7, X11, (BX)", "66 44 0f 3a 15 1b 07"},
{"PEXTRW $7, X11, (R11)", "66 45 0f 3a 15 1b 07"},
{"PEXTRW $7, X11, DX", "66 41 0f c5 d3 07|66 44 0f 3a 15 da 07"},
{"PEXTRW $7, X11, R11", "66 45 0f c5 db 07|66 45 0f 3a 15 db 07"},
{"PEXTRW $7, X2, (BX)", "66 0f 3a 15 13 07"},
{"PEXTRW $7, X2, (R11)", "66 41 0f 3a 15 13 07"},
{"PEXTRW $7, X2, DX", "66 0f c5 d2 07|66 0f 3a 15 d2 07"},
{"PEXTRW $7, X2, R11", "66 44 0f c5 da 07|66 41 0f 3a 15 d3 07"},
{"POPW (BX)", "66 8f 03"},
{"POPW (R11)", "66 41 8f 03"},
{"POPW DX", "66 8f c2|66 5a"},
{"POPW R11", "66 41 8f c3|66 41 5b"},
{"PUSHW $61731", "66 68 23 f1"},
{"PUSHW (BX)", "66 ff 33"},
{"PUSHW (R11)", "66 41 ff 33"},
{"PUSHW DX", "66 ff f2|66 52"},
{"PUSHW R11", "66 41 ff f3|66 41 53"},
{"RORXL $7, (BX), DX", "c4 e3 7b f0 13 07"},
{"RORXL $7, (BX), R11", "c4 63 7b f0 1b 07"},
{"RORXL $7, (R11), DX", "c4 c3 7b f0 13 07"},
{"RORXL $7, (R11), R11", "c4 43 7b f0 1b 07"},
{"RORXL $7, DX, DX", "c4 e3 7b f0 d2 07"},
{"RORXL $7, DX, R11", "c4 63 7b f0 da 07"},
{"RORXL $7, R11, DX", "c4 c3 7b f0 d3 07"},
{"RORXL $7, R11, R11", "c4 43 7b f0 db 07"},
{"RORXQ $7, (BX), DX", "c4 e3 fb f0 13 07"},
{"RORXQ $7, (BX), R11", "c4 63 fb f0 1b 07"},
{"RORXQ $7, (R11), DX", "c4 c3 fb f0 13 07"},
{"RORXQ $7, (R11), R11", "c4 43 fb f0 1b 07"},
{"RORXQ $7, DX, DX", "c4 e3 fb f0 d2 07"},
{"RORXQ $7, DX, R11", "c4 63 fb f0 da 07"},
{"RORXQ $7, R11, DX", "c4 c3 fb f0 d3 07"},
{"RORXQ $7, R11, R11", "c4 43 fb f0 db 07"},
{"SHLL $1, (BX)", "d1 23"},
{"SHLL $1, (R11)", "41 d1 23"},
{"SHLL $1, DX", "d1 e2"},
{"SHLL $1, R11", "41 d1 e3"},
{"SHLL $7, (BX)", "c1 23 07"},
{"SHLL $7, (R11)", "41 c1 23 07"},
{"SHLL $7, DX", "c1 e2 07"},
{"SHLL $7, DX, (BX)", "0f a4 13 07"},
{"SHLL $7, DX, (R11)", "41 0f a4 13 07"},
{"SHLL $7, DX, DX", "0f a4 d2 07"},
{"SHLL $7, DX, R11", "41 0f a4 d3 07"},
{"SHLL $7, R11", "41 c1 e3 07"},
{"SHLL $7, R11, (BX)", "44 0f a4 1b 07"},
{"SHLL $7, R11, (R11)", "45 0f a4 1b 07"},
{"SHLL $7, R11, DX", "44 0f a4 da 07"},
{"SHLL $7, R11, R11", "45 0f a4 db 07"},
{"SHLL CL, (BX)", "d3 23"},
{"SHLL CL, (R11)", "41 d3 23"},
{"SHLL CL, DX", "d3 e2"},
{"SHLL CL, DX, (BX)", "0f a5 13"},
{"SHLL CL, DX, (R11)", "41 0f a5 13"},
{"SHLL CL, DX, DX", "0f a5 d2"},
{"SHLL CL, DX, R11", "41 0f a5 d3"},
{"SHLL CL, R11", "41 d3 e3"},
{"SHLL CL, R11, (BX)", "44 0f a5 1b"},
{"SHLL CL, R11, (R11)", "45 0f a5 1b"},
{"SHLL CL, R11, DX", "44 0f a5 da"},
{"SHLL CL, R11, R11", "45 0f a5 db"},
{"SHLQ $1, (BX)", "48 d1 23"},
{"SHLQ $1, (R11)", "49 d1 23"},
{"SHLQ $1, DX", "48 d1 e2"},
{"SHLQ $1, R11", "49 d1 e3"},
{"SHLQ $7, (BX)", "48 c1 23 07"},
{"SHLQ $7, (R11)", "49 c1 23 07"},
{"SHLQ $7, DX", "48 c1 e2 07"},
{"SHLQ $7, DX, (BX)", "48 0f a4 13 07"},
{"SHLQ $7, DX, (R11)", "49 0f a4 13 07"},
{"SHLQ $7, DX, DX", "48 0f a4 d2 07"},
{"SHLQ $7, DX, R11", "49 0f a4 d3 07"},
{"SHLQ $7, R11", "49 c1 e3 07"},
{"SHLQ $7, R11, (BX)", "4c 0f a4 1b 07"},
{"SHLQ $7, R11, (R11)", "4d 0f a4 1b 07"},
{"SHLQ $7, R11, DX", "4c 0f a4 da 07"},
{"SHLQ $7, R11, R11", "4d 0f a4 db 07"},
{"SHLQ CL, (BX)", "48 d3 23"},
{"SHLQ CL, (R11)", "49 d3 23"},
{"SHLQ CL, DX", "48 d3 e2"},
{"SHLQ CL, DX, (BX)", "48 0f a5 13"},
{"SHLQ CL, DX, (R11)", "49 0f a5 13"},
{"SHLQ CL, DX, DX", "48 0f a5 d2"},
{"SHLQ CL, DX, R11", "49 0f a5 d3"},
{"SHLQ CL, R11", "49 d3 e3"},
{"SHLQ CL, R11, (BX)", "4c 0f a5 1b"},
{"SHLQ CL, R11, (R11)", "4d 0f a5 1b"},
{"SHLQ CL, R11, DX", "4c 0f a5 da"},
{"SHLQ CL, R11, R11", "4d 0f a5 db"},
{"SHLW $1, (BX)", "66 d1 23"},
{"SHLW $1, (R11)", "66 41 d1 23"},
{"SHLW $1, DX", "66 d1 e2"},
{"SHLW $1, R11", "66 41 d1 e3"},
{"SHLW $7, (BX)", "66 c1 23 07"},
{"SHLW $7, (R11)", "66 41 c1 23 07"},
{"SHLW $7, DX", "66 c1 e2 07"},
{"SHLW $7, DX, (BX)", "66 0f a4 13 07"},
{"SHLW $7, DX, (R11)", "66 41 0f a4 13 07"},
{"SHLW $7, DX, DX", "66 0f a4 d2 07"},
{"SHLW $7, DX, R11", "66 41 0f a4 d3 07"},
{"SHLW $7, R11", "66 41 c1 e3 07"},
{"SHLW $7, R11, (BX)", "66 44 0f a4 1b 07"},
{"SHLW $7, R11, (R11)", "66 45 0f a4 1b 07"},
{"SHLW $7, R11, DX", "66 44 0f a4 da 07"},
{"SHLW $7, R11, R11", "66 45 0f a4 db 07"},
{"SHLW CL, (BX)", "66 d3 23"},
{"SHLW CL, (R11)", "66 41 d3 23"},
{"SHLW CL, DX", "66 d3 e2"},
{"SHLW CL, DX, (BX)", "66 0f a5 13"},
{"SHLW CL, DX, (R11)", "66 41 0f a5 13"},
{"SHLW CL, DX, DX", "66 0f a5 d2"},
{"SHLW CL, DX, R11", "66 41 0f a5 d3"},
{"SHLW CL, R11", "66 41 d3 e3"},
{"SHLW CL, R11, (BX)", "66 44 0f a5 1b"},
{"SHLW CL, R11, (R11)", "66 45 0f a5 1b"},
{"SHLW CL, R11, DX", "66 44 0f a5 da"},
{"SHLW CL, R11, R11", "66 45 0f a5 db"},
{"VCMPPD $7, (BX), X9, X11", "c4 61 31 c2 1b 07|c5 31 c2 1b 07"},
{"VCMPPD $7, (BX), X9, X2", "c4 e1 31 c2 13 07|c5 b1 c2 13 07"},
{"VCMPPD $7, (BX), Y15, Y11", "c4 61 05 c2 1b 07|c5 05 c2 1b 07"},
{"VCMPPD $7, (BX), Y15, Y2", "c4 e1 05 c2 13 07|c5 85 c2 13 07"},
{"VCMPPD $7, (R11), X9, X11", "c4 41 31 c2 1b 07"},
{"VCMPPD $7, (R11), X9, X2", "c4 c1 31 c2 13 07"},
{"VCMPPD $7, (R11), Y15, Y11", "c4 41 05 c2 1b 07"},
{"VCMPPD $7, (R11), Y15, Y2", "c4 c1 05 c2 13 07"},
{"VCMPPD $7, X11, X9, X11", "c4 41 31 c2 db 07"},
{"VCMPPD $7, X11, X9, X2", "c4 c1 31 c2 d3 07"},
{"VCMPPD $7, X2, X9, X11", "c4 61 31 c2 da 07|c5 31 c2 da 07"},
{"VCMPPD $7, X2, X9, X2", "c4 e1 31 c2 d2 07|c5 b1 c2 d2 07"},
{"VCMPPD $7, Y11, Y15, Y11", "c4 41 05 c2 db 07"},
{"VCMPPD $7, Y11, Y15, Y2", "c4 c1 05 c2 d3 07"},
{"VCMPPD $7, Y2, Y15, Y11", "c4 61 05 c2 da 07|c5 05 c2 da 07"},
{"VCMPPD $7, Y2, Y15, Y2", "c4 e1 05 c2 d2 07|c5 85 c2 d2 07"},
{"VCMPPS $7, (BX), X9, X11", "c4 61 30 c2 1b 07|c5 30 c2 1b 07"},
{"VCMPPS $7, (BX), X9, X2", "c4 e1 30 c2 13 07|c5 b0 c2 13 07"},
{"VCMPPS $7, (BX), Y15, Y11", "c4 61 04 c2 1b 07|c5 04 c2 1b 07"},
{"VCMPPS $7, (BX), Y15, Y2", "c4 e1 04 c2 13 07|c5 84 c2 13 07"},
{"VCMPPS $7, (R11), X9, X11", "c4 41 30 c2 1b 07"},
{"VCMPPS $7, (R11), X9, X2", "c4 c1 30 c2 13 07"},
{"VCMPPS $7, (R11), Y15, Y11", "c4 41 04 c2 1b 07"},
{"VCMPPS $7, (R11), Y15, Y2", "c4 c1 04 c2 13 07"},
{"VCMPPS $7, X11, X9, X11", "c4 41 30 c2 db 07"},
{"VCMPPS $7, X11, X9, X2", "c4 c1 30 c2 d3 07"},
{"VCMPPS $7, X2, X9, X11", "c4 61 30 c2 da 07|c5 30 c2 da 07"},
{"VCMPPS $7, X2, X9, X2", "c4 e1 30 c2 d2 07|c5 b0 c2 d2 07"},
{"VCMPPS $7, Y11, Y15, Y11", "c4 41 04 c2 db 07"},
{"VCMPPS $7, Y11, Y15, Y2", "c4 c1 04 c2 d3 07"},
{"VCMPPS $7, Y2, Y15, Y11", "c4 61 04 c2 da 07|c5 04 c2 da 07"},
{"VCMPPS $7, Y2, Y15, Y2", "c4 e1 04 c2 d2 07|c5 84 c2 d2 07"},
{"VCMPSD $7, (BX), X9, X11", "c4 61 33 c2 1b 07|c5 33 c2 1b 07"},
{"VCMPSD $7, (BX), X9, X2", "c4 e1 33 c2 13 07|c5 b3 c2 13 07"},
{"VCMPSD $7, (R11), X9, X11", "c4 41 33 c2 1b 07"},
{"VCMPSD $7, (R11), X9, X2", "c4 c1 33 c2 13 07"},
{"VCMPSD $7, X11, X9, X11", "c4 41 33 c2 db 07"},
{"VCMPSD $7, X11, X9, X2", "c4 c1 33 c2 d3 07"},
{"VCMPSD $7, X2, X9, X11", "c4 61 33 c2 da 07|c5 33 c2 da 07"},
{"VCMPSD $7, X2, X9, X2", "c4 e1 33 c2 d2 07|c5 b3 c2 d2 07"},
{"VCMPSS $7, (BX), X9, X11", "c4 61 32 c2 1b 07|c5 32 c2 1b 07"},
{"VCMPSS $7, (BX), X9, X2", "c4 e1 32 c2 13 07|c5 b2 c2 13 07"},
{"VCMPSS $7, (R11), X9, X11", "c4 41 32 c2 1b 07"},
{"VCMPSS $7, (R11), X9, X2", "c4 c1 32 c2 13 07"},
{"VCMPSS $7, X11, X9, X11", "c4 41 32 c2 db 07"},
{"VCMPSS $7, X11, X9, X2", "c4 c1 32 c2 d3 07"},
{"VCMPSS $7, X2, X9, X11", "c4 61 32 c2 da 07|c5 32 c2 da 07"},
{"VCMPSS $7, X2, X9, X2", "c4 e1 32 c2 d2 07|c5 b2 c2 d2 07"},
{"VCOMISS (BX), X11", "c4 61 78 2f 1b|c5 78 2f 1b"},
{"VCOMISS (BX), X2", "c4 e1 78 2f 13|c5 f8 2f 13"},
{"VCOMISS (R11), X11", "c4 41 78 2f 1b"},
{"VCOMISS (R11), X2", "c4 c1 78 2f 13"},
{"VCOMISS X11, X11", "c4 41 78 2f db"},
{"VCOMISS X11, X2", "c4 c1 78 2f d3"},
{"VCOMISS X2, X11", "c4 61 78 2f da|c5 78 2f da"},
{"VCOMISS X2, X2", "c4 e1 78 2f d2|c5 f8 2f d2"},
{"VCVTPS2DQ (BX), X11", "c4 61 79 5b 1b|c5 79 5b 1b"},
{"VCVTPS2DQ (BX), X2", "c4 e1 79 5b 13|c5 f9 5b 13"},
{"VCVTPS2DQ (BX), Y11", "c4 61 7d 5b 1b|c5 7d 5b 1b"},
{"VCVTPS2DQ (BX), Y2", "c4 e1 7d 5b 13|c5 fd 5b 13"},
{"VCVTPS2DQ (R11), X11", "c4 41 79 5b 1b"},
{"VCVTPS2DQ (R11), X2", "c4 c1 79 5b 13"},
{"VCVTPS2DQ (R11), Y11", "c4 41 7d 5b 1b"},
{"VCVTPS2DQ (R11), Y2", "c4 c1 7d 5b 13"},
{"VCVTPS2DQ X11, X11", "c4 41 79 5b db"},
{"VCVTPS2DQ X11, X2", "c4 c1 79 5b d3"},
{"VCVTPS2DQ X2, X11", "c4 61 79 5b da|c5 79 5b da"},
{"VCVTPS2DQ X2, X2", "c4 e1 79 5b d2|c5 f9 5b d2"},
{"VCVTPS2DQ Y11, Y11", "c4 41 7d 5b db"},
{"VCVTPS2DQ Y11, Y2", "c4 c1 7d 5b d3"},
{"VCVTPS2DQ Y2, Y11", "c4 61 7d 5b da|c5 7d 5b da"},
{"VCVTPS2DQ Y2, Y2", "c4 e1 7d 5b d2|c5 fd 5b d2"},
{"VCVTTPS2DQ (BX), X11", "c4 61 7a 5b 1b|c5 7a 5b 1b"},
{"VCVTTPS2DQ (BX), X2", "c4 e1 7a 5b 13|c5 fa 5b 13"},
{"VCVTTPS2DQ (BX), Y11", "c4 61 7e 5b 1b|c5 7e 5b 1b"},
{"VCVTTPS2DQ (BX), Y2", "c4 e1 7e 5b 13|c5 fe 5b 13"},
{"VCVTTPS2DQ (R11), X11", "c4 41 7a 5b 1b"},
{"VCVTTPS2DQ (R11), X2", "c4 c1 7a 5b 13"},
{"VCVTTPS2DQ (R11), Y11", "c4 41 7e 5b 1b"},
{"VCVTTPS2DQ (R11), Y2", "c4 c1 7e 5b 13"},
{"VCVTTPS2DQ X11, X11", "c4 41 7a 5b db"},
{"VCVTTPS2DQ X11, X2", "c4 c1 7a 5b d3"},
{"VCVTTPS2DQ X2, X11", "c4 61 7a 5b da|c5 7a 5b da"},
{"VCVTTPS2DQ X2, X2", "c4 e1 7a 5b d2|c5 fa 5b d2"},
{"VCVTTPS2DQ Y11, Y11", "c4 41 7e 5b db"},
{"VCVTTPS2DQ Y11, Y2", "c4 c1 7e 5b d3"},
{"VCVTTPS2DQ Y2, Y11", "c4 61 7e 5b da|c5 7e 5b da"},
{"VCVTTPS2DQ Y2, Y2", "c4 e1 7e 5b d2|c5 fe 5b d2"},
{"VMOVLHPS X11, X9, X11", "c4 41 30 16 db"},
{"VMOVLHPS X11, X9, X2", "c4 c1 30 16 d3"},
{"VMOVLHPS X2, X9, X11", "c4 61 30 16 da|c5 30 16 da"},
{"VMOVLHPS X2, X9, X2", "c4 e1 30 16 d2|c5 b0 16 d2"},
{"VMOVUPS (BX), X11", "c4 61 78 10 1b|c5 78 10 1b"},
{"VMOVUPS (BX), X2", "c4 e1 78 10 13|c5 f8 10 13"},
{"VMOVUPS (BX), Y11", "c4 61 7c 10 1b|c5 7c 10 1b"},
{"VMOVUPS (BX), Y2", "c4 e1 7c 10 13|c5 fc 10 13"},
{"VMOVUPS (R11), X11", "c4 41 78 10 1b"},
{"VMOVUPS (R11), X2", "c4 c1 78 10 13"},
{"VMOVUPS (R11), Y11", "c4 41 7c 10 1b"},
{"VMOVUPS (R11), Y2", "c4 c1 7c 10 13"},
{"VMOVUPS X11, (BX)", "c4 61 78 11 1b|c5 78 11 1b"},
{"VMOVUPS X11, (R11)", "c4 41 78 11 1b"},
{"VMOVUPS X11, X11", "c4 41 78 10 db|c4 41 78 11 db"},
{"VMOVUPS X11, X2", "c4 c1 78 10 d3|c4 61 78 11 da|c5 78 11 da"},
{"VMOVUPS X2, (BX)", "c4 e1 78 11 13|c5 f8 11 13"},
{"VMOVUPS X2, (R11)", "c4 c1 78 11 13"},
{"VMOVUPS X2, X11", "c4 61 78 10 da|c5 78 10 da|c4 c1 78 11 d3"},
{"VMOVUPS X2, X2", "c4 e1 78 10 d2|c5 f8 10 d2|c4 e1 78 11 d2|c5 f8 11 d2"},
{"VMOVUPS Y11, (BX)", "c4 61 7c 11 1b|c5 7c 11 1b"},
{"VMOVUPS Y11, (R11)", "c4 41 7c 11 1b"},
{"VMOVUPS Y11, Y11", "c4 41 7c 10 db|c4 41 7c 11 db"},
{"VMOVUPS Y11, Y2", "c4 c1 7c 10 d3|c4 61 7c 11 da|c5 7c 11 da"},
{"VMOVUPS Y2, (BX)", "c4 e1 7c 11 13|c5 fc 11 13"},
{"VMOVUPS Y2, (R11)", "c4 c1 7c 11 13"},
{"VMOVUPS Y2, Y11", "c4 61 7c 10 da|c5 7c 10 da|c4 c1 7c 11 d3"},
{"VMOVUPS Y2, Y2", "c4 e1 7c 10 d2|c5 fc 10 d2|c4 e1 7c 11 d2|c5 fc 11 d2"},
{"VPABSB (BX), X11", "c4 62 79 1c 1b"},
{"VPABSB (BX), X2", "c4 e2 79 1c 13"},
{"VPABSB (BX), Y11", "c4 62 7d 1c 1b"},
{"VPABSB (BX), Y2", "c4 e2 7d 1c 13"},
{"VPABSB (R11), X11", "c4 42 79 1c 1b"},
{"VPABSB (R11), X2", "c4 c2 79 1c 13"},
{"VPABSB (R11), Y11", "c4 42 7d 1c 1b"},
{"VPABSB (R11), Y2", "c4 c2 7d 1c 13"},
{"VPABSB X11, X11", "c4 42 79 1c db"},
{"VPABSB X11, X2", "c4 c2 79 1c d3"},
{"VPABSB X2, X11", "c4 62 79 1c da"},
{"VPABSB X2, X2", "c4 e2 79 1c d2"},
{"VPABSB Y11, Y11", "c4 42 7d 1c db"},
{"VPABSB Y11, Y2", "c4 c2 7d 1c d3"},
{"VPABSB Y2, Y11", "c4 62 7d 1c da"},
{"VPABSB Y2, Y2", "c4 e2 7d 1c d2"},
{"VPABSD (BX), X11", "c4 62 79 1e 1b"},
{"VPABSD (BX), X2", "c4 e2 79 1e 13"},
{"VPABSD (BX), Y11", "c4 62 7d 1e 1b"},
{"VPABSD (BX), Y2", "c4 e2 7d 1e 13"},
{"VPABSD (R11), X11", "c4 42 79 1e 1b"},
{"VPABSD (R11), X2", "c4 c2 79 1e 13"},
{"VPABSD (R11), Y11", "c4 42 7d 1e 1b"},
{"VPABSD (R11), Y2", "c4 c2 7d 1e 13"},
{"VPABSD X11, X11", "c4 42 79 1e db"},
{"VPABSD X11, X2", "c4 c2 79 1e d3"},
{"VPABSD X2, X11", "c4 62 79 1e da"},
{"VPABSD X2, X2", "c4 e2 79 1e d2"},
{"VPABSD Y11, Y11", "c4 42 7d 1e db"},
{"VPABSD Y11, Y2", "c4 c2 7d 1e d3"},
{"VPABSD Y2, Y11", "c4 62 7d 1e da"},
{"VPABSD Y2, Y2", "c4 e2 7d 1e d2"},
{"VPABSW (BX), X11", "c4 62 79 1d 1b"},
{"VPABSW (BX), X2", "c4 e2 79 1d 13"},
{"VPABSW (BX), Y11", "c4 62 7d 1d 1b"},
{"VPABSW (BX), Y2", "c4 e2 7d 1d 13"},
{"VPABSW (R11), X11", "c4 42 79 1d 1b"},
{"VPABSW (R11), X2", "c4 c2 79 1d 13"},
{"VPABSW (R11), Y11", "c4 42 7d 1d 1b"},
{"VPABSW (R11), Y2", "c4 c2 7d 1d 13"},
{"VPABSW X11, X11", "c4 42 79 1d db"},
{"VPABSW X11, X2", "c4 c2 79 1d d3"},
{"VPABSW X2, X11", "c4 62 79 1d da"},
{"VPABSW X2, X2", "c4 e2 79 1d d2"},
{"VPABSW Y11, Y11", "c4 42 7d 1d db"},
{"VPABSW Y11, Y2", "c4 c2 7d 1d d3"},
{"VPABSW Y2, Y11", "c4 62 7d 1d da"},
{"VPABSW Y2, Y2", "c4 e2 7d 1d d2"},
{"VPACKSSWB (BX), X9, X11", "c4 61 31 63 1b|c5 31 63 1b"},
{"VPACKSSWB (BX), X9, X2", "c4 e1 31 63 13|c5 b1 63 13"},
{"VPACKSSWB (BX), Y15, Y11", "c4 61 05 63 1b|c5 05 63 1b"},
{"VPACKSSWB (BX), Y15, Y2", "c4 e1 05 63 13|c5 85 63 13"},
{"VPACKSSWB (R11), X9, X11", "c4 41 31 63 1b"},
{"VPACKSSWB (R11), X9, X2", "c4 c1 31 63 13"},
{"VPACKSSWB (R11), Y15, Y11", "c4 41 05 63 1b"},
{"VPACKSSWB (R11), Y15, Y2", "c4 c1 05 63 13"},
{"VPACKSSWB X11, X9, X11", "c4 41 31 63 db"},
{"VPACKSSWB X11, X9, X2", "c4 c1 31 63 d3"},
{"VPACKSSWB X2, X9, X11", "c4 61 31 63 da|c5 31 63 da"},
{"VPACKSSWB X2, X9, X2", "c4 e1 31 63 d2|c5 b1 63 d2"},
{"VPACKSSWB Y11, Y15, Y11", "c4 41 05 63 db"},
{"VPACKSSWB Y11, Y15, Y2", "c4 c1 05 63 d3"},
{"VPACKSSWB Y2, Y15, Y11", "c4 61 05 63 da|c5 05 63 da"},
{"VPACKSSWB Y2, Y15, Y2", "c4 e1 05 63 d2|c5 85 63 d2"},
{"VPACKUSDW (BX), X9, X11", "c4 62 31 2b 1b"},
{"VPACKUSDW (BX), X9, X2", "c4 e2 31 2b 13"},
{"VPACKUSDW (BX), Y15, Y11", "c4 62 05 2b 1b"},
{"VPACKUSDW (BX), Y15, Y2", "c4 e2 05 2b 13"},
{"VPACKUSDW (R11), X9, X11", "c4 42 31 2b 1b"},
{"VPACKUSDW (R11), X9, X2", "c4 c2 31 2b 13"},
{"VPACKUSDW (R11), Y15, Y11", "c4 42 05 2b 1b"},
{"VPACKUSDW (R11), Y15, Y2", "c4 c2 05 2b 13"},
{"VPACKUSDW X11, X9, X11", "c4 42 31 2b db"},
{"VPACKUSDW X11, X9, X2", "c4 c2 31 2b d3"},
{"VPACKUSDW X2, X9, X11", "c4 62 31 2b da"},
{"VPACKUSDW X2, X9, X2", "c4 e2 31 2b d2"},
{"VPACKUSDW Y11, Y15, Y11", "c4 42 05 2b db"},
{"VPACKUSDW Y11, Y15, Y2", "c4 c2 05 2b d3"},
{"VPACKUSDW Y2, Y15, Y11", "c4 62 05 2b da"},
{"VPACKUSDW Y2, Y15, Y2", "c4 e2 05 2b d2"},
{"VPACKUSWB (BX), X9, X11", "c4 61 31 67 1b|c5 31 67 1b"},
{"VPACKUSWB (BX), X9, X2", "c4 e1 31 67 13|c5 b1 67 13"},
{"VPACKUSWB (BX), Y15, Y11", "c4 61 05 67 1b|c5 05 67 1b"},
{"VPACKUSWB (BX), Y15, Y2", "c4 e1 05 67 13|c5 85 67 13"},
{"VPACKUSWB (R11), X9, X11", "c4 41 31 67 1b"},
{"VPACKUSWB (R11), X9, X2", "c4 c1 31 67 13"},
{"VPACKUSWB (R11), Y15, Y11", "c4 41 05 67 1b"},
{"VPACKUSWB (R11), Y15, Y2", "c4 c1 05 67 13"},
{"VPACKUSWB X11, X9, X11", "c4 41 31 67 db"},
{"VPACKUSWB X11, X9, X2", "c4 c1 31 67 d3"},
{"VPACKUSWB X2, X9, X11", "c4 61 31 67 da|c5 31 67 da"},
{"VPACKUSWB X2, X9, X2", "c4 e1 31 67 d2|c5 b1 67 d2"},
{"VPACKUSWB Y11, Y15, Y11", "c4 41 05 67 db"},
{"VPACKUSWB Y11, Y15, Y2", "c4 c1 05 67 d3"},
{"VPACKUSWB Y2, Y15, Y11", "c4 61 05 67 da|c5 05 67 da"},
{"VPACKUSWB Y2, Y15, Y2", "c4 e1 05 67 d2|c5 85 67 d2"},
{"VPADDB (BX), X9, X11", "c4 61 31 fc 1b|c5 31 fc 1b"},
{"VPADDB (BX), X9, X2", "c4 e1 31 fc 13|c5 b1 fc 13"},
{"VPADDB (BX), Y15, Y11", "c4 61 05 fc 1b|c5 05 fc 1b"},
{"VPADDB (BX), Y15, Y2", "c4 e1 05 fc 13|c5 85 fc 13"},
{"VPADDB (R11), X9, X11", "c4 41 31 fc 1b"},
{"VPADDB (R11), X9, X2", "c4 c1 31 fc 13"},
{"VPADDB (R11), Y15, Y11", "c4 41 05 fc 1b"},
{"VPADDB (R11), Y15, Y2", "c4 c1 05 fc 13"},
{"VPADDB X11, X9, X11", "c4 41 31 fc db"},
{"VPADDB X11, X9, X2", "c4 c1 31 fc d3"},
{"VPADDB X2, X9, X11", "c4 61 31 fc da|c5 31 fc da"},
{"VPADDB X2, X9, X2", "c4 e1 31 fc d2|c5 b1 fc d2"},
{"VPADDB Y11, Y15, Y11", "c4 41 05 fc db"},
{"VPADDB Y11, Y15, Y2", "c4 c1 05 fc d3"},
{"VPADDB Y2, Y15, Y11", "c4 61 05 fc da|c5 05 fc da"},
{"VPADDB Y2, Y15, Y2", "c4 e1 05 fc d2|c5 85 fc d2"},
{"VPADDW (BX), X9, X11", "c4 61 31 fd 1b|c5 31 fd 1b"},
{"VPADDW (BX), X9, X2", "c4 e1 31 fd 13|c5 b1 fd 13"},
{"VPADDW (BX), Y15, Y11", "c4 61 05 fd 1b|c5 05 fd 1b"},
{"VPADDW (BX), Y15, Y2", "c4 e1 05 fd 13|c5 85 fd 13"},
{"VPADDW (R11), X9, X11", "c4 41 31 fd 1b"},
{"VPADDW (R11), X9, X2", "c4 c1 31 fd 13"},
{"VPADDW (R11), Y15, Y11", "c4 41 05 fd 1b"},
{"VPADDW (R11), Y15, Y2", "c4 c1 05 fd 13"},
{"VPADDW X11, X9, X11", "c4 41 31 fd db"},
{"VPADDW X11, X9, X2", "c4 c1 31 fd d3"},
{"VPADDW X2, X9, X11", "c4 61 31 fd da|c5 31 fd da"},
{"VPADDW X2, X9, X2", "c4 e1 31 fd d2|c5 b1 fd d2"},
{"VPADDW Y11, Y15, Y11", "c4 41 05 fd db"},
{"VPADDW Y11, Y15, Y2", "c4 c1 05 fd d3"},
{"VPADDW Y2, Y15, Y11", "c4 61 05 fd da|c5 05 fd da"},
{"VPADDW Y2, Y15, Y2", "c4 e1 05 fd d2|c5 85 fd d2"},
{"VPAVGB (BX), X9, X11", "c4 61 31 e0 1b|c5 31 e0 1b"},
{"VPAVGB (BX), X9, X2", "c4 e1 31 e0 13|c5 b1 e0 13"},
{"VPAVGB (BX), Y15, Y11", "c4 61 05 e0 1b|c5 05 e0 1b"},
{"VPAVGB (BX), Y15, Y2", "c4 e1 05 e0 13|c5 85 e0 13"},
{"VPAVGB (R11), X9, X11", "c4 41 31 e0 1b"},
{"VPAVGB (R11), X9, X2", "c4 c1 31 e0 13"},
{"VPAVGB (R11), Y15, Y11", "c4 41 05 e0 1b"},
{"VPAVGB (R11), Y15, Y2", "c4 c1 05 e0 13"},
{"VPAVGB X11, X9, X11", "c4 41 31 e0 db"},
{"VPAVGB X11, X9, X2", "c4 c1 31 e0 d3"},
{"VPAVGB X2, X9, X11", "c4 61 31 e0 da|c5 31 e0 da"},
{"VPAVGB X2, X9, X2", "c4 e1 31 e0 d2|c5 b1 e0 d2"},
{"VPAVGB Y11, Y15, Y11", "c4 41 05 e0 db"},
{"VPAVGB Y11, Y15, Y2", "c4 c1 05 e0 d3"},
{"VPAVGB Y2, Y15, Y11", "c4 61 05 e0 da|c5 05 e0 da"},
{"VPAVGB Y2, Y15, Y2", "c4 e1 05 e0 d2|c5 85 e0 d2"},
{"VPAVGW (BX), X9, X11", "c4 61 31 e3 1b|c5 31 e3 1b"},
{"VPAVGW (BX), X9, X2", "c4 e1 31 e3 13|c5 b1 e3 13"},
{"VPAVGW (BX), Y15, Y11", "c4 61 05 e3 1b|c5 05 e3 1b"},
{"VPAVGW (BX), Y15, Y2", "c4 e1 05 e3 13|c5 85 e3 13"},
{"VPAVGW (R11), X9, X11", "c4 41 31 e3 1b"},
{"VPAVGW (R11), X9, X2", "c4 c1 31 e3 13"},
{"VPAVGW (R11), Y15, Y11", "c4 41 05 e3 1b"},
{"VPAVGW (R11), Y15, Y2", "c4 c1 05 e3 13"},
{"VPAVGW X11, X9, X11", "c4 41 31 e3 db"},
{"VPAVGW X11, X9, X2", "c4 c1 31 e3 d3"},
{"VPAVGW X2, X9, X11", "c4 61 31 e3 da|c5 31 e3 da"},
{"VPAVGW X2, X9, X2", "c4 e1 31 e3 d2|c5 b1 e3 d2"},
{"VPAVGW Y11, Y15, Y11", "c4 41 05 e3 db"},
{"VPAVGW Y11, Y15, Y2", "c4 c1 05 e3 d3"},
{"VPAVGW Y2, Y15, Y11", "c4 61 05 e3 da|c5 05 e3 da"},
{"VPAVGW Y2, Y15, Y2", "c4 e1 05 e3 d2|c5 85 e3 d2"},
{"VPMADDUBSW (BX), X9, X11", "c4 62 31 04 1b"},
{"VPMADDUBSW (BX), X9, X2", "c4 e2 31 04 13"},
{"VPMADDUBSW (BX), Y15, Y11", "c4 62 05 04 1b"},
{"VPMADDUBSW (BX), Y15, Y2", "c4 e2 05 04 13"},
{"VPMADDUBSW (R11), X9, X11", "c4 42 31 04 1b"},
{"VPMADDUBSW (R11), X9, X2", "c4 c2 31 04 13"},
{"VPMADDUBSW (R11), Y15, Y11", "c4 42 05 04 1b"},
{"VPMADDUBSW (R11), Y15, Y2", "c4 c2 05 04 13"},
{"VPMADDUBSW X11, X9, X11", "c4 42 31 04 db"},
{"VPMADDUBSW X11, X9, X2", "c4 c2 31 04 d3"},
{"VPMADDUBSW X2, X9, X11", "c4 62 31 04 da"},
{"VPMADDUBSW X2, X9, X2", "c4 e2 31 04 d2"},
{"VPMADDUBSW Y11, Y15, Y11", "c4 42 05 04 db"},
{"VPMADDUBSW Y11, Y15, Y2", "c4 c2 05 04 d3"},
{"VPMADDUBSW Y2, Y15, Y11", "c4 62 05 04 da"},
{"VPMADDUBSW Y2, Y15, Y2", "c4 e2 05 04 d2"},
{"VPMADDWD (BX), X9, X11", "c4 61 31 f5 1b|c5 31 f5 1b"},
{"VPMADDWD (BX), X9, X2", "c4 e1 31 f5 13|c5 b1 f5 13"},
{"VPMADDWD (BX), Y15, Y11", "c4 61 05 f5 1b|c5 05 f5 1b"},
{"VPMADDWD (BX), Y15, Y2", "c4 e1 05 f5 13|c5 85 f5 13"},
{"VPMADDWD (R11), X9, X11", "c4 41 31 f5 1b"},
{"VPMADDWD (R11), X9, X2", "c4 c1 31 f5 13"},
{"VPMADDWD (R11), Y15, Y11", "c4 41 05 f5 1b"},
{"VPMADDWD (R11), Y15, Y2", "c4 c1 05 f5 13"},
{"VPMADDWD X11, X9, X11", "c4 41 31 f5 db"},
{"VPMADDWD X11, X9, X2", "c4 c1 31 f5 d3"},
{"VPMADDWD X2, X9, X11", "c4 61 31 f5 da|c5 31 f5 da"},
{"VPMADDWD X2, X9, X2", "c4 e1 31 f5 d2|c5 b1 f5 d2"},
{"VPMADDWD Y11, Y15, Y11", "c4 41 05 f5 db"},
{"VPMADDWD Y11, Y15, Y2", "c4 c1 05 f5 d3"},
{"VPMADDWD Y2, Y15, Y11", "c4 61 05 f5 da|c5 05 f5 da"},
{"VPMADDWD Y2, Y15, Y2", "c4 e1 05 f5 d2|c5 85 f5 d2"},
{"VPMAXSB (BX), X9, X11", "c4 62 31 3c 1b"},
{"VPMAXSB (BX), X9, X2", "c4 e2 31 3c 13"},
{"VPMAXSB (BX), Y15, Y11", "c4 62 05 3c 1b"},
{"VPMAXSB (BX), Y15, Y2", "c4 e2 05 3c 13"},
{"VPMAXSB (R11), X9, X11", "c4 42 31 3c 1b"},
{"VPMAXSB (R11), X9, X2", "c4 c2 31 3c 13"},
{"VPMAXSB (R11), Y15, Y11", "c4 42 05 3c 1b"},
{"VPMAXSB (R11), Y15, Y2", "c4 c2 05 3c 13"},
{"VPMAXSB X11, X9, X11", "c4 42 31 3c db"},
{"VPMAXSB X11, X9, X2", "c4 c2 31 3c d3"},
{"VPMAXSB X2, X9, X11", "c4 62 31 3c da"},
{"VPMAXSB X2, X9, X2", "c4 e2 31 3c d2"},
{"VPMAXSB Y11, Y15, Y11", "c4 42 05 3c db"},
{"VPMAXSB Y11, Y15, Y2", "c4 c2 05 3c d3"},
{"VPMAXSB Y2, Y15, Y11", "c4 62 05 3c da"},
{"VPMAXSB Y2, Y15, Y2", "c4 e2 05 3c d2"},
{"VPMAXSD (BX), X9, X11", "c4 62 31 3d 1b"},
{"VPMAXSD (BX), X9, X2", "c4 e2 31 3d 13"},
{"VPMAXSD (BX), Y15, Y11", "c4 62 05 3d 1b"},
{"VPMAXSD (BX), Y15, Y2", "c4 e2 05 3d 13"},
{"VPMAXSD (R11), X9, X11", "c4 42 31 3d 1b"},
{"VPMAXSD (R11), X9, X2", "c4 c2 31 3d 13"},
{"VPMAXSD (R11), Y15, Y11", "c4 42 05 3d 1b"},
{"VPMAXSD (R11), Y15, Y2", "c4 c2 05 3d 13"},
{"VPMAXSD X11, X9, X11", "c4 42 31 3d db"},
{"VPMAXSD X11, X9, X2", "c4 c2 31 3d d3"},
{"VPMAXSD X2, X9, X11", "c4 62 31 3d da"},
{"VPMAXSD X2, X9, X2", "c4 e2 31 3d d2"},
{"VPMAXSD Y11, Y15, Y11", "c4 42 05 3d db"},
{"VPMAXSD Y11, Y15, Y2", "c4 c2 05 3d d3"},
{"VPMAXSD Y2, Y15, Y11", "c4 62 05 3d da"},
{"VPMAXSD Y2, Y15, Y2", "c4 e2 05 3d d2"},
{"VPMAXSW (BX), X9, X11", "c4 61 31 ee 1b|c5 31 ee 1b"},
{"VPMAXSW (BX), X9, X2", "c4 e1 31 ee 13|c5 b1 ee 13"},
{"VPMAXSW (BX), Y15, Y11", "c4 61 05 ee 1b|c5 05 ee 1b"},
{"VPMAXSW (BX), Y15, Y2", "c4 e1 05 ee 13|c5 85 ee 13"},
{"VPMAXSW (R11), X9, X11", "c4 41 31 ee 1b"},
{"VPMAXSW (R11), X9, X2", "c4 c1 31 ee 13"},
{"VPMAXSW (R11), Y15, Y11", "c4 41 05 ee 1b"},
{"VPMAXSW (R11), Y15, Y2", "c4 c1 05 ee 13"},
{"VPMAXSW X11, X9, X11", "c4 41 31 ee db"},
{"VPMAXSW X11, X9, X2", "c4 c1 31 ee d3"},
{"VPMAXSW X2, X9, X11", "c4 61 31 ee da|c5 31 ee da"},
{"VPMAXSW X2, X9, X2", "c4 e1 31 ee d2|c5 b1 ee d2"},
{"VPMAXSW Y11, Y15, Y11", "c4 41 05 ee db"},
{"VPMAXSW Y11, Y15, Y2", "c4 c1 05 ee d3"},
{"VPMAXSW Y2, Y15, Y11", "c4 61 05 ee da|c5 05 ee da"},
{"VPMAXSW Y2, Y15, Y2", "c4 e1 05 ee d2|c5 85 ee d2"},
{"VPMAXUB (BX), X9, X11", "c4 61 31 de 1b|c5 31 de 1b"},
{"VPMAXUB (BX), X9, X2", "c4 e1 31 de 13|c5 b1 de 13"},
{"VPMAXUB (BX), Y15, Y11", "c4 61 05 de 1b|c5 05 de 1b"},
{"VPMAXUB (BX), Y15, Y2", "c4 e1 05 de 13|c5 85 de 13"},
{"VPMAXUB (R11), X9, X11", "c4 41 31 de 1b"},
{"VPMAXUB (R11), X9, X2", "c4 c1 31 de 13"},
{"VPMAXUB (R11), Y15, Y11", "c4 41 05 de 1b"},
{"VPMAXUB (R11), Y15, Y2", "c4 c1 05 de 13"},
{"VPMAXUB X11, X9, X11", "c4 41 31 de db"},
{"VPMAXUB X11, X9, X2", "c4 c1 31 de d3"},
{"VPMAXUB X2, X9, X11", "c4 61 31 de da|c5 31 de da"},
{"VPMAXUB X2, X9, X2", "c4 e1 31 de d2|c5 b1 de d2"},
{"VPMAXUB Y11, Y15, Y11", "c4 41 05 de db"},
{"VPMAXUB Y11, Y15, Y2", "c4 c1 05 de d3"},
{"VPMAXUB Y2, Y15, Y11", "c4 61 05 de da|c5 05 de da"},
{"VPMAXUB Y2, Y15, Y2", "c4 e1 05 de d2|c5 85 de d2"},
{"VPMAXUD (BX), X9, X11", "c4 62 31 3f 1b"},
{"VPMAXUD (BX), X9, X2", "c4 e2 31 3f 13"},
{"VPMAXUD (BX), Y15, Y11", "c4 62 05 3f 1b"},
{"VPMAXUD (BX), Y15, Y2", "c4 e2 05 3f 13"},
{"VPMAXUD (R11), X9, X11", "c4 42 31 3f 1b"},
{"VPMAXUD (R11), X9, X2", "c4 c2 31 3f 13"},
{"VPMAXUD (R11), Y15, Y11", "c4 42 05 3f 1b"},
{"VPMAXUD (R11), Y15, Y2", "c4 c2 05 3f 13"},
{"VPMAXUD X11, X9, X11", "c4 42 31 3f db"},
{"VPMAXUD X11, X9, X2", "c4 c2 31 3f d3"},
{"VPMAXUD X2, X9, X11", "c4 62 31 3f da"},
{"VPMAXUD X2, X9, X2", "c4 e2 31 3f d2"},
{"VPMAXUD Y11, Y15, Y11", "c4 42 05 3f db"},
{"VPMAXUD Y11, Y15, Y2", "c4 c2 05 3f d3"},
{"VPMAXUD Y2, Y15, Y11", "c4 62 05 3f da"},
{"VPMAXUD Y2, Y15, Y2", "c4 e2 05 3f d2"},
{"VPMAXUW (BX), X9, X11", "c4 62 31 3e 1b"},
{"VPMAXUW (BX), X9, X2", "c4 e2 31 3e 13"},
{"VPMAXUW (BX), Y15, Y11", "c4 62 05 3e 1b"},
{"VPMAXUW (BX), Y15, Y2", "c4 e2 05 3e 13"},
{"VPMAXUW (R11), X9, X11", "c4 42 31 3e 1b"},
{"VPMAXUW (R11), X9, X2", "c4 c2 31 3e 13"},
{"VPMAXUW (R11), Y15, Y11", "c4 42 05 3e 1b"},
{"VPMAXUW (R11), Y15, Y2", "c4 c2 05 3e 13"},
{"VPMAXUW X11, X9, X11", "c4 42 31 3e db"},
{"VPMAXUW X11, X9, X2", "c4 c2 31 3e d3"},
{"VPMAXUW X2, X9, X11", "c4 62 31 3e da"},
{"VPMAXUW X2, X9, X2", "c4 e2 31 3e d2"},
{"VPMAXUW Y11, Y15, Y11", "c4 42 05 3e db"},
{"VPMAXUW Y11, Y15, Y2", "c4 c2 05 3e d3"},
{"VPMAXUW Y2, Y15, Y11", "c4 62 05 3e da"},
{"VPMAXUW Y2, Y15, Y2", "c4 e2 05 3e d2"},
{"VPMINSB (BX), X9, X11", "c4 62 31 38 1b"},
{"VPMINSB (BX), X9, X2", "c4 e2 31 38 13"},
{"VPMINSB (BX), Y15, Y11", "c4 62 05 38 1b"},
{"VPMINSB (BX), Y15, Y2", "c4 e2 05 38 13"},
{"VPMINSB (R11), X9, X11", "c4 42 31 38 1b"},
{"VPMINSB (R11), X9, X2", "c4 c2 31 38 13"},
{"VPMINSB (R11), Y15, Y11", "c4 42 05 38 1b"},
{"VPMINSB (R11), Y15, Y2", "c4 c2 05 38 13"},
{"VPMINSB X11, X9, X11", "c4 42 31 38 db"},
{"VPMINSB X11, X9, X2", "c4 c2 31 38 d3"},
{"VPMINSB X2, X9, X11", "c4 62 31 38 da"},
{"VPMINSB X2, X9, X2", "c4 e2 31 38 d2"},
{"VPMINSB Y11, Y15, Y11", "c4 42 05 38 db"},
{"VPMINSB Y11, Y15, Y2", "c4 c2 05 38 d3"},
{"VPMINSB Y2, Y15, Y11", "c4 62 05 38 da"},
{"VPMINSB Y2, Y15, Y2", "c4 e2 05 38 d2"},
{"VPMINSD (BX), X9, X11", "c4 62 31 39 1b"},
{"VPMINSD (BX), X9, X2", "c4 e2 31 39 13"},
{"VPMINSD (BX), Y15, Y11", "c4 62 05 39 1b"},
{"VPMINSD (BX), Y15, Y2", "c4 e2 05 39 13"},
{"VPMINSD (R11), X9, X11", "c4 42 31 39 1b"},
{"VPMINSD (R11), X9, X2", "c4 c2 31 39 13"},
{"VPMINSD (R11), Y15, Y11", "c4 42 05 39 1b"},
{"VPMINSD (R11), Y15, Y2", "c4 c2 05 39 13"},
{"VPMINSD X11, X9, X11", "c4 42 31 39 db"},
{"VPMINSD X11, X9, X2", "c4 c2 31 39 d3"},
{"VPMINSD X2, X9, X11", "c4 62 31 39 da"},
{"VPMINSD X2, X9, X2", "c4 e2 31 39 d2"},
{"VPMINSD Y11, Y15, Y11", "c4 42 05 39 db"},
{"VPMINSD Y11, Y15, Y2", "c4 c2 05 39 d3"},
{"VPMINSD Y2, Y15, Y11", "c4 62 05 39 da"},
{"VPMINSD Y2, Y15, Y2", "c4 e2 05 39 d2"},
{"VPMINSW (BX), X9, X11", "c4 61 31 ea 1b|c5 31 ea 1b"},
{"VPMINSW (BX), X9, X2", "c4 e1 31 ea 13|c5 b1 ea 13"},
{"VPMINSW (BX), Y15, Y11", "c4 61 05 ea 1b|c5 05 ea 1b"},
{"VPMINSW (BX), Y15, Y2", "c4 e1 05 ea 13|c5 85 ea 13"},
{"VPMINSW (R11), X9, X11", "c4 41 31 ea 1b"},
{"VPMINSW (R11), X9, X2", "c4 c1 31 ea 13"},
{"VPMINSW (R11), Y15, Y11", "c4 41 05 ea 1b"},
{"VPMINSW (R11), Y15, Y2", "c4 c1 05 ea 13"},
{"VPMINSW X11, X9, X11", "c4 41 31 ea db"},
{"VPMINSW X11, X9, X2", "c4 c1 31 ea d3"},
{"VPMINSW X2, X9, X11", "c4 61 31 ea da|c5 31 ea da"},
{"VPMINSW X2, X9, X2", "c4 e1 31 ea d2|c5 b1 ea d2"},
{"VPMINSW Y11, Y15, Y11", "c4 41 05 ea db"},
{"VPMINSW Y11, Y15, Y2", "c4 c1 05 ea d3"},
{"VPMINSW Y2, Y15, Y11", "c4 61 05 ea da|c5 05 ea da"},
{"VPMINSW Y2, Y15, Y2", "c4 e1 05 ea d2|c5 85 ea d2"},
{"VPMINUB (BX), X9, X11", "c4 61 31 da 1b|c5 31 da 1b"},
{"VPMINUB (BX), X9, X2", "c4 e1 31 da 13|c5 b1 da 13"},
{"VPMINUB (BX), Y15, Y11", "c4 61 05 da 1b|c5 05 da 1b"},
{"VPMINUB (BX), Y15, Y2", "c4 e1 05 da 13|c5 85 da 13"},
{"VPMINUB (R11), X9, X11", "c4 41 31 da 1b"},
{"VPMINUB (R11), X9, X2", "c4 c1 31 da 13"},
{"VPMINUB (R11), Y15, Y11", "c4 41 05 da 1b"},
{"VPMINUB (R11), Y15, Y2", "c4 c1 05 da 13"},
{"VPMINUB X11, X9, X11", "c4 41 31 da db"},
{"VPMINUB X11, X9, X2", "c4 c1 31 da d3"},
{"VPMINUB X2, X9, X11", "c4 61 31 da da|c5 31 da da"},
{"VPMINUB X2, X9, X2", "c4 e1 31 da d2|c5 b1 da d2"},
{"VPMINUB Y11, Y15, Y11", "c4 41 05 da db"},
{"VPMINUB Y11, Y15, Y2", "c4 c1 05 da d3"},
{"VPMINUB Y2, Y15, Y11", "c4 61 05 da da|c5 05 da da"},
{"VPMINUB Y2, Y15, Y2", "c4 e1 05 da d2|c5 85 da d2"},
{"VPMINUD (BX), X9, X11", "c4 62 31 3b 1b"},
{"VPMINUD (BX), X9, X2", "c4 e2 31 3b 13"},
{"VPMINUD (BX), Y15, Y11", "c4 62 05 3b 1b"},
{"VPMINUD (BX), Y15, Y2", "c4 e2 05 3b 13"},
{"VPMINUD (R11), X9, X11", "c4 42 31 3b 1b"},
{"VPMINUD (R11), X9, X2", "c4 c2 31 3b 13"},
{"VPMINUD (R11), Y15, Y11", "c4 42 05 3b 1b"},
{"VPMINUD (R11), Y15, Y2", "c4 c2 05 3b 13"},
{"VPMINUD X11, X9, X11", "c4 42 31 3b db"},
{"VPMINUD X11, X9, X2", "c4 c2 31 3b d3"},
{"VPMINUD X2, X9, X11", "c4 62 31 3b da"},
{"VPMINUD X2, X9, X2", "c4 e2 31 3b d2"},
{"VPMINUD Y11, Y15, Y11", "c4 42 05 3b db"},
{"VPMINUD Y11, Y15, Y2", "c4 c2 05 3b d3"},
{"VPMINUD Y2, Y15, Y11", "c4 62 05 3b da"},
{"VPMINUD Y2, Y15, Y2", "c4 e2 05 3b d2"},
{"VPMINUW (BX), X9, X11", "c4 62 31 3a 1b"},
{"VPMINUW (BX), X9, X2", "c4 e2 31 3a 13"},
{"VPMINUW (BX), Y15, Y11", "c4 62 05 3a 1b"},
{"VPMINUW (BX), Y15, Y2", "c4 e2 05 3a 13"},
{"VPMINUW (R11), X9, X11", "c4 42 31 3a 1b"},
{"VPMINUW (R11), X9, X2", "c4 c2 31 3a 13"},
{"VPMINUW (R11), Y15, Y11", "c4 42 05 3a 1b"},
{"VPMINUW (R11), Y15, Y2", "c4 c2 05 3a 13"},
{"VPMINUW X11, X9, X11", "c4 42 31 3a db"},
{"VPMINUW X11, X9, X2", "c4 c2 31 3a d3"},
{"VPMINUW X2, X9, X11", "c4 62 31 3a da"},
{"VPMINUW X2, X9, X2", "c4 e2 31 3a d2"},
{"VPMINUW Y11, Y15, Y11", "c4 42 05 3a db"},
{"VPMINUW Y11, Y15, Y2", "c4 c2 05 3a d3"},
{"VPMINUW Y2, Y15, Y11", "c4 62 05 3a da"},
{"VPMINUW Y2, Y15, Y2", "c4 e2 05 3a d2"},
{"VPMOVSXBW (BX), X11", "c4 62 79 20 1b"},
{"VPMOVSXBW (BX), X2", "c4 e2 79 20 13"},
{"VPMOVSXBW (BX), Y11", "c4 62 7d 20 1b"},
{"VPMOVSXBW (BX), Y2", "c4 e2 7d 20 13"},
{"VPMOVSXBW (R11), X11", "c4 42 79 20 1b"},
{"VPMOVSXBW (R11), X2", "c4 c2 79 20 13"},
{"VPMOVSXBW (R11), Y11", "c4 42 7d 20 1b"},
{"VPMOVSXBW (R11), Y2", "c4 c2 7d 20 13"},
{"VPMOVSXBW X11, X11", "c4 42 79 20 db"},
{"VPMOVSXBW X11, X2", "c4 c2 79 20 d3"},
{"VPMOVSXBW X11, Y11", "c4 42 7d 20 db"},
{"VPMOVSXBW X11, Y2", "c4 c2 7d 20 d3"},
{"VPMOVSXBW X2, X11", "c4 62 79 20 da"},
{"VPMOVSXBW X2, X2", "c4 e2 79 20 d2"},
{"VPMOVSXBW X2, Y11", "c4 62 7d 20 da"},
{"VPMOVSXBW X2, Y2", "c4 e2 7d 20 d2"},
{"VPMULHUW (BX), X9, X11", "c4 61 31 e4 1b|c5 31 e4 1b"},
{"VPMULHUW (BX), X9, X2", "c4 e1 31 e4 13|c5 b1 e4 13"},
{"VPMULHUW (BX), Y15, Y11", "c4 61 05 e4 1b|c5 05 e4 1b"},
{"VPMULHUW (BX), Y15, Y2", "c4 e1 05 e4 13|c5 85 e4 13"},
{"VPMULHUW (R11), X9, X11", "c4 41 31 e4 1b"},
{"VPMULHUW (R11), X9, X2", "c4 c1 31 e4 13"},
{"VPMULHUW (R11), Y15, Y11", "c4 41 05 e4 1b"},
{"VPMULHUW (R11), Y15, Y2", "c4 c1 05 e4 13"},
{"VPMULHUW X11, X9, X11", "c4 41 31 e4 db"},
{"VPMULHUW X11, X9, X2", "c4 c1 31 e4 d3"},
{"VPMULHUW X2, X9, X11", "c4 61 31 e4 da|c5 31 e4 da"},
{"VPMULHUW X2, X9, X2", "c4 e1 31 e4 d2|c5 b1 e4 d2"},
{"VPMULHUW Y11, Y15, Y11", "c4 41 05 e4 db"},
{"VPMULHUW Y11, Y15, Y2", "c4 c1 05 e4 d3"},
{"VPMULHUW Y2, Y15, Y11", "c4 61 05 e4 da|c5 05 e4 da"},
{"VPMULHUW Y2, Y15, Y2", "c4 e1 05 e4 d2|c5 85 e4 d2"},
{"VPMULLW (BX), X9, X11", "c4 61 31 d5 1b|c5 31 d5 1b"},
{"VPMULLW (BX), X9, X2", "c4 e1 31 d5 13|c5 b1 d5 13"},
{"VPMULLW (BX), Y15, Y11", "c4 61 05 d5 1b|c5 05 d5 1b"},
{"VPMULLW (BX), Y15, Y2", "c4 e1 05 d5 13|c5 85 d5 13"},
{"VPMULLW (R11), X9, X11", "c4 41 31 d5 1b"},
{"VPMULLW (R11), X9, X2", "c4 c1 31 d5 13"},
{"VPMULLW (R11), Y15, Y11", "c4 41 05 d5 1b"},
{"VPMULLW (R11), Y15, Y2", "c4 c1 05 d5 13"},
{"VPMULLW X11, X9, X11", "c4 41 31 d5 db"},
{"VPMULLW X11, X9, X2", "c4 c1 31 d5 d3"},
{"VPMULLW X2, X9, X11", "c4 61 31 d5 da|c5 31 d5 da"},
{"VPMULLW X2, X9, X2", "c4 e1 31 d5 d2|c5 b1 d5 d2"},
{"VPMULLW Y11, Y15, Y11", "c4 41 05 d5 db"},
{"VPMULLW Y11, Y15, Y2", "c4 c1 05 d5 d3"},
{"VPMULLW Y2, Y15, Y11", "c4 61 05 d5 da|c5 05 d5 da"},
{"VPMULLW Y2, Y15, Y2", "c4 e1 05 d5 d2|c5 85 d5 d2"},
{"VPSLLVD (BX), X9, X11", "c4 62 31 47 1b"},
{"VPSLLVD (BX), X9, X2", "c4 e2 31 47 13"},
{"VPSLLVD (BX), Y15, Y11", "c4 62 05 47 1b"},
{"VPSLLVD (BX), Y15, Y2", "c4 e2 05 47 13"},
{"VPSLLVD (R11), X9, X11", "c4 42 31 47 1b"},
{"VPSLLVD (R11), X9, X2", "c4 c2 31 47 13"},
{"VPSLLVD (R11), Y15, Y11", "c4 42 05 47 1b"},
{"VPSLLVD (R11), Y15, Y2", "c4 c2 05 47 13"},
{"VPSLLVD X11, X9, X11", "c4 42 31 47 db"},
{"VPSLLVD X11, X9, X2", "c4 c2 31 47 d3"},
{"VPSLLVD X2, X9, X11", "c4 62 31 47 da"},
{"VPSLLVD X2, X9, X2", "c4 e2 31 47 d2"},
{"VPSLLVD Y11, Y15, Y11", "c4 42 05 47 db"},
{"VPSLLVD Y11, Y15, Y2", "c4 c2 05 47 d3"},
{"VPSLLVD Y2, Y15, Y11", "c4 62 05 47 da"},
{"VPSLLVD Y2, Y15, Y2", "c4 e2 05 47 d2"},
{"VPSLLVQ (BX), X9, X11", "c4 62 b1 47 1b"},
{"VPSLLVQ (BX), X9, X2", "c4 e2 b1 47 13"},
{"VPSLLVQ (BX), Y15, Y11", "c4 62 85 47 1b"},
{"VPSLLVQ (BX), Y15, Y2", "c4 e2 85 47 13"},
{"VPSLLVQ (R11), X9, X11", "c4 42 b1 47 1b"},
{"VPSLLVQ (R11), X9, X2", "c4 c2 b1 47 13"},
{"VPSLLVQ (R11), Y15, Y11", "c4 42 85 47 1b"},
{"VPSLLVQ (R11), Y15, Y2", "c4 c2 85 47 13"},
{"VPSLLVQ X11, X9, X11", "c4 42 b1 47 db"},
{"VPSLLVQ X11, X9, X2", "c4 c2 b1 47 d3"},
{"VPSLLVQ X2, X9, X11", "c4 62 b1 47 da"},
{"VPSLLVQ X2, X9, X2", "c4 e2 b1 47 d2"},
{"VPSLLVQ Y11, Y15, Y11", "c4 42 85 47 db"},
{"VPSLLVQ Y11, Y15, Y2", "c4 c2 85 47 d3"},
{"VPSLLVQ Y2, Y15, Y11", "c4 62 85 47 da"},
{"VPSLLVQ Y2, Y15, Y2", "c4 e2 85 47 d2"},
{"VPSRAVD (BX), X9, X11", "c4 62 31 46 1b"},
{"VPSRAVD (BX), X9, X2", "c4 e2 31 46 13"},
{"VPSRAVD (BX), Y15, Y11", "c4 62 05 46 1b"},
{"VPSRAVD (BX), Y15, Y2", "c4 e2 05 46 13"},
{"VPSRAVD (R11), X9, X11", "c4 42 31 46 1b"},
{"VPSRAVD (R11), X9, X2", "c4 c2 31 46 13"},
{"VPSRAVD (R11), Y15, Y11", "c4 42 05 46 1b"},
{"VPSRAVD (R11), Y15, Y2", "c4 c2 05 46 13"},
{"VPSRAVD X11, X9, X11", "c4 42 31 46 db"},
{"VPSRAVD X11, X9, X2", "c4 c2 31 46 d3"},
{"VPSRAVD X2, X9, X11", "c4 62 31 46 da"},
{"VPSRAVD X2, X9, X2", "c4 e2 31 46 d2"},
{"VPSRAVD Y11, Y15, Y11", "c4 42 05 46 db"},
{"VPSRAVD Y11, Y15, Y2", "c4 c2 05 46 d3"},
{"VPSRAVD Y2, Y15, Y11", "c4 62 05 46 da"},
{"VPSRAVD Y2, Y15, Y2", "c4 e2 05 46 d2"},
{"VPSRLVD (BX), X9, X11", "c4 62 31 45 1b"},
{"VPSRLVD (BX), X9, X2", "c4 e2 31 45 13"},
{"VPSRLVD (BX), Y15, Y11", "c4 62 05 45 1b"},
{"VPSRLVD (BX), Y15, Y2", "c4 e2 05 45 13"},
{"VPSRLVD (R11), X9, X11", "c4 42 31 45 1b"},
{"VPSRLVD (R11), X9, X2", "c4 c2 31 45 13"},
{"VPSRLVD (R11), Y15, Y11", "c4 42 05 45 1b"},
{"VPSRLVD (R11), Y15, Y2", "c4 c2 05 45 13"},
{"VPSRLVD X11, X9, X11", "c4 42 31 45 db"},
{"VPSRLVD X11, X9, X2", "c4 c2 31 45 d3"},
{"VPSRLVD X2, X9, X11", "c4 62 31 45 da"},
{"VPSRLVD X2, X9, X2", "c4 e2 31 45 d2"},
{"VPSRLVD Y11, Y15, Y11", "c4 42 05 45 db"},
{"VPSRLVD Y11, Y15, Y2", "c4 c2 05 45 d3"},
{"VPSRLVD Y2, Y15, Y11", "c4 62 05 45 da"},
{"VPSRLVD Y2, Y15, Y2", "c4 e2 05 45 d2"},
{"VPSRLVQ (BX), X9, X11", "c4 62 b1 45 1b"},
{"VPSRLVQ (BX), X9, X2", "c4 e2 b1 45 13"},
{"VPSRLVQ (BX), Y15, Y11", "c4 62 85 45 1b"},
{"VPSRLVQ (BX), Y15, Y2", "c4 e2 85 45 13"},
{"VPSRLVQ (R11), X9, X11", "c4 42 b1 45 1b"},
{"VPSRLVQ (R11), X9, X2", "c4 c2 b1 45 13"},
{"VPSRLVQ (R11), Y15, Y11", "c4 42 85 45 1b"},
{"VPSRLVQ (R11), Y15, Y2", "c4 c2 85 45 13"},
{"VPSRLVQ X11, X9, X11", "c4 42 b1 45 db"},
{"VPSRLVQ X11, X9, X2", "c4 c2 b1 45 d3"},
{"VPSRLVQ X2, X9, X11", "c4 62 b1 45 da"},
{"VPSRLVQ X2, X9, X2", "c4 e2 b1 45 d2"},
{"VPSRLVQ Y11, Y15, Y11", "c4 42 85 45 db"},
{"VPSRLVQ Y11, Y15, Y2", "c4 c2 85 45 d3"},
{"VPSRLVQ Y2, Y15, Y11", "c4 62 85 45 da"},
{"VPSRLVQ Y2, Y15, Y2", "c4 e2 85 45 d2"},
{"VPSUBB (BX), X9, X11", "c4 61 31 f8 1b|c5 31 f8 1b"},
{"VPSUBB (BX), X9, X2", "c4 e1 31 f8 13|c5 b1 f8 13"},
{"VPSUBB (BX), Y15, Y11", "c4 61 05 f8 1b|c5 05 f8 1b"},
{"VPSUBB (BX), Y15, Y2", "c4 e1 05 f8 13|c5 85 f8 13"},
{"VPSUBB (R11), X9, X11", "c4 41 31 f8 1b"},
{"VPSUBB (R11), X9, X2", "c4 c1 31 f8 13"},
{"VPSUBB (R11), Y15, Y11", "c4 41 05 f8 1b"},
{"VPSUBB (R11), Y15, Y2", "c4 c1 05 f8 13"},
{"VPSUBB X11, X9, X11", "c4 41 31 f8 db"},
{"VPSUBB X11, X9, X2", "c4 c1 31 f8 d3"},
{"VPSUBB X2, X9, X11", "c4 61 31 f8 da|c5 31 f8 da"},
{"VPSUBB X2, X9, X2", "c4 e1 31 f8 d2|c5 b1 f8 d2"},
{"VPSUBB Y11, Y15, Y11", "c4 41 05 f8 db"},
{"VPSUBB Y11, Y15, Y2", "c4 c1 05 f8 d3"},
{"VPSUBB Y2, Y15, Y11", "c4 61 05 f8 da|c5 05 f8 da"},
{"VPSUBB Y2, Y15, Y2", "c4 e1 05 f8 d2|c5 85 f8 d2"},
{"VPSUBW (BX), X9, X11", "c4 61 31 f9 1b|c5 31 f9 1b"},
{"VPSUBW (BX), X9, X2", "c4 e1 31 f9 13|c5 b1 f9 13"},
{"VPSUBW (BX), Y15, Y11", "c4 61 05 f9 1b|c5 05 f9 1b"},
{"VPSUBW (BX), Y15, Y2", "c4 e1 05 f9 13|c5 85 f9 13"},
{"VPSUBW (R11), X9, X11", "c4 41 31 f9 1b"},
{"VPSUBW (R11), X9, X2", "c4 c1 31 f9 13"},
{"VPSUBW (R11), Y15, Y11", "c4 41 05 f9 1b"},
{"VPSUBW (R11), Y15, Y2", "c4 c1 05 f9 13"},
{"VPSUBW X11, X9, X11", "c4 41 31 f9 db"},
{"VPSUBW X11, X9, X2", "c4 c1 31 f9 d3"},
{"VPSUBW X2, X9, X11", "c4 61 31 f9 da|c5 31 f9 da"},
{"VPSUBW X2, X9, X2", "c4 e1 31 f9 d2|c5 b1 f9 d2"},
{"VPSUBW Y11, Y15, Y11", "c4 41 05 f9 db"},
{"VPSUBW Y11, Y15, Y2", "c4 c1 05 f9 d3"},
{"VPSUBW Y2, Y15, Y11", "c4 61 05 f9 da|c5 05 f9 da"},
{"VPSUBW Y2, Y15, Y2", "c4 e1 05 f9 d2|c5 85 f9 d2"},
{"VSHUFPS $7, (BX), X9, X11", "c4 61 30 c6 1b 07|c5 30 c6 1b 07"},
{"VSHUFPS $7, (BX), X9, X2", "c4 e1 30 c6 13 07|c5 b0 c6 13 07"},
{"VSHUFPS $7, (BX), Y15, Y11", "c4 61 04 c6 1b 07|c5 04 c6 1b 07"},
{"VSHUFPS $7, (BX), Y15, Y2", "c4 e1 04 c6 13 07|c5 84 c6 13 07"},
{"VSHUFPS $7, (R11), X9, X11", "c4 41 30 c6 1b 07"},
{"VSHUFPS $7, (R11), X9, X2", "c4 c1 30 c6 13 07"},
{"VSHUFPS $7, (R11), Y15, Y11", "c4 41 04 c6 1b 07"},
{"VSHUFPS $7, (R11), Y15, Y2", "c4 c1 04 c6 13 07"},
{"VSHUFPS $7, X11, X9, X11", "c4 41 30 c6 db 07"},
{"VSHUFPS $7, X11, X9, X2", "c4 c1 30 c6 d3 07"},
{"VSHUFPS $7, X2, X9, X11", "c4 61 30 c6 da 07|c5 30 c6 da 07"},
{"VSHUFPS $7, X2, X9, X2", "c4 e1 30 c6 d2 07|c5 b0 c6 d2 07"},
{"VSHUFPS $7, Y11, Y15, Y11", "c4 41 04 c6 db 07"},
{"VSHUFPS $7, Y11, Y15, Y2", "c4 c1 04 c6 d3 07"},
{"VSHUFPS $7, Y2, Y15, Y11", "c4 61 04 c6 da 07|c5 04 c6 da 07"},
{"VSHUFPS $7, Y2, Y15, Y2", "c4 e1 04 c6 d2 07|c5 84 c6 d2 07"},
}
// TestAmd64VexParityCorpus assembles every corpus line and requires the
// bytes to match one of the alternatives go tool asm accepts.
func TestAmd64VexParityCorpus(t *testing.T) {
for _, tc := range amd64VexParityCorpus {
fn := firstText(t, "TEXT ·p(SB), 4, $0\n\t"+tc.line+"\n")
code, _, err := Assemble(fn)
if err != nil {
t.Errorf("%s: %v", tc.line, err)
continue
}
got := hexBytes(code)
if !slices.Contains(strings.Split(tc.want, "|"), got) {
t.Errorf("%s: got %s, want one of %s", tc.line, got, tc.want)
}
}
}