diff --git a/disasm/parity_test.go b/disasm/parity_test.go new file mode 100644 index 0000000..af675b1 --- /dev/null +++ b/disasm/parity_test.go @@ -0,0 +1,357 @@ +// Copyright (c) 2026 Petr BalvĂ­n (https://petrbalvin.org) +// SPDX-License-Identifier: BSD-3-Clause + +package disasm + +import ( + "encoding/hex" + "os" + "strings" + "testing" + + "sourcedock.dev/petrbalvin/gasm-sdk/arch" + "sourcedock.dev/petrbalvin/gasm-sdk/asm" + "sourcedock.dev/petrbalvin/gasm-sdk/ast" + "sourcedock.dev/petrbalvin/gasm-sdk/parser" +) + +// The parity fixtures carry a deterministic slice of the Go toolchain's own +// view of the encoder corpus, one instruction per line as +// +// HEXBYTES\tTOOLCHAINTEXT +// +// where HEXBYTES are the instruction's bytes in storage order and +// TOOLCHAINTEXT is what `go tool objdump` prints for them (its decoder is +// the ground truth). The slices were sampled from GOROOT's assembler test +// data with a fixed stride: amd64enc.s (the x87, SSE/MMX, VEX, XSAVE and +// system families), amd64enc_extra.s, amd64.s, arm64enc.s, riscv64.s and +// loong64enc1.s. +var parityFixtures = []struct { + arch arch.Arch + file string +}{ + {arch.AMD64, "testdata/parity_amd64.txt"}, + {arch.AMD64, "testdata/parity_amd64_extra.txt"}, + {arch.AMD64, "testdata/parity_amd64_sys.txt"}, + {arch.ARM64, "testdata/parity_arm64.txt"}, + {arch.RISCV, "testdata/parity_riscv64.txt"}, + {arch.LOONG64, "testdata/parity_loong64.txt"}, +} + +// TestOracleKnownBytes pins the oracle's own fidelity on a few encodings +// whose bytes the sources name outright, before the bulk fixtures are +// trusted: each row was cross-checked against `go tool objdump` over an +// object the Go toolchain's own assembler produced. +func TestOracleKnownBytes(t *testing.T) { + for _, tt := range []struct { + a arch.Arch + code []byte + text string + }{ + // go tool asm: MOVQ AX, CX -> 4889c1. + {arch.AMD64, []byte{0x48, 0x89, 0xc1}, "MOVQ AX, CX"}, + // arm64enc.s: "ADCW ZR, R8, R10 // 1a1f010a". + {arch.ARM64, []byte{0x0a, 0x01, 0x1f, 0x1a}, "ADCW ZR, R8, R10"}, + // riscv64.s: "ADDI $2047, X5 // 9382f27f". + {arch.RISCV, []byte{0x93, 0x82, 0xf2, 0x7f}, "ADDI $2047, X5, X5"}, + // The loong64 RET the runtime emits: 0x4c000020. + {arch.LOONG64, []byte{0x20, 0x00, 0x00, 0x4c}, "RET"}, + } { + ins, err := Decode(tt.a, tt.code, 0) + if err != nil { + t.Errorf("%s % x: %v", tt.a, tt.code, err) + continue + } + if ins.Text != tt.text || ins.Len != len(tt.code) { + t.Errorf("%s % x: %q (%d bytes), want %q (%d)", + tt.a, tt.code, ins.Text, ins.Len, tt.text, len(tt.code)) + } + } +} + +// TestToolchainDecodeParity requires the decoder to reproduce the +// toolchain's text for every fixture instruction, and to agree on the +// instruction's length: both views of the same bytes. +func TestToolchainDecodeParity(t *testing.T) { + for _, fx := range parityFixtures { + lines := readFixture(t, fx.file) + for i, ln := range lines { + // The amd64 branch rendering carries an absolute target, which + // is a property of the decode base and not of the bytes; those + // lines are pinned by TestBranchTargetConvention instead. + if fx.arch == arch.AMD64 && relativeBranch(ln.text) { + continue + } + ins, err := Decode(fx.arch, ln.code, 0) + if err != nil { + t.Errorf("%s line %d: %v", fx.file, i+1, err) + continue + } + if ins.Len != len(ln.code) { + t.Errorf("%s line %d: % x decoded to %d bytes, toolchain says %d", + fx.file, i+1, ln.code, ins.Len, len(ln.code)) + continue + } + if ins.Text != ln.text { + t.Errorf("%s line %d: % x decodes to %q, toolchain says %q", + fx.file, i+1, ln.code, ins.Text, ln.text) + } + } + } +} + +// TestBranchTargetConvention pins the rendering convention for relative +// branches: the target prints as an absolute address in the address space +// of the addr argument, which is exactly what `go tool objdump` does. Both +// views are faithful to the bytes; they must be decoded at the same base to +// compare. +func TestBranchTargetConvention(t *testing.T) { + ins, err := Decode(arch.AMD64, []byte{0x72, 0x02}, 0x1ded) + if err != nil { + t.Fatal(err) + } + // The toolchain prints "JB 0x1df1" for these bytes at the same base. + if ins.Text != "JB 0x1df1" { + t.Errorf("JB at base 0x1ded: %q, want JB 0x1df1", ins.Text) + } + // The toolchain's listing documents relocations after the text + // ("[3:7]R_PCREL:foo+4"); that is bookkeeping of the listing, not part + // of the disassembler's text, and the fixtures carry it stripped. +} + +// relativeBranch reports whether the rendered text carries a PC-relative +// or position-dependent target. Such an operand is an address, not a +// datum: it is faithful to the bytes only at the address the instruction +// sits at, so re-assembling it inside a fresh wrapper cannot be expected +// to reproduce them. The amd64 J- and LOOP/CALL families, plus the +// arm64, riscv64 and loong64 "(PC)" forms, all fall here. +func relativeBranch(text string) bool { + if strings.Contains(text, "(PC)") || strings.Contains(text, "(RPC)") { + return true + } + // Mnemonic is the first whitespace-free token. + m := text + if i := strings.IndexAny(text, " \t"); i >= 0 { + m = text[:i] + } + switch { + case strings.HasPrefix(m, "J"), // amd64 Jcc, JMP; arm64/riscv JMP + m == "CALL", m == "XBEGIN", + m == "LOOP", m == "LOOPE", m == "LOOPNE", m == "LOOPZ", m == "LOOPNZ", + m == "CBNZ", m == "CBZ", m == "TBZ", m == "TBNZ", m == "BL": + return true + } + return false +} + +// toolchainRenderNames lists mnemonics the toolchain's own renderer prints +// but the gasm encoder cannot assemble. Two kinds sit here: the spellings +// golang.org/x/arch keeps in its non-Plan 9 form (MOVZX and MOVSX where +// the assembler spells MOVBLZX and MOVBLSX, the CMOV* family, the packed +// shuffles it names MOVDQA and MOVDQU, the CVT conversions), so the listing +// text is not assembler input at all, and the handful of Plan 9 names the +// encoder has no table entry for yet (CMPPD, STOSB, PUSHL). A parse +// failure outside this set is a test failure, so the set shrinks as the +// encoder's vocabulary grows. +var toolchainRenderNames = map[string]bool{ + "MOVZX": true, "MOVSX": true, "MOVSXD": true, + "SHLDL": true, "SHLDW": true, "SHLDQ": true, + "SHRDL": true, "SHRDW": true, "SHRDQ": true, + "MOVBE": true, "LSL": true, "LAR": true, + "CMOVA": true, "CMOVAE": true, "CMOVB": true, "CMOVBE": true, + "CMOVE": true, "CMOVG": true, "CMOVGE": true, "CMOVL": true, + "CMOVNE": true, "CMOVNO": true, "CMOVNP": true, "CMOVNS": true, + "CMOVO": true, "CMOVP": true, "CMOVS": true, + "PUNPCKLWD": true, "PUNPCKLDQ": true, "PUNPCKHWD": true, "PUNPCKHDQ": true, + "PSLLD": true, "PSRLD": true, "PSRAD": true, + "PMULUDQ": true, "PMADDWD": true, "PACKSSDW": true, + "MOVDQA": true, "MOVDQU": true, "MASKMOVDQU": true, + "LSS": true, "LGS": true, "LFS": true, + "WRGSBASE": true, "RDFSBASE": true, "STR": true, "SLDT": true, + "RDRAND": true, "POPF": true, "LRET": true, + "FDIV": true, "FADD": true, "FRINTS": true, "FRINTM": true, + "CMPPD": true, "STOSB": true, "PUSHL": true, + "MOVSD_XMM": true, "CMPSD_XMM": true, + "CMPPS": true, "CMPSS": true, "CMPSB": true, "MOVSQ": true, "OUTSW": true, + "SLLIUW": true, "SH1ADD": true, "SH2ADDUW": true, + "BSETI": true, "BEXTI": true, "CLMULR": true, + "CPOPW": true, "ORCB": true, "FABS": true, "FABSS": true, "FMUL": true, + "MRS": true, "LU12IW": true, + "CVTTSS2SIL": true, "CVTTSD2SIL": true, + "CVTTPS2DQ": true, "CVTTPD2DQ": true, + "CVTSS2SIL": true, "CVTSI2SSQ": true, "CVTSI2SSL": true, + "CVTSI2SDQ": true, "CVTSI2SDL": true, "CVTSD2SIL": true, + "CVTPS2DQ": true, "CVTPD2DQ": true, "CVTDQ2PS": true, "CVTDQ2PD": true, +} + +// encoderDivergences lists fixture lines whose disassembler text re-encodes +// to a DIFFERENT reading, so neither the byte-exact invariant nor the +// fixed-point one can hold. Every entry is a finding for the asm package's +// encoder, reported and not fixed here; the disassembler text itself is the +// toolchain's. amd64: CMOVLE encodes the CMOVE condition code; MOVQ to a +// memory operand drops the FS segment prefix; MOVQ2DQ takes the F2 prefix +// and lands in MOVDQ2Q; CRC32 with a 16-bit register widens to 32 bits. +// arm64: the CRC32 forms take the wrong Rm; the register-indexed load and +// store forms lose the index operand; BFXIL encodes as BFI with shifted +// immediates. loong64: the SC displacement encodes unscaled. +// riscv64: FSGNJXS encodes as FMIN.S; FCLASSS and FCLASSD encode as MOVF; +// the AUIPC immediate loses its high bits. Keyed by the fixture text. +var encoderDivergences = map[string]bool{ + "CMOVLE 0(BX), DX": true, + "MOVQ FS:0, DX": true, + "MOVQ2DQ M2, X11": true, + "CRC32 DL, R11": true, + "XADDL DL, DL": true, + "XCHGL DL, DL": true, + "CMPL AL, $0x7": true, + "CMPXCHGL DL, DL": true, + "ANDL $0x7, AL": true, + "SBBL $0x7, DL": true, + "SBBL DL, R11": true, + "SUBL $0x7, AL": true, + "TESTL R11, DL": true, + "BFXIL $26, R8, $16, R20": true, + "CRC32B R17, R8, R16": true, + "CRC32CB R19, R27, R22": true, + "MOVBU (R27)(R23), R14": true, + "MOVHU (R5)(R25.SXTW), R15": true, + "MOVB (R5)(R15), R16": true, + "MOVD R27, (R5)(R15.UXTW<<3)": true, + "MOVH R11, (R27)(R14.SXTW<<1)": true, + "SC R4, 1024(R5)": true, + "FSGNJXS F1, F0, F2": true, + "FCLASSS F0, X5": true, + "FCLASSD F0, X5": true, + "AUIPC $524287, X10": true, +} + +// TestDisassemblyRoundTrip is the cheap invariant over the same slice: +// dis(assemble(x)) must re-encode to x's bytes. The listing text goes back +// through the parser and the encoder inside a fresh function, and the +// result must match the fixture bytes exactly. +// +// Three documented kinds of line cannot carry the byte-exact invariant and +// degrade to the weaker fixed-point check, decode(assemble(text)) == text: +// position-dependent branches (relativeBranch), mnemonics the toolchain +// renderer leaves outside Plan 9 vocabulary (toolchainRenderNames), and +// the encoder divergences reported for asm (encoderDivergences) only for +// the byte comparison. A line of none of these kinds must round-trip byte +// for byte. +func TestDisassemblyRoundTrip(t *testing.T) { + for _, fx := range parityFixtures { + lines := readFixture(t, fx.file) + skipped := 0 + for i, ln := range lines { + if relativeBranch(ln.text) { + skipped++ + continue + } + m := mnemonic(ln.text) + switch { + case toolchainRenderNames[m]: + // The toolchain renders a spelling the encoder cannot take. + skipped++ + continue + case fx.arch == arch.RISCV && strings.HasPrefix(m, "V"): + // The RISC-V vector slice of the corpus is the open encoder + // roadmap item; its mnemonics do not assemble yet. The + // decode side is fully covered by the parity test, which + // never parses. + skipped++ + continue + case m == "Unknown": + // The x/arch loong64 renderer names opcodes it has no Go + // spelling for "Unknown ..."; that text is the toolchain's + // own and no assembler input. + skipped++ + continue + } + src := "TEXT \u00b7k(SB), NOSPLIT, $0\n\t" + ln.text + "\n\tRET\n" + f, errs := parser.Parse("k.s", src) + if len(errs) > 0 { + t.Errorf("%s line %d (%s): parse: %v", fx.file, i+1, ln.text, errs[0]) + continue + } + img, err := assembleFor(fx.arch, f) + if err != nil { + t.Errorf("%s line %d (%s): assemble: %v", fx.file, i+1, ln.text, err) + continue + } + fn := img.Funcs[0] + code := img.Code[fn.Offset : fn.Offset+fn.Size] + if len(code) >= len(ln.code) && string(code[:len(ln.code)]) == string(ln.code) { + continue + } + // Weaker invariant for the documented classes: the text must be + // a fixed point of decode followed by encode, that is, the + // re-encoded bytes must carry the same reading. Byte-equality + // divergences outside the encoder set are real failures. + back, err := Decode(fx.arch, code, 0) + if err != nil || back.Text != ln.text { + if encoderDivergences[ln.text] { + continue + } + got := "undecodable" + if err == nil { + got = back.Text + } + t.Errorf("%s line %d (%s): round trip re-decodes as %q, bytes % x", + fx.file, i+1, ln.text, got, code) + } + } + if skipped > 0 { + t.Logf("%s: %d of %d lines excluded (branches and toolchain-only spellings)", fx.file, skipped, len(lines)) + } + } +} + +// mnemonic returns the first whitespace-free token of the text. +func mnemonic(text string) string { + if i := strings.IndexAny(text, " \t"); i >= 0 { + return text[:i] + } + return text +} + +type fixtureLine struct { + code []byte + text string +} + +func readFixture(t *testing.T, name string) []fixtureLine { + t.Helper() + data, err := os.ReadFile(name) + if err != nil { + t.Fatalf("%s: %v", name, err) + } + var out []fixtureLine + for i, line := range strings.Split(strings.TrimSuffix(string(data), "\n"), "\n") { + if line == "" { + continue + } + tab := strings.IndexByte(line, '\t') + if tab < 0 { + t.Fatalf("%s line %d: no tab separator", name, i+1) + } + code, err := hex.DecodeString(line[:tab]) + if err != nil { + t.Fatalf("%s line %d: bad hex: %v", name, i+1, err) + } + out = append(out, fixtureLine{code: code, text: line[tab+1:]}) + } + return out +} + +// assemble assembles the parsed file with the encoder for a. +func assembleFor(a arch.Arch, f *ast.File) (*asm.Image, error) { + switch a { + case arch.ARM64: + return asm.AssembleFileARM64(f) + case arch.RISCV: + return asm.AssembleFileRISCV(f) + case arch.LOONG64: + return asm.AssembleFileLOONG64(f) + default: + return asm.AssembleFile(f) + } +} diff --git a/disasm/testdata/parity_amd64.txt b/disasm/testdata/parity_amd64.txt new file mode 100644 index 0000000..fdb1dc0 --- /dev/null +++ b/disasm/testdata/parity_amd64.txt @@ -0,0 +1,1228 @@ +664181d323f1 ADCW $-0xedd, R11 +6645111b ADCW R11, 0(R11) +4181d3674523f1 ADCL $-0xedcba99, R11 +45111b ADCL R11, 0(R11) +4981d3674523f1 ADCQ $-0xedcba99, R11 +4d111b ADCQ R11, 0(R11) +4180d307 ADCL $0x7, R11 +4510db ADCL R11, R11 +45131b ADCL 0(R11), R11 +45121b ADCB 0(R11), R11 +66830307 ADDW $0x7, 0(BX) +6601d2 ADDW DX, DX +830307 ADDL $0x7, 0(BX) +01d2 ADDL DX, DX +48830307 ADDQ $0x7, 0(BX) +4801d2 ADDQ DX, DX +0013 ADDB DL, 0(BX) +660313 ADDW 0(BX), DX +480313 ADDQ 0(BX), DX +660f5813 ADDPD 0(BX), X2 +0f5813 ADDPS 0(BX), X2 +f20f5813 ADDSD 0(BX), X2 +f30f5813 ADDSS 0(BX), X2 +660fd013 ADDSUBPD 0(BX), X2 +f20fd013 ADDSUBPS 0(BX), X2 +660f38de13 AESDEC 0(BX), X2 +660f38df13 AESDECLAST 0(BX), X2 +660f38dc13 AESENC 0(BX), X2 +660f38dd13 AESENCLAST 0(BX), X2 +660f38db13 AESIMC 0(BX), X2 +660f3adf1307 AESKEYGENASSIST $0x7, 0(BX), X2 +2407 ANDL $0x7, AL +66832307 ANDW $0x7, 0(BX) +6621d2 ANDW DX, DX +832307 ANDL $0x7, 0(BX) +21d2 ANDL DX, DX +48832307 ANDQ $0x7, 0(BX) +4821d2 ANDQ DX, DX +2013 ANDB DL, 0(BX) +662313 ANDW 0(BX), DX +482313 ANDQ 0(BX), DX +660f5513 ANDNPD 0(BX), X2 +0f5513 ANDNPS 0(BX), X2 +660f5413 ANDPD 0(BX), X2 +0f5413 ANDPS 0(BX), X2 +660f3a0d1307 BLENDPD $0x7, 0(BX), X2 +660f3a0c1307 BLENDPS $0x7, 0(BX), X2 +660f381513 BLENDVPD X0, 0(BX), X2 +660f381413 BLENDVPS X0, 0(BX), X2 +660fbc13 BSFW 0(BX), DX +0fbc13 BSFL 0(BX), DX +480fbc13 BSFQ 0(BX), DX +660fbd13 BSRW 0(BX), DX +0fbd13 BSRL 0(BX), DX +480fbd13 BSRQ 0(BX), DX +0fca BSWAP DX +660fa313 BTW DX, 0(BX) +0fba2307 BTL $0x7, 0(BX) +0fa3d2 BTL DX, DX +480fa313 BTQ DX, 0(BX) +660fba3b07 BTCW $0x7, 0(BX) +660fbbd2 BTCW DX, DX +0fbb13 BTCL DX, 0(BX) +480fba3b07 BTCQ $0x7, 0(BX) +480fbbd2 BTCQ DX, DX +660fb313 BTRW DX, 0(BX) +0fba3307 BTRL $0x7, 0(BX) +0fb3d2 BTRL DX, DX +480fb313 BTRQ DX, 0(BX) +660fba2b07 BTSW $0x7, 0(BX) +660fabd2 BTSW DX, DX +0fab13 BTSL DX, 0(BX) +480fba2b07 BTSQ $0x7, 0(BX) +480fabd2 BTSQ DX, DX +fc CLD +660f4713 CMOVA 0(BX), DX +0f4713 CMOVA 0(BX), DX +480f4713 CMOVA 0(BX), DX +660f4313 CMOVAE 0(BX), DX +0f4313 CMOVAE 0(BX), DX +480f4313 CMOVAE 0(BX), DX +660f4213 CMOVB 0(BX), DX +0f4213 CMOVB 0(BX), DX +480f4213 CMOVB 0(BX), DX +660f4613 CMOVBE 0(BX), DX +0f4613 CMOVBE 0(BX), DX +480f4613 CMOVBE 0(BX), DX +660f4413 CMOVE 0(BX), DX +0f4413 CMOVE 0(BX), DX +480f4413 CMOVE 0(BX), DX +660f4f13 CMOVG 0(BX), DX +0f4f13 CMOVG 0(BX), DX +480f4f13 CMOVG 0(BX), DX +660f4d13 CMOVGE 0(BX), DX +0f4d13 CMOVGE 0(BX), DX +480f4d13 CMOVGE 0(BX), DX +660f4c13 CMOVL 0(BX), DX +0f4c13 CMOVL 0(BX), DX +480f4c13 CMOVL 0(BX), DX +660f4e13 CMOVLE 0(BX), DX +0f4e13 CMOVLE 0(BX), DX +480f4e13 CMOVLE 0(BX), DX +660f4513 CMOVNE 0(BX), DX +0f4513 CMOVNE 0(BX), DX +480f4513 CMOVNE 0(BX), DX +660f4113 CMOVNO 0(BX), DX +0f4113 CMOVNO 0(BX), DX +480f4113 CMOVNO 0(BX), DX +660f4b13 CMOVNP 0(BX), DX +0f4b13 CMOVNP 0(BX), DX +480f4b13 CMOVNP 0(BX), DX +660f4913 CMOVNS 0(BX), DX +0f4913 CMOVNS 0(BX), DX +480f4913 CMOVNS 0(BX), DX +660f4013 CMOVO 0(BX), DX +0f4013 CMOVO 0(BX), DX +480f4013 CMOVO 0(BX), DX +660f4a13 CMOVP 0(BX), DX +0f4a13 CMOVP 0(BX), DX +480f4a13 CMOVP 0(BX), DX +660f4813 CMOVS 0(BX), DX +0f4813 CMOVS 0(BX), DX +480f4813 CMOVS 0(BX), DX +3c07 CMPL AL, $0x7 +66833b07 CMPW 0(BX), $0x7 +6639d2 CMPW DX, DX +833b07 CMPL 0(BX), $0x7 +39d2 CMPL DX, DX +48833b07 CMPQ 0(BX), $0x7 +4839d2 CMPQ DX, DX +3813 CMPB 0(BX), DL +663b13 CMPW DX, 0(BX) +483b13 CMPQ DX, 0(BX) +660fc21307 CMPPD $0x7, 0(BX), X2 +0fc21307 CMPPS $0x7, 0(BX), X2 +a6 CMPSB ES:0(DI), DS:0(SI) +f2440fc2da07 CMPSD_XMM $0x7, X2, X11 +f3450fc21b07 CMPSS $0x7, 0(R11), X11 +660fb1d2 CMPXCHGW DX, DX +0fb1d2 CMPXCHGL DX, DX +480fb1d2 CMPXCHGQ DX, DX +0fb0d2 CMPXCHGL DL, DL +660f2f13 COMISD 0(BX), X2 +0f2f13 COMISS 0(BX), X2 +0fa2 CPUID +66f2440f38f1da CRC32 DX, R11 +f2440f38f1da CRC32 DX, R11 +f2440f38f0da CRC32 DL, R11 +f24c0f38f1da CRC32 DX, R11 +f3440fe6da CVTDQ2PD X2, X11 +440f5bda CVTDQ2PS X2, X11 +f2440fe6da CVTPD2DQ X2, X11 +66440f5ada CVTPD2PS X2, X11 +66440f5bda CVTPS2DQ X2, X11 +440f5ada CVTPS2PD X2, X11 +f2440f2dda CVTSD2SIL X2, R11 +f2440f5ada CVTSD2SS X2, X11 +f2440f2ada CVTSI2SDL DX, X11 +f24c0f2ada CVTSI2SDQ DX, X11 +f3440f2ada CVTSI2SSL DX, X11 +f34c0f2ada CVTSI2SSQ DX, X11 +f3440f5ada CVTSS2SD X2, X11 +f3440f2dda CVTSS2SIL X2, R11 +66440fe6da CVTTPD2DQ X2, X11 +f3440f5bda CVTTPS2DQ X2, X11 +f2440f2cda CVTTSD2SIL X2, R11 +f3440f2cda CVTTSS2SIL X2, R11 +ff0b DECL 0(BX) +fe0b DECB 0(BX) +f733 DIVL 0(BX) +f633 DIVB 0(BX) +66440f5e1b DIVPD 0(BX), X11 +440f5e1b DIVPS 0(BX), X11 +f2440f5e1b DIVSD 0(BX), X11 +f3440f5e1b DIVSS 0(BX), X11 +66440f3a411b07 DPPD $0x7, 0(BX), X11 +66440f3a401b07 DPPS $0x7, 0(BX), X11 +66450f3a171b03 EXTRACTPS $0x3, X11, 0(R11) +d8c3 FADD F3, F0 +41df23 FBLD 0(R11) +daca FCMOVE F2, F0 +dbda FCMOVNU F2, F0 +dbf2 FCOMI F2, F0 +dcfa FDIV F0, F2 +d9ea FLDL2E +d9f2 FPTAN +0fae0b FXRSTOR 0(BX) +d9f4 FXTRACT +66450f7c1b HADDPD 0(R11), X11 +f2450f7c1b HADDPS 0(R11), X11 +66440f7d1b HSUBPD 0(BX), X11 +f2440f7d1b HSUBPS 0(BX), X11 +6641f7fb IDIVW R11 +49f7fb IDIVQ R11 +6641f7eb IMULW R11 +49f7eb IMULQ R11 +66410fafd3 IMULW R11, DX +664169d323f1 IMULW $-0xedd, R11, DX +66416bd307 IMULW $0x7, R11, DX +410fafd3 IMULL R11, DX +4169d3674523f1 IMULL $-0xedcba99, R11, DX +416bd307 IMULL $0x7, R11, DX +490fafd3 IMULQ R11, DX +4969d3674523f1 IMULQ $-0xedcba99, R11, DX +496bd307 IMULQ $0x7, R11, DX +6641ffc3 INCW R11 +49ffc3 INCQ R11 +66410f3a211307 INSERTPS $0x7, 0(R11), X2 +cd07 INT $0x7 +7202 JB 0x97c9 +7202 JB 0x97d8 +7202 JB 0x97e8 +66440f021b LAR 0(BX), R11 +440f021b LAR 0(BX), R11 +4c0f021b LAR 0(BX), R11 +0fae13 LDMXCSR 0(BX) +448d1b LEAL 0(BX), R11 +660fb413 LFS 0(BX), DX +480fb413 LFS 0(BX), DX +66440fb51b LGS 0(BX), R11 +4c0fb51b LGS 0(BX), R11 +0f0133 LMSW 0(BX) +660f0313 LSL 0(BX), DX +0f0313 LSL 0(BX), DX +480f0313 LSL 0(BX), DX +660fb213 LSS 0(BX), DX +480fb213 LSS 0(BX), DX +66f30fbd13 LZCNT 0(BX), DX +f30fbd13 LZCNT 0(BX), DX +f3480fbd13 LZCNT 0(BX), DX +660ff7d2 MASKMOVDQU X2, X2 +660f5f13 MAXPD 0(BX), X2 +0f5f13 MAXPS 0(BX), X2 +f20f5f13 MAXSD 0(BX), X2 +f30f5f13 MAXSS 0(BX), X2 +0faef0 MFENCE +66450f5ddb MINPD X11, X11 +450f5ddb MINPS X11, X11 +f2450f5ddb MINSD X11, X11 +f3450f5ddb MINSS X11, X11 +0f23da MOVL DX, DR3 +66418913 MOVW DX, 0(R11) +ba674523f1 MOVL $-0xedcba99, DX +4189d3 MOVL DX, R11 +ba00000080 MOVL $-0x80000000, DX +4889d2 MOVQ DX, DX +8813 MOVB DL, 0(BX) +668b13 MOVW 0(BX), DX +488b13 MOVQ 0(BX), DX +448a1b MOVB 0(BX), R11 +410f21d3 MOVL DR2, R11 +66440f28da MOVAPD X2, X11 +0f28d2 MOVAPS X2, X2 +410f2913 MOVAPS X2, 0(R11) +66440f38f01b MOVBE 0(BX), R11 +440f38f01b MOVBE 0(BX), R11 +4c0f38f01b MOVBE 0(BX), R11 +480f6eda MOVQ DX, M3 +490f7ed3 MOVQ M2, R11 +66490f7ed3 MOVQ X2, R11 +664c0f6eda MOVQ DX, X11 +f2440f12da MOVDDUP X2, X11 +660f6fd2 MOVDQA X2, X2 +66410f7f13 MOVDQA X2, 0(R11) +f3440f6fda MOVDQU X2, X11 +440f12da MOVHLPS X2, X11 +66440f161b MOVHPD 0(BX), X11 +440f161b MOVHPS 0(BX), X11 +66410f1313 MOVLPD X2, 0(R11) +410f1313 MOVLPS X2, 0(R11) +66440f50da MOVMSKPD X2, R11 +66410fe713 MOVNTDQ X2, 0(R11) +410fc313 MOVNTIL DX, 0(R11) +66410f2b13 MOVNTPD X2, 0(R11) +410fe713 MOVNTQ M2, 0(R11) +f3440fd6da MOVQ2DQ M2, X11 +f2440f101b MOVSD_XMM 0(BX), X11 +f30f1613 MOVSHDUP 0(BX), X2 +f30f1213 MOVSLDUP 0(BX), X2 +48a5 MOVSQ DS:0(SI), ES:0(DI) +f3450f10db MOVSS X11, X11 +660fbfd2 MOVSX DX, DX +660fbed2 MOVSX DL, DX +0fbfd2 MOVSX DX, DX +0fbed2 MOVSX DL, DX +480fbfd2 MOVSX DX, DX +480fbed2 MOVSX DL, DX +4863d2 MOVSXD DX, DX +660f10d2 MOVUPD X2, X2 +66410f1113 MOVUPD X2, 0(R11) +440f10da MOVUPS X2, X11 +660fb7d2 MOVZX DX, DX +660fb6d2 MOVZX DL, DX +0fb7d2 MOVZX DX, DX +0fb6d2 MOVZX DL, DX +480fb7d2 MOVZX DX, DX +480fb6d2 MOVZX DL, DX +660f3a42d207 MPSADBW $0x7, X2, X2 +66f7e2 MULW DX +48f7e2 MULQ DX +660f59d2 MULPD X2, X2 +0f59d2 MULPS X2, X2 +f20f59d2 MULSD X2, X2 +f30f59d2 MULSS X2, X2 +66f7da NEGW DX +48f7da NEGQ DX +660f1fc2 NOPW DX +66f7d2 NOTW DX +48f7d2 NOTQ DX +0d674523f1 ORL $-0xedcba99, AX +6683ca07 ORW $0x7, DX +664109d3 ORW DX, R11 +83ca07 ORL $0x7, DX +4109d3 ORL DX, R11 +4883ca07 ORQ $0x7, DX +4909d3 ORQ DX, R11 +410813 ORB DL, 0(R11) +66440b1b ORW 0(BX), R11 +4c0b1b ORQ 0(BX), R11 +660f56d2 ORPD X2, X2 +0f56d2 ORPS X2, X2 +666f OUTSW DS:0(SI), DX +66450f381cdb PABSB X11, X11 +66450f381edb PABSD X11, X11 +66450f381ddb PABSW X11, X11 +0f6bdb PACKSSDW M3, M3 +66450f6bdb PACKSSDW X11, X11 +0f63db PACKSSWB M3, M3 +66450f63db PACKSSWB X11, X11 +66450f382bdb PACKUSDW X11, X11 +0f67db PACKUSWB M3, M3 +66450f67db PACKUSWB X11, X11 +0ffcdb PADDB M3, M3 +66450ffcdb PADDB X11, X11 +0ffedb PADDD M3, M3 +66450ffedb PADDD X11, X11 +66450fd4db PADDQ X11, X11 +0fecdb PADDSB M3, M3 +66450fecdb PADDSB X11, X11 +0feddb PADDSW M3, M3 +66450feddb PADDSW X11, X11 +0fdcdb PADDUSB M3, M3 +66450fdcdb PADDUSB X11, X11 +0fdddb PADDUSW M3, M3 +66450fdddb PADDUSW X11, X11 +0ffddb PADDW M3, M3 +66450ffddb PADDW X11, X11 +66450f3a0fdb07 PALIGNR $0x7, X11, X11 +0fdbdb PAND M3, M3 +66450fdbdb PAND X11, X11 +0fdfdb PANDN M3, M3 +66450fdfdb PANDN X11, X11 +0fe0db PAVGB M3, M3 +66450fe0db PAVGB X11, X11 +0fe3db PAVGW M3, M3 +66450fe3db PAVGW X11, X11 +66450f3810db PBLENDVB X0, X11, X11 +66450f3a0edb07 PBLENDW $0x7, X11, X11 +66450f3a44db07 PCLMULQDQ $0x7, X11, X11 +0f74db PCMPEQB M3, M3 +66450f74db PCMPEQB X11, X11 +0f76db PCMPEQD M3, M3 +66450f76db PCMPEQD X11, X11 +66450f3829db PCMPEQQ X11, X11 +0f75db PCMPEQW M3, M3 +66450f75db PCMPEQW X11, X11 +66450f3a61db07 PCMPESTRI $0x7, X11, X11 +66450f3a60db07 PCMPESTRM $0x7, X11, X11 +0f64db PCMPGTB M3, M3 +66450f64db PCMPGTB X11, X11 +0f66db PCMPGTD M3, M3 +66450f66db PCMPGTD X11, X11 +66450f3837db PCMPGTQ X11, X11 +0f65db PCMPGTW M3, M3 +66450f65db PCMPGTW X11, X11 +66450f3a63db07 PCMPISTRI $0x7, X11, X11 +66450f3a62db07 PCMPISTRM $0x7, X11, X11 +66450f3a14db07 PEXTRB $0x7, X11, R11 +66450f3a16db07 PEXTRD $0x7, X11, R11 +664d0f3a16db07 PEXTRQ $0x7, X11, R11 +66450f3a151b07 PEXTRW $0x7, X11, 0(R11) +0f3802db PHADDD M3, M3 +66450f3802db PHADDD X11, X11 +66450f3803db PHADDSW X11, X11 +66450f3801db PHADDW X11, X11 +66450f3841db PHMINPOSUW X11, X11 +66450f3806db PHSUBD X11, X11 +66450f3807db PHSUBSW X11, X11 +66450f3805db PHSUBW X11, X11 +66450f3a20db07 PINSRB $0x7, R11, X11 +66450f3a22db07 PINSRD $0x7, R11, X11 +664d0f3a22db07 PINSRQ $0x7, R11, X11 +66450fc4db07 PINSRW $0x7, R11, X11 +66450f3804db PMADDUBSW X11, X11 +0ff5db PMADDWD M3, M3 +66450ff5db PMADDWD X11, X11 +66450f383cdb PMAXSB X11, X11 +66450f383ddb PMAXSD X11, X11 +66450feedb PMAXSW X11, X11 +66450fdedb PMAXUB X11, X11 +66450f383fdb PMAXUD X11, X11 +66450f383edb PMAXUW X11, X11 +66450f3838db PMINSB X11, X11 +66450f3839db PMINSD X11, X11 +66450feadb PMINSW X11, X11 +66450fdadb PMINUB X11, X11 +66450f383bdb PMINUD X11, X11 +66450f383adb PMINUW X11, X11 +66450fd7db PMOVMSKB X11, R11 +66450f3821db PMOVSXBD X11, X11 +66450f3822db PMOVSXBQ X11, X11 +66450f3820db PMOVSXBW X11, X11 +66450f3825db PMOVSXDQ X11, X11 +66450f3823db PMOVSXWD X11, X11 +66450f3824db PMOVSXWQ X11, X11 +66450f3831db PMOVZXBD X11, X11 +66450f3832db PMOVZXBQ X11, X11 +66450f3830db PMOVZXBW X11, X11 +66450f3835db PMOVZXDQ X11, X11 +66450f3833db PMOVZXWD X11, X11 +66450f3834db PMOVZXWQ X11, X11 +66450f3828db PMULDQ X11, X11 +66450f380bdb PMULHRSW X11, X11 +0fe4db PMULHUW M3, M3 +66450fe4db PMULHUW X11, X11 +0fe5db PMULHW M3, M3 +66450fe5db PMULHW X11, X11 +66450f3840db PMULLD X11, X11 +0fd5db PMULLW M3, M3 +66450fd5db PMULLW X11, X11 +0ff4db PMULUDQ M3, M3 +66450ff4db PMULUDQ X11, X11 +66418f03 POPW 0(R11) +418f03 POPQ 0(R11) +66f3410fb8d3 POPCNTW R11, DX +f3410fb8d3 POPCNTL R11, DX +f3490fb8d3 POPCNTQ R11, DX +9d POPFQ +0febdb POR M3, M3 +66450febdb POR X11, X11 +410f181b PREFETCHT2 0(R11) +66450ff6db PSADBW X11, X11 +66450f3800db PSHUFB X11, X11 +66410f70d307 PSHUFD $0x7, X11, X2 +66450f70db07 PSHUFD $0x7, X11, X11 +f3450f70db07 PSHUFHW $0x7, X11, X11 +f2450f70db07 PSHUFLW $0x7, X11, X11 +0f70db07 PSHUFW $0x7, M3, M3 +66450f3808db PSIGNB X11, X11 +66450f380adb PSIGND X11, X11 +66450f3809db PSIGNW X11, X11 +0ff2db PSLLD M3, M3 +66450ff21b PSLLD 0(R11), X11 +410ff313 PSLLQ 0(R11), M2 +0f73f307 PSLLQ $0x7, M3 +66450ff3db PSLLQ X11, X11 +410ff11b PSLLW 0(R11), M3 +66410ff1d3 PSLLW X11, X2 +410fe213 PSRAD 0(R11), M2 +0f72e307 PSRAD $0x7, M3 +66450fe2db PSRAD X11, X11 +410fe11b PSRAW 0(R11), M3 +66410fe1d3 PSRAW X11, X2 +410fd213 PSRLD 0(R11), M2 +0f72d307 PSRLD $0x7, M3 +66450fd2db PSRLD X11, X11 +0fd3d3 PSRLQ M3, M2 +66410fd313 PSRLQ 0(R11), X2 +66410f73d307 PSRLQ $0x7, X11 +0fd1db PSRLW M3, M3 +66450fd11b PSRLW 0(R11), X11 +66410ff8d3 PSUBB X11, X2 +66410ffad3 PSUBD X11, X2 +66410ffbd3 PSUBQ X11, X2 +66410fe8d3 PSUBSB X11, X2 +66410fe9d3 PSUBSW X11, X2 +66410fd8d3 PSUBUSB X11, X2 +66410fd9d3 PSUBUSW X11, X2 +66410ff9d3 PSUBW X11, X2 +66410f3817d3 PTEST X11, X2 +0f68d3 PUNPCKHBW M3, M2 +66410f68d3 PUNPCKHBW X11, X2 +0f6ad3 PUNPCKHDQ M3, M2 +66410f6ad3 PUNPCKHDQ X11, X2 +66410f6dd3 PUNPCKHQDQ X11, X2 +0f69d3 PUNPCKHWD M3, M2 +66410f69d3 PUNPCKHWD X11, X2 +0f60d3 PUNPCKLBW M3, M2 +66410f60d3 PUNPCKLBW X11, X2 +0f62d3 PUNPCKLDQ M3, M2 +66410f62d3 PUNPCKLDQ X11, X2 +66410f6cd3 PUNPCKLQDQ X11, X2 +0f61d3 PUNPCKLWD M3, M2 +66410f61d3 PUNPCKLWD X11, X2 +58 POPQ AX +6658 POPW AX +58 POPQ AX +669d POPF +410fef1b PXOR 0(R11), M3 +66450fef1b PXOR 0(R11), X11 +6641d313 RCLW CL, 0(R11) +41d113 RCLL $0x1, 0(R11) +41c11307 RCLL $0x7, 0(R11) +49d313 RCLQ CL, 0(R11) +41d013 RCLB $0x1, 0(R11) +41c01307 RCLB $0x7, 0(R11) +450f531b RCPPS 0(R11), X11 +f3450f531b RCPSS 0(R11), X11 +6641d31b RCRW CL, 0(R11) +41d11b RCRL $0x1, 0(R11) +41c11b07 RCRL $0x7, 0(R11) +49d31b RCRQ CL, 0(R11) +41d01b RCRB $0x1, 0(R11) +41c01b07 RCRB $0x7, 0(R11) +f3490faec3 RDFSBASE R11 +410fc7f3 RDRAND R11 +7203 JB 0xc332 +6641d3c3 ROLW CL, R11 +41d1c3 ROLL $0x1, R11 +41c1c307 ROLL $0x7, R11 +49d3c3 ROLQ CL, R11 +41d0c3 ROLL $0x1, R11 +41c0c307 ROLL $0x7, R11 +6641d3cb RORW CL, R11 +41d1cb RORL $0x1, R11 +41c1cb07 RORL $0x7, R11 +49d3cb RORQ CL, R11 +41d0cb RORL $0x1, R11 +41c0cb07 RORL $0x7, R11 +66450f3a09db07 ROUNDPD $0x7, X11, X11 +66450f3a08db07 ROUNDPS $0x7, X11, X11 +66450f3a0bdb07 ROUNDSD $0x7, X11, X11 +66450f3a0adb07 ROUNDSS $0x7, X11, X11 +440f52da RSQRTPS X2, X11 +f3440f52da RSQRTSS X2, X11 +6641d33b SARW CL, 0(R11) +41d13b SARL $0x1, 0(R11) +41c13b07 SARL $0x7, 0(R11) +49d33b SARQ CL, 0(R11) +41d03b SARB $0x1, 0(R11) +41c03b07 SARB $0x7, 0(R11) +6681da23f1 SBBW $-0xedd, DX +66411913 SBBW DX, 0(R11) +81da674523f1 SBBL $-0xedcba99, DX +411913 SBBL DX, 0(R11) +4881da674523f1 SBBQ $-0xedcba99, DX +491913 SBBQ DX, 0(R11) +80da07 SBBL $0x7, DL +4118d3 SBBL DL, R11 +441b1b SBBL 0(BX), R11 +441a1b SBBB 0(BX), R11 +0f97c2 SETA DL +0f92c2 SETB DL +0f94c2 SETE DL +0f9dc2 SETGE DL +0f9ec2 SETLE DL +0f91c2 SETNO DL +0f99c2 SETNS DL +0f9ac2 SETP DL +410f0103 SGDT 0(R11) +6641d3e3 SHLW CL, R11 +41d1e3 SHLL $0x1, R11 +41c1e307 SHLL $0x7, R11 +49d3e3 SHLQ CL, R11 +41d0e3 SHLL $0x1, R11 +41c0e307 SHLL $0x7, R11 +66450fa5db SHLDW CL, R11, R11 +66450fa4db07 SHLDW $0x7, R11, R11 +450fa5db SHLDL CL, R11, R11 +450fa4db07 SHLDL $0x7, R11, R11 +4d0fa5db SHLDQ CL, R11, R11 +4d0fa4db07 SHLDQ $0x7, R11, R11 +6641d3eb SHRW CL, R11 +41d1eb SHRL $0x1, R11 +41c1eb07 SHRL $0x7, R11 +49d3eb SHRQ CL, R11 +41d0eb SHRL $0x1, R11 +41c0eb07 SHRL $0x7, R11 +66450faddb SHRDW CL, R11, R11 +66450facdb07 SHRDW $0x7, R11, R11 +450faddb SHRDL CL, R11, R11 +450facdb07 SHRDL $0x7, R11, R11 +4d0faddb SHRDQ CL, R11, R11 +4d0facdb07 SHRDQ $0x7, R11, R11 +66450fc6db07 SHUFPD $0x7, X11, X11 +450fc6db07 SHUFPS $0x7, X11, X11 +410f0003 SLDT 0(R11) +66410f0123 SMSW 0(R11) +490f0123 SMSW 0(R11) +66450f511b SQRTPD 0(R11), X11 +450f511b SQRTPS 0(R11), X11 +f2450f511b SQRTSD 0(R11), X11 +f3450f511b SQRTSS 0(R11), X11 +aa STOSB AL, ES:0(DI) +0f000b STR 0(BX) +2c07 SUBL $0x7, AL +66832b07 SUBW $0x7, 0(BX) +6629d2 SUBW DX, DX +832b07 SUBL $0x7, 0(BX) +29d2 SUBL DX, DX +48832b07 SUBQ $0x7, 0(BX) +4829d2 SUBQ DX, DX +2813 SUBB DL, 0(BX) +662b13 SUBW 0(BX), DX +482b13 SUBQ 0(BX), DX +660f5c13 SUBPD 0(BX), X2 +0f5c13 SUBPS 0(BX), X2 +f20f5c13 SUBSD 0(BX), X2 +f30f5c13 SUBSS 0(BX), X2 +0f01f8 SWAPGS +66a923f1 TESTW $-0xedd, AX +6644851b TESTW R11, 0(BX) +41f703674523f1 TESTL $-0xedcba99, 0(R11) +4485da TESTL R11, DX +4c851b TESTQ R11, 0(BX) +41f60307 TESTB $0x7, 0(R11) +4484da TESTL R11, DL +66f3450fbc1b TZCNT 0(R11), R11 +f3450fbc1b TZCNT 0(R11), R11 +f34d0fbc1b TZCNT 0(R11), R11 +66450f2e1b UCOMISD 0(R11), X11 +450f2e1b UCOMISS 0(R11), X11 +410f1513 UNPCKHPS 0(R11), X2 +66410f1413 UNPCKLPD 0(R11), X2 +410f1413 UNPCKLPS 0(R11), X2 +c4c1315813 VADDPD 0(R11), X9, X2 +c4c1055813 VADDPD 0(R11), Y15, Y2 +c4c1305813 VADDPS 0(R11), X9, X2 +c4c1045813 VADDPS 0(R11), Y15, Y2 +c4c1335813 VADDSD 0(R11), X9, X2 +c4c1325813 VADDSS 0(R11), X9, X2 +c4c131d013 VADDSUBPD 0(R11), X9, X2 +c4c105d013 VADDSUBPD 0(R11), Y15, Y2 +c4c133d013 VADDSUBPS 0(R11), X9, X2 +c4c107d013 VADDSUBPS 0(R11), Y15, Y2 +c4c231de13 VAESDEC 0(R11), X9, X2 +c4c231df13 VAESDECLAST 0(R11), X9, X2 +c4c231dc13 VAESENC 0(R11), X9, X2 +c4c231dd13 VAESENCLAST 0(R11), X9, X2 +c4c279db13 VAESIMC 0(R11), X2 +c4c379df1307 VAESKEYGENASSIST $0x7, 0(R11), X2 +c4c1315513 VANDNPD 0(R11), X9, X2 +c4c1055513 VANDNPD 0(R11), Y15, Y2 +c4c1305513 VANDNPS 0(R11), X9, X2 +c4c1045513 VANDNPS 0(R11), Y15, Y2 +c4c1315413 VANDPD 0(R11), X9, X2 +c4c1055413 VANDPD 0(R11), Y15, Y2 +c4c1305413 VANDPS 0(R11), X9, X2 +c4c1045413 VANDPS 0(R11), Y15, Y2 +c4c3310d1307 VBLENDPD $0x7, 0(R11), X9, X2 +c4c3050d1307 VBLENDPD $0x7, 0(R11), Y15, Y2 +c4c3310c1307 VBLENDPS $0x7, 0(R11), X9, X2 +c4c3050c1307 VBLENDPS $0x7, 0(R11), Y15, Y2 +c4c3314b13c0 VBLENDVPD X12, 0(R11), X9, X2 +c4c3054b13d0 VBLENDVPD Y13, 0(R11), Y15, Y2 +c4c3314a13c0 VBLENDVPS X12, 0(R11), X9, X2 +c4c3054a13d0 VBLENDVPS Y13, 0(R11), Y15, Y2 +c4c27d1a13 VBROADCASTF128 0(R11), Y2 +c4c27d1913 VBROADCASTSD 0(R11), Y2 +c4c2791813 VBROADCASTSS 0(R11), X2 +c4c27d1813 VBROADCASTSS 0(R11), Y2 +c4c131c21307 VCMPPD $0x7, 0(R11), X9, X2 +c4c105c21307 VCMPPD $0x7, 0(R11), Y15, Y2 +c4c130c21307 VCMPPS $0x7, 0(R11), X9, X2 +c4c104c21307 VCMPPS $0x7, 0(R11), Y15, Y2 +c4c133c21307 VCMPSD $0x7, 0(R11), X9, X2 +c4c132c21307 VCMPSS $0x7, 0(R11), X9, X2 +c4c1792f13 VCOMISD 0(R11), X2 +c4c1782f13 VCOMISS 0(R11), X2 +c4c17ae613 VCVTDQ2PD 0(R11), X2 +c4c17ee613 VCVTDQ2PD 0(R11), Y2 +c4c1785b13 VCVTDQ2PS 0(R11), X2 +c4c17c5b13 VCVTDQ2PS 0(R11), Y2 +c4c17be613 VCVTPD2DQX 0(R11), X2 +c4c17fe613 VCVTPD2DQY 0(R11), X2 +c4c1795a13 VCVTPD2PSX 0(R11), X2 +c4c17d5a13 VCVTPD2PSY 0(R11), X2 +c4c2791313 VCVTPH2PS 0(R11), X2 +c4c27d1313 VCVTPH2PS 0(R11), Y2 +c4c1795b13 VCVTPS2DQ 0(R11), X2 +c4c17d5b13 VCVTPS2DQ 0(R11), Y2 +c4c1785a13 VCVTPS2PD 0(R11), X2 +c4c17c5a13 VCVTPS2PD 0(R11), Y2 +c4637d1d1b07 VCVTPS2PH $0x7, Y11, 0(BX) +c463791d1b07 VCVTPS2PH $0x7, X11, 0(BX) +c4c17b2d13 VCVTSD2SI 0(R11), DX +c4c1fb2d13 VCVTSD2SIQ 0(R11), DX +c4c1335a13 VCVTSD2SS 0(R11), X9, X2 +c4c1332a13 VCVTSI2SDL 0(R11), X9, X2 +c4c1b32a13 VCVTSI2SDQ 0(R11), X9, X2 +c4c1322a13 VCVTSI2SSL 0(R11), X9, X2 +c4c1b22a13 VCVTSI2SSQ 0(R11), X9, X2 +c4c1325a13 VCVTSS2SD 0(R11), X9, X2 +c4c17a2d13 VCVTSS2SI 0(R11), DX +c4c1fa2d13 VCVTSS2SIQ 0(R11), DX +c4c179e613 VCVTTPD2DQX 0(R11), X2 +c4c17de613 VCVTTPD2DQY 0(R11), X2 +c4c17a5b13 VCVTTPS2DQ 0(R11), X2 +c4c17e5b13 VCVTTPS2DQ 0(R11), Y2 +c4c17b2c13 VCVTTSD2SI 0(R11), DX +c4c1fb2c13 VCVTTSD2SIQ 0(R11), DX +c4c17a2c13 VCVTTSS2SI 0(R11), DX +c4c1fa2c13 VCVTTSS2SIQ 0(R11), DX +c4c1315e13 VDIVPD 0(R11), X9, X2 +c4c1055e13 VDIVPD 0(R11), Y15, Y2 +c4c1305e13 VDIVPS 0(R11), X9, X2 +c4c1045e13 VDIVPS 0(R11), Y15, Y2 +c4c1335e13 VDIVSD 0(R11), X9, X2 +c4c1325e13 VDIVSS 0(R11), X9, X2 +c4c331411307 VDPPD $0x7, 0(R11), X9, X2 +c4c331401307 VDPPS $0x7, 0(R11), X9, X2 +c4c305401307 VDPPS $0x7, 0(R11), Y15, Y2 +410f0023 VERR 0(R11) +c4637d191b07 VEXTRACTF128 $0x7, Y11, 0(BX) +c4637d391b07 VEXTRACTI128 $0x7, Y11, 0(BX) +c46379171b07 VEXTRACTPS $0x7, X11, 0(BX) +c4c2b19813 VFMADD132PD 0(R11), X9, X2 +c4c2859813 VFMADD132PD 0(R11), Y15, Y2 +c4c2319813 VFMADD132PS 0(R11), X9, X2 +c4c2059813 VFMADD132PS 0(R11), Y15, Y2 +c4c2b19913 VFMADD132SD 0(R11), X9, X2 +c4c2319913 VFMADD132SS 0(R11), X9, X2 +c4c2b1a813 VFMADD213PD 0(R11), X9, X2 +c4c285a813 VFMADD213PD 0(R11), Y15, Y2 +c4c231a813 VFMADD213PS 0(R11), X9, X2 +c4c205a813 VFMADD213PS 0(R11), Y15, Y2 +c4c2b1a913 VFMADD213SD 0(R11), X9, X2 +c4c231a913 VFMADD213SS 0(R11), X9, X2 +c4c2b1b813 VFMADD231PD 0(R11), X9, X2 +c4c285b813 VFMADD231PD 0(R11), Y15, Y2 +c4c231b813 VFMADD231PS 0(R11), X9, X2 +c4c205b813 VFMADD231PS 0(R11), Y15, Y2 +c4c2b1b913 VFMADD231SD 0(R11), X9, X2 +c4c231b913 VFMADD231SS 0(R11), X9, X2 +c4c2b19613 VFMADDSUB132PD 0(R11), X9, X2 +c4c2859613 VFMADDSUB132PD 0(R11), Y15, Y2 +c4c2319613 VFMADDSUB132PS 0(R11), X9, X2 +c4c2059613 VFMADDSUB132PS 0(R11), Y15, Y2 +c4c2b1a613 VFMADDSUB213PD 0(R11), X9, X2 +c4c285a613 VFMADDSUB213PD 0(R11), Y15, Y2 +c4c231a613 VFMADDSUB213PS 0(R11), X9, X2 +c4c205a613 VFMADDSUB213PS 0(R11), Y15, Y2 +c4c2b1b613 VFMADDSUB231PD 0(R11), X9, X2 +c4c285b613 VFMADDSUB231PD 0(R11), Y15, Y2 +c4c231b613 VFMADDSUB231PS 0(R11), X9, X2 +c4c205b613 VFMADDSUB231PS 0(R11), Y15, Y2 +c4c2b19a13 VFMSUB132PD 0(R11), X9, X2 +c4c2859a13 VFMSUB132PD 0(R11), Y15, Y2 +c4c2319a13 VFMSUB132PS 0(R11), X9, X2 +c4c2059a13 VFMSUB132PS 0(R11), Y15, Y2 +c4c2b19b13 VFMSUB132SD 0(R11), X9, X2 +c4c2319b13 VFMSUB132SS 0(R11), X9, X2 +c4c2b1aa13 VFMSUB213PD 0(R11), X9, X2 +c4c285aa13 VFMSUB213PD 0(R11), Y15, Y2 +c4c231aa13 VFMSUB213PS 0(R11), X9, X2 +c4c205aa13 VFMSUB213PS 0(R11), Y15, Y2 +c4c2b1ab13 VFMSUB213SD 0(R11), X9, X2 +c4c231ab13 VFMSUB213SS 0(R11), X9, X2 +c4c2b1ba13 VFMSUB231PD 0(R11), X9, X2 +c4c285ba13 VFMSUB231PD 0(R11), Y15, Y2 +c4c231ba13 VFMSUB231PS 0(R11), X9, X2 +c4c205ba13 VFMSUB231PS 0(R11), Y15, Y2 +c4c2b1bb13 VFMSUB231SD 0(R11), X9, X2 +c4c231bb13 VFMSUB231SS 0(R11), X9, X2 +c4c2b19713 VFMSUBADD132PD 0(R11), X9, X2 +c4c2859713 VFMSUBADD132PD 0(R11), Y15, Y2 +c4c2319713 VFMSUBADD132PS 0(R11), X9, X2 +c4c2059713 VFMSUBADD132PS 0(R11), Y15, Y2 +c4c2b1a713 VFMSUBADD213PD 0(R11), X9, X2 +c4c285a713 VFMSUBADD213PD 0(R11), Y15, Y2 +c4c231a713 VFMSUBADD213PS 0(R11), X9, X2 +c4c205a713 VFMSUBADD213PS 0(R11), Y15, Y2 +c4c2b1b713 VFMSUBADD231PD 0(R11), X9, X2 +c4c285b713 VFMSUBADD231PD 0(R11), Y15, Y2 +c4c231b713 VFMSUBADD231PS 0(R11), X9, X2 +c4c205b713 VFMSUBADD231PS 0(R11), Y15, Y2 +c4c2b19c13 VFNMADD132PD 0(R11), X9, X2 +c4c2859c13 VFNMADD132PD 0(R11), Y15, Y2 +c4c2319c13 VFNMADD132PS 0(R11), X9, X2 +c4c2059c13 VFNMADD132PS 0(R11), Y15, Y2 +c4c2b19d13 VFNMADD132SD 0(R11), X9, X2 +c4c2319d13 VFNMADD132SS 0(R11), X9, X2 +c4c2b1ac13 VFNMADD213PD 0(R11), X9, X2 +c4c285ac13 VFNMADD213PD 0(R11), Y15, Y2 +c4c231ac13 VFNMADD213PS 0(R11), X9, X2 +c4c205ac13 VFNMADD213PS 0(R11), Y15, Y2 +c4c2b1ad13 VFNMADD213SD 0(R11), X9, X2 +c4c231ad13 VFNMADD213SS 0(R11), X9, X2 +c4c2b1bc13 VFNMADD231PD 0(R11), X9, X2 +c4c285bc13 VFNMADD231PD 0(R11), Y15, Y2 +c4c231bc13 VFNMADD231PS 0(R11), X9, X2 +c4c205bc13 VFNMADD231PS 0(R11), Y15, Y2 +c4c2b1bd13 VFNMADD231SD 0(R11), X9, X2 +c4c231bd13 VFNMADD231SS 0(R11), X9, X2 +c4c2b19e13 VFNMSUB132PD 0(R11), X9, X2 +c4c2859e13 VFNMSUB132PD 0(R11), Y15, Y2 +c4c2319e13 VFNMSUB132PS 0(R11), X9, X2 +c4c2059e13 VFNMSUB132PS 0(R11), Y15, Y2 +c4c2b19f13 VFNMSUB132SD 0(R11), X9, X2 +c4c2319f13 VFNMSUB132SS 0(R11), X9, X2 +c4c2b1ae13 VFNMSUB213PD 0(R11), X9, X2 +c4c285ae13 VFNMSUB213PD 0(R11), Y15, Y2 +c4c231ae13 VFNMSUB213PS 0(R11), X9, X2 +c4c205ae13 VFNMSUB213PS 0(R11), Y15, Y2 +c4c2b1af13 VFNMSUB213SD 0(R11), X9, X2 +c4c231af13 VFNMSUB213SS 0(R11), X9, X2 +c4c2b1be13 VFNMSUB231PD 0(R11), X9, X2 +c4c285be13 VFNMSUB231PD 0(R11), Y15, Y2 +c4c231be13 VFNMSUB231PS 0(R11), X9, X2 +c4c205be13 VFNMSUB231PS 0(R11), Y15, Y2 +c4c2b1bf13 VFNMSUB231SD 0(R11), X9, X2 +c4c231bf13 VFNMSUB231SS 0(R11), X9, X2 +c4c1317c13 VHADDPD 0(R11), X9, X2 +c4c1057c13 VHADDPD 0(R11), Y15, Y2 +c4c1337c13 VHADDPS 0(R11), X9, X2 +c4c1077c13 VHADDPS 0(R11), Y15, Y2 +c4c1317d13 VHSUBPD 0(R11), X9, X2 +c4c1057d13 VHSUBPD 0(R11), Y15, Y2 +c4c1337d13 VHSUBPS 0(R11), X9, X2 +c4c1077d13 VHSUBPS 0(R11), Y15, Y2 +c4c305181307 VINSERTF128 $0x7, 0(R11), Y15, Y2 +c4c305381307 VINSERTI128 $0x7, 0(R11), Y15, Y2 +c4c331211307 VINSERTPS $0x7, 0(R11), X9, X2 +c4c17bf013 VLDDQU 0(R11), X2 +c4c178ae13 VLDMXCSR 0(R11) +c442312f1b VMASKMOVPD X11, X9, 0(R11) +c442312d1b VMASKMOVPD 0(R11), X9, X11 +c442312e1b VMASKMOVPS X11, X9, 0(R11) +c442312c1b VMASKMOVPS 0(R11), X9, X11 +c4c1315fd3 VMAXPD X11, X9, X2 +c4c1055fd3 VMAXPD Y11, Y15, Y2 +c4c1305fd3 VMAXPS X11, X9, X2 +c4c1045fd3 VMAXPS Y11, Y15, Y2 +c4c1335fd3 VMAXSD X11, X9, X2 +c4c1325fd3 VMAXSS X11, X9, X2 +c4c1315dd3 VMINPD X11, X9, X2 +c4c1055dd3 VMINPD Y11, Y15, Y2 +c4c1305dd3 VMINPS X11, X9, X2 +c4c1045dd3 VMINPS Y11, Y15, Y2 +c4c1335dd3 VMINSD X11, X9, X2 +c4c1325dd3 VMINSS X11, X9, X2 +c57929da VMOVAPD X11, X2 +c44179291b VMOVAPD X11, 0(R11) +c4417d29db VMOVAPD Y11, Y11 +c57829da VMOVAPS X11, X2 +c44178291b VMOVAPS X11, 0(R11) +c4417c29db VMOVAPS Y11, Y11 +c441797e1b VMOVD X11, 0(R11) +c4c1796ed3 VMOVD R11, X2 +c4c17b12d3 VMOVDDUP X11, X2 +c4c17f12d3 VMOVDDUP Y11, Y2 +c5797fda VMOVDQA X11, X2 +c441797f1b VMOVDQA X11, 0(R11) +c4417d7fdb VMOVDQA Y11, Y11 +c57a7fda VMOVDQU X11, X2 +c4417a7f1b VMOVDQU X11, 0(R11) +c4417e7fdb VMOVDQU Y11, Y11 +c4413012db VMOVHLPS X11, X9, X11 +c44131161b VMOVHPD 0(R11), X9, X11 +c44130161b VMOVHPS 0(R11), X9, X11 +c44179131b VMOVLPD X11, 0(R11) +c44178131b VMOVLPS X11, 0(R11) +c4417950db VMOVMSKPD X11, R11 +c4417850db VMOVMSKPS X11, R11 +c44179e71b VMOVNTDQ X11, 0(R11) +c442792a1b VMOVNTDQA 0(R11), X11 +c441792b1b VMOVNTPD X11, 0(R11) +c441782b1b VMOVNTPS X11, 0(R11) +c441f97e1b VMOVQ X11, 0(R11) +c441f96e1b VMOVQ 0(R11), X11 +c44179d6db VMOVQ X11, X11 +c4417b101b VMOVSD 0(R11), X11 +c4c17a16d3 VMOVSHDUP X11, X2 +c4c17e16d3 VMOVSHDUP Y11, Y2 +c4c17a12d3 VMOVSLDUP X11, X2 +c4c17e12d3 VMOVSLDUP Y11, Y2 +c4417a111b VMOVSS X11, 0(R11) +c4413211db VMOVSS X11, X9, X11 +c4417911db VMOVUPD X11, X11 +c57d11da VMOVUPD Y11, Y2 +c4417d111b VMOVUPD Y11, 0(R11) +c4417811db VMOVUPS X11, X11 +c57c11da VMOVUPS Y11, Y2 +c4417c111b VMOVUPS Y11, 0(R11) +c4433142db07 VMPSADBW $0x7, X11, X9, X11 +c4430542db07 VMPSADBW $0x7, Y11, Y15, Y11 +c4413159db VMULPD X11, X9, X11 +c4410559db VMULPD Y11, Y15, Y11 +c4413059db VMULPS X11, X9, X11 +c4410459db VMULPS Y11, Y15, Y11 +c4413359db VMULSD X11, X9, X11 +c4413259db VMULSS X11, X9, X11 +c4413156db VORPD X11, X9, X11 +c4410556db VORPD Y11, Y15, Y11 +c4413056db VORPS X11, X9, X11 +c4410456db VORPS Y11, Y15, Y11 +c442791cdb VPABSB X11, X11 +c4427d1cdb VPABSB Y11, Y11 +c442791edb VPABSD X11, X11 +c4427d1edb VPABSD Y11, Y11 +c442791ddb VPABSW X11, X11 +c4427d1ddb VPABSW Y11, Y11 +c441316bdb VPACKSSDW X11, X9, X11 +c441056bdb VPACKSSDW Y11, Y15, Y11 +c4413163db VPACKSSWB X11, X9, X11 +c4410563db VPACKSSWB Y11, Y15, Y11 +c442312bdb VPACKUSDW X11, X9, X11 +c442052bdb VPACKUSDW Y11, Y15, Y11 +c4413167db VPACKUSWB X11, X9, X11 +c4410567db VPACKUSWB Y11, Y15, Y11 +c44131fcdb VPADDB X11, X9, X11 +c44105fcdb VPADDB Y11, Y15, Y11 +c44131fedb VPADDD X11, X9, X11 +c44105fedb VPADDD Y11, Y15, Y11 +c44131d4db VPADDQ X11, X9, X11 +c44105d4db VPADDQ Y11, Y15, Y11 +c44131ecdb VPADDSB X11, X9, X11 +c44105ecdb VPADDSB Y11, Y15, Y11 +c44131eddb VPADDSW X11, X9, X11 +c44105eddb VPADDSW Y11, Y15, Y11 +c44131dcdb VPADDUSB X11, X9, X11 +c44105dcdb VPADDUSB Y11, Y15, Y11 +c44131dddb VPADDUSW X11, X9, X11 +c44105dddb VPADDUSW Y11, Y15, Y11 +c44131fddb VPADDW X11, X9, X11 +c44105fddb VPADDW Y11, Y15, Y11 +c443310fdb07 VPALIGNR $0x7, X11, X9, X11 +c443050fdb07 VPALIGNR $0x7, Y11, Y15, Y11 +c44131dbdb VPAND X11, X9, X11 +c44105dbdb VPAND Y11, Y15, Y11 +c44131dfdb VPANDN X11, X9, X11 +c44105dfdb VPANDN Y11, Y15, Y11 +c44131e0db VPAVGB X11, X9, X11 +c44105e0db VPAVGB Y11, Y15, Y11 +c44131e3db VPAVGW X11, X9, X11 +c44105e3db VPAVGW Y11, Y15, Y11 +c4433102db07 VPBLENDD $0x7, X11, X9, X11 +c4430502db07 VPBLENDD $0x7, Y11, Y15, Y11 +c443314cdbc0 VPBLENDVB X12, X11, X9, X11 +c443054cdbd0 VPBLENDVB Y13, Y11, Y15, Y11 +c443310edb07 VPBLENDW $0x7, X11, X9, X11 +c443050edb07 VPBLENDW $0x7, Y11, Y15, Y11 +c4427978db VPBROADCASTB X11, X11 +c4427d78db VPBROADCASTB X11, Y11 +c4427958db VPBROADCASTD X11, X11 +c4427d58db VPBROADCASTD X11, Y11 +c4427959db VPBROADCASTQ X11, X11 +c4427d59db VPBROADCASTQ X11, Y11 +c4427979db VPBROADCASTW X11, X11 +c4427d79db VPBROADCASTW X11, Y11 +c4433144db07 VPCLMULQDQ $0x7, X11, X9, X11 +c4413174db VPCMPEQB X11, X9, X11 +c4410574db VPCMPEQB Y11, Y15, Y11 +c4413176db VPCMPEQD X11, X9, X11 +c4410576db VPCMPEQD Y11, Y15, Y11 +c4423129db VPCMPEQQ X11, X9, X11 +c4420529db VPCMPEQQ Y11, Y15, Y11 +c4413175db VPCMPEQW X11, X9, X11 +c4410575db VPCMPEQW Y11, Y15, Y11 +c4437961db07 VPCMPESTRI $0x7, X11, X11 +c4437960db07 VPCMPESTRM $0x7, X11, X11 +c4413164db VPCMPGTB X11, X9, X11 +c4410564db VPCMPGTB Y11, Y15, Y11 +c4413166db VPCMPGTD X11, X9, X11 +c4410566db VPCMPGTD Y11, Y15, Y11 +c4423137db VPCMPGTQ X11, X9, X11 +c4420537db VPCMPGTQ Y11, Y15, Y11 +c4413165db VPCMPGTW X11, X9, X11 +c4410565db VPCMPGTW Y11, Y15, Y11 +c4437963db07 VPCMPISTRI $0x7, X11, X11 +c4437962db07 VPCMPISTRM $0x7, X11, X11 +c4430506db07 VPERM2F128 $0x7, Y11, Y15, Y11 +c4430546db07 VPERM2I128 $0x7, Y11, Y15, Y11 +c4420536db VPERMD Y11, Y15, Y11 +c4437905db07 VPERMILPD $0x7, X11, X11 +c442310ddb VPERMILPD X11, X9, X11 +c4437d05db07 VPERMILPD $0x7, Y11, Y11 +c442050ddb VPERMILPD Y11, Y15, Y11 +c4437904db07 VPERMILPS $0x7, X11, X11 +c442310cdb VPERMILPS X11, X9, X11 +c4437d04db07 VPERMILPS $0x7, Y11, Y11 +c442050cdb VPERMILPS Y11, Y15, Y11 +c443fd01db07 VPERMPD $0x7, Y11, Y11 +c4420516db VPERMPS Y11, Y15, Y11 +c443fd00db07 VPERMQ $0x7, Y11, Y11 +c4437914db07 VPEXTRB $0x7, X11, R11 +c4437916db07 VPEXTRD $0x7, X11, R11 +c443f916db07 VPEXTRQ $0x7, X11, R11 +c44379151b07 VPEXTRW $0x7, X11, 0(R11) +c4423102db VPHADDD X11, X9, X11 +c4420502db VPHADDD Y11, Y15, Y11 +c4423103db VPHADDSW X11, X9, X11 +c4420503db VPHADDSW Y11, Y15, Y11 +c4423101db VPHADDW X11, X9, X11 +c4420501db VPHADDW Y11, Y15, Y11 +c4427941db VPHMINPOSUW X11, X11 +c4423106db VPHSUBD X11, X9, X11 +c4420506db VPHSUBD Y11, Y15, Y11 +c4423107db VPHSUBSW X11, X9, X11 +c4420507db VPHSUBSW Y11, Y15, Y11 +c4423105db VPHSUBW X11, X9, X11 +c4420505db VPHSUBW Y11, Y15, Y11 +c4433120db07 VPINSRB $0x7, R11, X9, X11 +c4433122db07 VPINSRD $0x7, R11, X9, X11 +c443b122db07 VPINSRQ $0x7, R11, X9, X11 +c44131c4db07 VPINSRW $0x7, R11, X9, X11 +c4423104db VPMADDUBSW X11, X9, X11 +c4420504db VPMADDUBSW Y11, Y15, Y11 +c44131f5db VPMADDWD X11, X9, X11 +c44105f5db VPMADDWD Y11, Y15, Y11 +c442058e1b VPMASKMOVD Y11, Y15, 0(R11) +c442058c1b VPMASKMOVD 0(R11), Y15, Y11 +c442858e1b VPMASKMOVQ Y11, Y15, 0(R11) +c442858c1b VPMASKMOVQ 0(R11), Y15, Y11 +c442313cdb VPMAXSB X11, X9, X11 +c442053cdb VPMAXSB Y11, Y15, Y11 +c442313ddb VPMAXSD X11, X9, X11 +c442053ddb VPMAXSD Y11, Y15, Y11 +c44131eedb VPMAXSW X11, X9, X11 +c44105eedb VPMAXSW Y11, Y15, Y11 +c44131dedb VPMAXUB X11, X9, X11 +c44105dedb VPMAXUB Y11, Y15, Y11 +c442313fdb VPMAXUD X11, X9, X11 +c442053fdb VPMAXUD Y11, Y15, Y11 +c442313edb VPMAXUW X11, X9, X11 +c442053edb VPMAXUW Y11, Y15, Y11 +c4423138db VPMINSB X11, X9, X11 +c4420538db VPMINSB Y11, Y15, Y11 +c4423139db VPMINSD X11, X9, X11 +c4420539db VPMINSD Y11, Y15, Y11 +c44131eadb VPMINSW X11, X9, X11 +c44105eadb VPMINSW Y11, Y15, Y11 +c44131dadb VPMINUB X11, X9, X11 +c44105dadb VPMINUB Y11, Y15, Y11 +c442313bdb VPMINUD X11, X9, X11 +c442053bdb VPMINUD Y11, Y15, Y11 +c442313adb VPMINUW X11, X9, X11 +c442053adb VPMINUW Y11, Y15, Y11 +c4417dd7db VPMOVMSKB Y11, R11 +c4427921db VPMOVSXBD X11, X11 +c4427d21db VPMOVSXBD X11, Y11 +c4427922db VPMOVSXBQ X11, X11 +c4427d22db VPMOVSXBQ X11, Y11 +c4427920db VPMOVSXBW X11, X11 +c4427d20db VPMOVSXBW X11, Y11 +c4427925db VPMOVSXDQ X11, X11 +c4427d25db VPMOVSXDQ X11, Y11 +c4427923db VPMOVSXWD X11, X11 +c4427d23db VPMOVSXWD X11, Y11 +c4427924db VPMOVSXWQ X11, X11 +c4427d24db VPMOVSXWQ X11, Y11 +c4427931db VPMOVZXBD X11, X11 +c4427d31db VPMOVZXBD X11, Y11 +c4427932db VPMOVZXBQ X11, X11 +c4427d32db VPMOVZXBQ X11, Y11 +c4427930db VPMOVZXBW X11, X11 +c4427d30db VPMOVZXBW X11, Y11 +c4427935db VPMOVZXDQ X11, X11 +c4427d35db VPMOVZXDQ X11, Y11 +c4427933db VPMOVZXWD X11, X11 +c4427d33db VPMOVZXWD X11, Y11 +c4427934db VPMOVZXWQ X11, X11 +c4427d34db VPMOVZXWQ X11, Y11 +c4423128db VPMULDQ X11, X9, X11 +c4420528db VPMULDQ Y11, Y15, Y11 +c442310bdb VPMULHRSW X11, X9, X11 +c442050bdb VPMULHRSW Y11, Y15, Y11 +c44131e4db VPMULHUW X11, X9, X11 +c44105e4db VPMULHUW Y11, Y15, Y11 +c44131e5db VPMULHW X11, X9, X11 +c44105e5db VPMULHW Y11, Y15, Y11 +c4423140db VPMULLD X11, X9, X11 +c4420540db VPMULLD Y11, Y15, Y11 +c44131d5db VPMULLW X11, X9, X11 +c44105d5db VPMULLW Y11, Y15, Y11 +c44131f4db VPMULUDQ X11, X9, X11 +c44105f4db VPMULUDQ Y11, Y15, Y11 +c44131ebdb VPOR X11, X9, X11 +c44105ebdb VPOR Y11, Y15, Y11 +c44131f6db VPSADBW X11, X9, X11 +c44105f6db VPSADBW Y11, Y15, Y11 +c4423100db VPSHUFB X11, X9, X11 +c4420500db VPSHUFB Y11, Y15, Y11 +c4417970db07 VPSHUFD $0x7, X11, X11 +c4417d70db07 VPSHUFD $0x7, Y11, Y11 +c4417a70db07 VPSHUFHW $0x7, X11, X11 +c4417e70db07 VPSHUFHW $0x7, Y11, Y11 +c4417b70db07 VPSHUFLW $0x7, X11, X11 +c4417f70db07 VPSHUFLW $0x7, Y11, Y11 +c4423108db VPSIGNB X11, X9, X11 +c4420508db VPSIGNB Y11, Y15, Y11 +c442310adb VPSIGND X11, X9, X11 +c442050adb VPSIGND Y11, Y15, Y11 +c4423109db VPSIGNW X11, X9, X11 +c4420509db VPSIGNW Y11, Y15, Y11 +c44131f2db VPSLLD X11, X9, X11 +c4c131f313 VPSLLQ 0(R11), X9, X2 +c4c13173f307 VPSLLQ $0x7, X11, X9 +c4423147db VPSLLVD X11, X9, X11 +c4420547db VPSLLVD Y11, Y15, Y11 +c442b147db VPSLLVQ X11, X9, X11 +c4428547db VPSLLVQ Y11, Y15, Y11 +c44131f1db VPSLLW X11, X9, X11 +c44105f11b VPSLLW 0(R11), Y15, Y11 +c4c131e2d3 VPSRAD X11, X9, X2 +c4c105e213 VPSRAD 0(R11), Y15, Y2 +c4c10572e307 VPSRAD $0x7, Y11, Y15 +c4423146db VPSRAVD X11, X9, X11 +c4420546db VPSRAVD Y11, Y15, Y11 +c44131e1db VPSRAW X11, X9, X11 +c44105e11b VPSRAW 0(R11), Y15, Y11 +c4c131d2d3 VPSRLD X11, X9, X2 +c4c13173db07 VPSRLDQ $0x7, X11, X9 +c44131d31b VPSRLQ 0(R11), X9, X11 +c4c23145d3 VPSRLVD X11, X9, X2 +c4c20545d3 VPSRLVD Y11, Y15, Y2 +c4c2b145d3 VPSRLVQ X11, X9, X2 +c4c28545d3 VPSRLVQ Y11, Y15, Y2 +c4c131d1d3 VPSRLW X11, X9, X2 +c4c105d113 VPSRLW 0(R11), Y15, Y2 +c4c10571d307 VPSRLW $0x7, Y11, Y15 +c44131f8db VPSUBB X11, X9, X11 +c44105f8db VPSUBB Y11, Y15, Y11 +c44131fadb VPSUBD X11, X9, X11 +c44105fadb VPSUBD Y11, Y15, Y11 +c44131fbdb VPSUBQ X11, X9, X11 +c44105fbdb VPSUBQ Y11, Y15, Y11 +c44131e8db VPSUBSB X11, X9, X11 +c44105e8db VPSUBSB Y11, Y15, Y11 +c44131e9db VPSUBSW X11, X9, X11 +c44105e9db VPSUBSW Y11, Y15, Y11 +c44131d8db VPSUBUSB X11, X9, X11 +c44105d8db VPSUBUSB Y11, Y15, Y11 +c44131d9db VPSUBUSW X11, X9, X11 +c44105d9db VPSUBUSW Y11, Y15, Y11 +c44131f9db VPSUBW X11, X9, X11 +c44105f9db VPSUBW Y11, Y15, Y11 +c4427917db VPTEST X11, X11 +c4427d17db VPTEST Y11, Y11 +c4413168db VPUNPCKHBW X11, X9, X11 +c4410568db VPUNPCKHBW Y11, Y15, Y11 +c441316adb VPUNPCKHDQ X11, X9, X11 +c441056adb VPUNPCKHDQ Y11, Y15, Y11 +c441316ddb VPUNPCKHQDQ X11, X9, X11 +c441056ddb VPUNPCKHQDQ Y11, Y15, Y11 +c4413169db VPUNPCKHWD X11, X9, X11 +c4410569db VPUNPCKHWD Y11, Y15, Y11 +c4413160db VPUNPCKLBW X11, X9, X11 +c4410560db VPUNPCKLBW Y11, Y15, Y11 +c4413162db VPUNPCKLDQ X11, X9, X11 +c4410562db VPUNPCKLDQ Y11, Y15, Y11 +c441316cdb VPUNPCKLQDQ X11, X9, X11 +c441056cdb VPUNPCKLQDQ Y11, Y15, Y11 +c4413161db VPUNPCKLWD X11, X9, X11 +c4410561db VPUNPCKLWD Y11, Y15, Y11 +c44131efdb VPXOR X11, X9, X11 +c44105efdb VPXOR Y11, Y15, Y11 +c4417853db VRCPPS X11, X11 +c4417c53db VRCPPS Y11, Y11 +c4413253db VRCPSS X11, X9, X11 +c4437909db07 VROUNDPD $0x7, X11, X11 +c4437d09db07 VROUNDPD $0x7, Y11, Y11 +c4437908db07 VROUNDPS $0x7, X11, X11 +c4437d08db07 VROUNDPS $0x7, Y11, Y11 +c443310bdb07 VROUNDSD $0x7, X11, X9, X11 +c443310adb07 VROUNDSS $0x7, X11, X9, X11 +c4417852db VRSQRTPS X11, X11 +c4417c52db VRSQRTPS Y11, Y11 +c4413252db VRSQRTSS X11, X9, X11 +c44131c6db07 VSHUFPD $0x7, X11, X9, X11 +c44105c6db07 VSHUFPD $0x7, Y11, Y15, Y11 +c44130c6db07 VSHUFPS $0x7, X11, X9, X11 +c44104c6db07 VSHUFPS $0x7, Y11, Y15, Y11 +c4417951db VSQRTPD X11, X11 +c4417d51db VSQRTPD Y11, Y11 +c4417851db VSQRTPS X11, X11 +c4417c51db VSQRTPS Y11, Y11 +c4413351db VSQRTSD X11, X9, X11 +c4413251db VSQRTSS X11, X9, X11 +c441315c1b VSUBPD 0(R11), X9, X11 +c441055c1b VSUBPD 0(R11), Y15, Y11 +c441305c1b VSUBPS 0(R11), X9, X11 +c441045c1b VSUBPS 0(R11), Y15, Y11 +c441335c1b VSUBSD 0(R11), X9, X11 +c441325c1b VSUBSS 0(R11), X9, X11 +c442790f1b VTESTPD 0(R11), X11 +c4427d0f1b VTESTPD 0(R11), Y11 +c442790e1b VTESTPS 0(R11), X11 +c4427d0e1b VTESTPS 0(R11), Y11 +c441792e1b VUCOMISD 0(R11), X11 +c441782e1b VUCOMISS 0(R11), X11 +c44131151b VUNPCKHPD 0(R11), X9, X11 +c44105151b VUNPCKHPD 0(R11), Y15, Y11 +c44130151b VUNPCKHPS 0(R11), X9, X11 +c44104151b VUNPCKHPS 0(R11), Y15, Y11 +c44131141b VUNPCKLPD 0(R11), X9, X11 +c44105141b VUNPCKLPD 0(R11), Y15, Y11 +c44130141b VUNPCKLPS 0(R11), X9, X11 +c44104141b VUNPCKLPS 0(R11), Y15, Y11 +c44131571b VXORPD 0(R11), X9, X11 +c44105571b VXORPD 0(R11), Y15, Y11 +c44130571b VXORPS 0(R11), X9, X11 +c44104571b VXORPS 0(R11), Y15, Y11 +f3480faeda WRGSBASE DX +660fc1d2 XADDW DX, DX +0fc1d2 XADDL DX, DX +480fc1d2 XADDQ DX, DX +0fc0d2 XADDL DL, DL +6687d2 XCHGW DX, DX +87d2 XCHGL DX, DX +4887d2 XCHGQ DX, DX +86d2 XCHGL DL, DL +4892 XCHGQ AX, DX +4835674523f1 XORQ $-0xedcba99, AX +664183f307 XORW $0x7, R11 +664531db XORW R11, R11 +4183f307 XORL $0x7, R11 +4531db XORL R11, R11 +4983f307 XORQ $0x7, R11 +4d31db XORQ R11, R11 +45301b XORB R11, 0(R11) +6645331b XORW 0(R11), R11 +4d331b XORQ 0(R11), R11 +66410f57d3 XORPD X11, X2 +410f57d3 XORPS X11, X2 +490fae2b XRSTOR64 0(R11) +490fae23 XSAVE64 0(R11) +490fae33 XSAVEOPT64 0(R11) diff --git a/disasm/testdata/parity_amd64_extra.txt b/disasm/testdata/parity_amd64_extra.txt new file mode 100644 index 0000000..79b56c4 --- /dev/null +++ b/disasm/testdata/parity_amd64_extra.txt @@ -0,0 +1,123 @@ +c4e2fd9034e508000000 VPGATHERDQ Y0, 0x8(X4*8), Y6 +c4a2fd9034f508000000 VPGATHERDQ Y0, 0x8(X14*8), Y6 +c4e2fd90342508000000 VPGATHERDQ Y0, 0x8(X4*1), Y6 +c4a2fd90343508000000 VPGATHERDQ Y0, 0x8(X14*1), Y6 +c4e2e9914c7d00 VPGATHERQQ X2, 0(BP)(X7*2), X1 +c4e2e9924c7d00 VGATHERDPD X2, 0(BP)(X7*2), X1 +c4e2fd9234e508000000 VGATHERDPD Y0, 0x8(X4*8), Y6 +c4a2fd9234f508000000 VGATHERDPD Y0, 0x8(X14*8), Y6 +c4e2fd92342508000000 VGATHERDPD Y0, 0x8(X4*1), Y6 +c4a2fd92343508000000 VGATHERDPD Y0, 0x8(X14*1), Y6 +c4e2e9934c7d00 VGATHERQPD X2, 0(BP)(X7*2), X1 +c4e269924c7d00 VGATHERDPS X2, 0(BP)(X7*2), X1 +c4e2619234e508000000 VGATHERDPS X3, 0x8(X4*8), X6 +c4a2619234f508000000 VGATHERDPS X3, 0x8(X14*8), X6 +c4e25192342508000000 VGATHERDPS X5, 0x8(X4*1), X6 +c4a26192343508000000 VGATHERDPS X3, 0x8(X14*1), X6 +c4e269934c7d00 VGATHERQPS X2, 0(BP)(X7*2), X1 +c4e269904c7d00 VPGATHERDD X2, 0(BP)(X7*2), X1 +c4e2619034e508000000 VPGATHERDD X3, 0x8(X4*8), X6 +c4a2619034f508000000 VPGATHERDD X3, 0x8(X14*8), X6 +c4e26190342508000000 VPGATHERDD X3, 0x8(X4*1), X6 +c4a26190343508000000 VPGATHERDD X3, 0x8(X14*1), X6 +c4e269914c7d00 VPGATHERQD X2, 0(BP)(X7*2), X1 +c4e2f991140d00000000 VPGATHERQQ X0, 0(X1*1), X2 +c4e2f991140c VPGATHERQQ X0, 0(SP)(X1*1), X2 +c4e2f991940d00020000 VPGATHERQQ X0, 0x200(BP)(X1*1), X2 +c4c2fd91540c10 VPGATHERQQ Y0, 0x10(R12)(Y1*1), Y2 +c4e3714c1300 VPBLENDVB X0, 0(BX), X1, X2 +450f38cbdb SHA256RNDS2 X0, X11, X11 +450f38c9db SHA1MSG1 X11, X11 +450f38cadb SHA1MSG2 X11, X11 +450f38c8db SHA1NEXTE X11, X11 +450f3accdb03 SHA1RNDS4 $0x3, X11, X11 +450f38ccdb SHA256MSG1 X11, X11 +450f38cddb SHA256MSG2 X11, X11 +0f20c2 MOVL CR0, DX +0fa8 PUSHL GS +c5fe70d1ff VPSHUFHW $0xff, Y1, Y2 +c5ed73f9ff VPSLLDQ $0xff, Y1, Y2 +c5ed73d1ff VPSRLQ $0xff, Y1, Y2 +c4e37963d1ff VPCMPISTRI $0xff, X1, X2 +c4e37d1dcaff VCVTPS2PH $0xff, Y1, X2 +c5ed71d1ff VPSRLW $0xff, Y1, Y2 +6261f50858e2 VADDPD X2, X1, X28 +6201a50858e6 VADDPD X30, X11, X28 +62f19500580401 VADDPD 0(CX)(AX*1), X29, X0 +62719500581441 VADDPD 0(CX)(AX*2), X29, X10 +6261f50858a4010f000000 VADDPD 0xf(CX)(AX*1), X1, X28 +6261ad0858a4410f000000 VADDPD 0xf(CX)(AX*2), X10, X28 +62f19520584a7f VADDPD 0xfe0(DX), Y29, Y1 +62f19540584c427f VADDPD 0x1fc0(DX)(AX*2), Z29, Z1 +62f19520588a00100000 VADDPD 0x1000(DX), Y29, Y1 +62f19540588c4200200000 VADDPD 0x2000(DX)(AX*2), Z29, Z1 +6241a52858f2 VADDPD Y10, Y11, Y30 +6261f5285820 VADDPD 0(AX), Y1, Y28 +6261ad28582401 VADDPD 0(CX)(AX*1), Y10, Y28 +62619d2058a80f000000 VADDPD 0xf(AX), Y28, Y29 +6261fd2858ac410f000000 VADDPD 0xf(CX)(AX*2), Y0, Y29 +6261fd28586c4240 VADDPD 0x800(DX)(AX*2), Y0, Y29 +6201ed4858ec VADDPD Z28, Z2, Z29 +62018d4058ec VADDPD Z28, Z30, Z29 +62619d40582c01 VADDPD 0(CX)(AX*1), Z28, Z29 +62f1954058800f000000 VADDPD 0xf(AX), Z29, Z0 +627195405894010f000000 VADDPD 0xf(CX)(AX*1), Z29, Z10 +6261f548586a20 VADDPD 0x800(DX), Z1, Z29 +c5f990e9 KMOVB K1, K5 +c5f890c0 KMOVW K0, K0 +c57893d7 KMOVW K7, R10 +c5fb92e8 KMOVD AX, K5 +c4e1f890cd KMOVQ K5, K1 +c461fb93d7 KMOVQ K7, R10 +c4e1f844e9 KNOTQ K1, K5 +c4e1c445e8 KORQ K0, K7, K5 +c4e3f933e9c4 KSHIFTLQ $0xc4, K1, K5 +6251f52c58d4 VADDPD Y12, Y1, K4, Y10 +62f1f5495808 VADDPD 0(AX), Z1, K1, Z1 +62327d2b90b4fd80020000 VPGATHERDD 0x280(BP)(Y15*8), K3, Y14 +6232fd0b9074fd50 VPGATHERDQ 0x280(BP)(X15*8), K3, X14 +6232fd4b9074fd50 VPGATHERDQ 0x280(BP)(Y15*8), K3, Z14 +6252fd2692546750 VGATHERDPD 0x280(R15)(X20*2), K6, Y10 +62527d0692946780020000 VGATHERDPS 0x280(R15)(X20*2), K6, X10 +62527d4692946780020000 VGATHERDPS 0x280(R15)(Z20*2), K6, Z10 +62527d2693946780020000 VGATHERQPS 0x280(R15)(Y20*2), K6, X10 +62527d0691946780020000 VPGATHERQD 0x280(R15)(X20*2), K6, X10 +62527d4691946780020000 VPGATHERQD 0x280(R15)(Z20*2), K6, Y10 +6252fd2691546750 VPGATHERQQ 0x280(R15)(Y20*2), K6, Y10 +6252fd0693546750 VGATHERQPD 0x280(R15)(X20*2), K6, X10 +6252fd4693546750 VGATHERQPD 0x280(R15)(Z20*2), K6, Z10 +62a1854858c7 VADDPD Z23, Z15, Z16 +6272fd21933c3a VGATHERQPD 0(DX)(Y23*1), K1, Y15 +62e1fd086ee5 VMOVQ BP, X20 +62c1fd087ea40bf1ffffff VMOVQ X20, -0xf(R11)(CX*1) +c4c139166c0bf1 VMOVHPD -0xf(R11)(CX*1), X8, X5 +c4415116440bf1 VMOVHPD -0xf(R11)(CX*1), X5, X8 +6251dd0016840bf1ffffff VMOVHPD -0xf(R11)(CX*1), X20, X8 +62c1bd0816a40bf1ffffff VMOVHPD -0xf(R11)(CX*1), X8, X20 +62e1fd081720 VMOVHPD X20, 0(AX) +c579170444 VMOVHPD X8, 0(SP)(AX*2) +c4c139126c0bf1 VMOVLPD -0xf(R11)(CX*1), X8, X5 +c4415112440bf1 VMOVLPD -0xf(R11)(CX*1), X5, X8 +6251dd0012840bf1ffffff VMOVLPD -0xf(R11)(CX*1), X20, X8 +62c1bd0812a40bf1ffffff VMOVLPD -0xf(R11)(CX*1), X8, X20 +62e1fd081320 VMOVLPD X20, 0(AX) +c579130444 VMOVLPD X8, 0(SP)(AX*2) +62c37d0815e611 VPEXTRW $0x11, X20, R14 +62e37d0815244411 VPEXTRW $0x11, X20, 0(SP)(AX*2) +62f1edd958cb VADDPD.RU_SAE.Z Z3, Z2, K1, Z1 +62f1ed595808 VADDPD.BCST 0(AX), Z2, K1, Z1 +62f1ef19c2c000 VCMPSD.SAE $0x0, X0, X2, K1, K0 +62619d30586a7f VADDPD.BCST 0x3f8(DX), Y28, Y29 +62617c58586a7f VADDPS.BCST 0x1fc(DX), Z0, Z29 +6261fd1858ac42f0070000 VADDPD.BCST 0x7f0(DX)(AX*2), X0, X29 +62f19550588af0070000 VADDPD.BCST 0x7f0(DX), Z29, Z1 +6261745858ac42f0070000 VADDPS.BCST 0x7f0(DX)(AX*2), Z1, Z29 +62b3fd0c66cd02 VFPCLASSPDX $0x2, X21, K4, K1 +62b3fd0866cd02 VFPCLASSPDX $0x2, X21, K1 +62f35545031003 VALIGND $0x3, 0(AX), Z21, K5, Z2 +62b16d2872cd02 VPROLD $0x2, Y21, Y2 +62e27d0da02c50 VPSCATTERDD X21, K5, 0(AX)(X2*2) +62b1b70811d5 VMOVSD X2, X9, X21 +62b1ff0d12d5 VMOVDDUP X21, K5, X2 +62b1ff4d12d5 VMOVDDUP Z21, K5, Z2 +62d1d54058d1 VADDPD Z9, Z21, Z2 diff --git a/disasm/testdata/parity_amd64_sys.txt b/disasm/testdata/parity_amd64_sys.txt new file mode 100644 index 0000000..36b4cce --- /dev/null +++ b/disasm/testdata/parity_amd64_sys.txt @@ -0,0 +1,23 @@ +cd04 INT $0x4 +4883ef04 SUBQ $0x4, DI +49836c240804 SUBQ $0x4, 0x8(R12) +72e9 JB 0x598 +7202 JB 0x5b9 +7205 JB 0x5c7 +7204 JB 0x5d4 +7202 JB 0x5de +ff20 JMP 0(AX) +7203 JB 0x5f2 +7204 JB 0x5fe +43ff24ac JMP 0(R12)(R13*4) +ff2424 JMP 0(SP) +7203 JB 0x61b +410fa5c3 SHLDL CL, AX, R11 +660fafda IMULW DX, BX +660fc2150000000004 CMPPD $0x4, 0(IP), X2 +ca0400 LRET $0x4 +f20fd6c9 MOVDQ2Q X1, M1 +488b544c20 MOVQ 0x20(SP)(CX*2), DX +468bac64437e0000 MOVL 0x7e43(SP)(R12*2), R13 +8a0444 MOVB 0(SP)(AX*2), AL +64488b142500000000 MOVQ FS:0, DX diff --git a/disasm/testdata/parity_arm64.txt b/disasm/testdata/parity_arm64.txt new file mode 100644 index 0000000..5f29bdd --- /dev/null +++ b/disasm/testdata/parity_arm64.txt @@ -0,0 +1,144 @@ +a602093a ADCSW R9, R21, R6 +23123011 ADDW $3076, R17, R3 +67158d0b ADDW R13->5, R11, R7 +6b147731 ADDSW $(3525<<12), R3, R11 +21004192 AND $-9223372036854775808, R1, R1 +7a1ec98a AND R9@>7, R19, R26 +1f0002ea TST R2, R0 +458051f2 ANDS $-140737488289793, R2, R5 +672bce9a ASR R14, R27, R7 +ffffff17 JMP -1(PC) +14a55ab3 BFXIL $26, R8, $16, R20 +3730b3ea BICS R19->12, R1, R23 +e0013fd6 CALL (R15) +e7ffffb5 CBNZ R7, -1(PC) +4beb543a CCMNW AL, R26, $20, $11 +a76b4f7a CCMPW VS, R29, $15, $7 +e44341ba CCMN MI, ZR, R1, $4 +573093da CSINV LO, R2, R19, R23 +87718cda CINV VS, R12, R7 +e615c05a CLSW R15, R6 +ff11352b CMNW R21.UXTB<<4, R15 +bf084031 CMNW $(2<<12), R5 +bf001e2b CMNW R30, R5 +ff02266b CMPW R6.UXTB, R23 +2e45895a CNEGW PL, R9, R14 +1041d11a CRC32B R17, R8, R16 +7653d31a CRC32CB R19, R27, R22 +8c30941a CSELW LO, R4, R20, R12 +e5639f5a CSETMW VC, R5 +e5e2955a CSINVW AL, R23, R21, R5 +217608d5 DC IVAC, R1 +bf3103d5 DMB $1 +c974354a EONW R21<<29, R6, R9 +d1ef02ca EOR R2<<59, R30, R17 +bf2003d5 SEVL +df3103d5 ISB $1 +f6ffdf88 LDARW (RSP), R22 +54c17f88 LDAXPW (R10), (R20, R16) +70fe5f08 LDAXRB (R19), R16 +480540f8 MOVD.P (R10), R8 +498d5cf9 MOVD 14616(R10), R9 +4e5c5e38 MOVBU.W -27(R2), R14 +6e6b7738 MOVBU (R27)(R23), R14 +afc87978 MOVHU (R5)(R25.SXTW), R15 +b068af38 MOVB (R5)(R15), R16 +361f9c78 MOVH.W -63(R25), R22 +688e92b8 MOVW.W -216(R19), R8 +10347fc8 LDXP (R0), (R16, R13) +9a7d5f48 LDXRH (R12), R26 +221a47d3 LSL $57, R17, R2 +34fc4cd3 LSR $12, R1, R20 +77ff0e9b MNEG R14, R27, R23 +d4adb252 MOVW $2507014144, R20 +e7031eaa MOVD R30, R7 +e5031faa MOVD ZR, R5 +284038d5 MRS $16897, R8 +42c3139b MSUB R19, R16, R26, R2 +e97f6daa MVN R13>>31, R9 +e70302da NGC R2, R7 +032ee42a ORNW R4@>11, R16, R3 +1a110d2a ORRW R13<<4, R8, R26 +3601c05a RBITW R9, R22 +220cc0da REV R1, R2 +336f8413 EXTRW $27, R4, R25, R19 +832dc31a RORW R3, R12, R3 +73021b7a SBCSW R27, R19, R19 +f4450813 SBFXW $8, R15, $10, R20 +9f2003d5 SEV +6ffc3a9b SMNEGL R26, R3, R15 +03ff9fc8 STLR R3, (R24) +edfd0e88 STLXRW R13, (R15), R14 +c6ae3588 STLXPW (R6, R11), (R22), R21 +112d86a9 STP.W (R17, R11), 96(R8) +ae4d12f8 MOVD.W R14, -220(R13) +bb0d1a38 MOVB.W R27, -96(R13) +53cf1c79 MOVH R19, 3686(R26) +bb582ff8 MOVD R27, (R5)(R15.UXTW<<3) +6bdb2e78 MOVH R11, (R27)(R14.SXTW<<1) +61082ac8 STXP (R1, R2), (R3), R10 +627e1488 STXRW R2, (R19), R20 +f34a344b SUBW R20.UXTW<<2, R23, R19 +e8740c4b SUBW R12<<29, R7, R8 +c9b04071 SUBSW $(44<<12), R6, R9 +d03c1aeb SUBS R26<<15, R6, R16 +a91d4093 SXTB R13, R9 +0c5b2cd5 SYSL $285440, R12 +5f54ca6a TSTW R10@>21, R2 +5f54ca6a TSTW R10@>21, R2 +ef580353 UBFXW $3, R7, $20, R15 +3152a09b UMADDL R0, R20, R17, R17 +d37eb39b UMULL R19, R22, R19 +0058204e VCNT V0.B16, V0.B16 +b8f8a04e FABS V5.S4, V24.S4 +4a282c1e FADDS F12, F2, F10 +ef856b1e FCCMPD HI, F11, F15, $15 +0821201e FCMPS $(0.0), F8 +b823201e FCMPES $(0.0), F29 +075d761e FCSELD PL, F8, F22, F7 +e700789e FCVTZSD F7, R7 +3603799e FCVTZUD F25, R22 +01090f1f FMADDS F15, F2, F8, F1 +ff4b6c1e FMAXD F12, F31, F31 +82c4392e VFMAXNMP V25.S2, V4.S2, V2.S2 +95587d1e FMIND F29, F4, F21 +3bc7aa6e VFMINNMP V10.S4, V25.S4, V27.S4 +4f00669e FMOVD F2, R15 +4940601e FMOVD F2, F9 +39de756e FMUL V21.D2, V17.D2, V25.D2 +0542211e FNEGS F16, F5 +6ec32e1f FNMSUBS F14, F16, F27, F14 +1540261e FRINTAS F0, F21 +3b99614e FRINTM V9.D2, V27.D2 +4e43241e FRINTNS F26, F14 +d6c0641e FRINTPD F6, F22 +7cc0251e FRINTZS F3, F28 +dbc1611e FSQRTD F14, F27 +8402621e SCVTFWD R20, F4 +5701631e UCVTFWD R10, F23 +4986654e VADD V5.H8, V18.H8, V9.H8 +fd4b284e AESE V31.B16, V29.B16 +ac8db86e VCMEQ V24.S4, V13.S4, V12.S4 +f4071b4e VDUP V31.B[13], V20.B16 +705d196e VMOV V11.B[11], V16.B[12] +ae2f400c VLD1 (R29), [V14.D1, V15.D1, V16.D1, V17.D1] +78a2c40c VLD1.P (R19)(R4), [V24.B8, V25.B8] +a04b400d VLD1 (R29), V0.H[1] +700cce4d VLD1.P (R3)(R14), V16.B[11] +d181c24d VLD1.P (R14)(R2), V17.S[2] +5b06155e VMOV V18.B[10], V27 +441ca24e VMOV V2.B16, V4.B16 +cf1eb94e VORR V25.B16, V22.B16, V15.B16 +24e0224e VPMULL2 V2.B16, V1.B16, V4.H8 +b018204e VREV16 V5.B16, V16.B16 +a901629e SCVTFD R13, F9 +9b12035e SHA1P V3.S4, V20, V27 +4b40045e SHA256H V4.S4, V2, V11 +6e67000c VST1 [V14.H4, V15.H4, V16.H4], (R27) +eeac970c VST1.P [V14.D1, V15.D1], (R7)(R23) +9324900c VST1.P [V19.H4, V20.H4, V21.H4, V22.H4], (R4)(R16) +e987004d VST1 V9.D[1], (RSP) +e15a8b4d VST1.P V1.H[7], (R23)(R11) +b786904d VST1.P V23.D[1], (R21)(R16) +4d03631e UCVTFWD R26, F13 +2c3c0e0e VMOV V1.H[3], R12 diff --git a/disasm/testdata/parity_loong64.txt b/disasm/testdata/parity_loong64.txt new file mode 100644 index 0000000..8d6c0fe --- /dev/null +++ b/disasm/testdata/parity_loong64.txt @@ -0,0 +1,73 @@ +1ffcff4b BFPF -1(PC) +04020014 LU12IW $16, R4 +85001700 MOVW R4, R5 +a6901100 SUBV R4, R5, R6 +a5101100 SUB R4, R5 +05101100 NEGW R4, R5 +a5101800 SRA R4, R5 +a5901b00 ROTRV R4, R5 +85200000 CLOV R4, R5 +85380000 REVB2W R4, R5 +854c0000 Unknown BITREV.8B R4, R5 +a6900001 ADDF F4, F5, F6 +64608029 MOVW R4, 24(R3) +a404c029 MOVV R4, 1(R5) +64400028 MOVB 16(R3), R4 +a404002a MOVBU 1(R5), R4 +04048003 MOVW $1, R4 +84fcff02 ADDV $-1, R4 +84904400 SRL $4, R4 +84104100 SLLV $4, R4 +80040040 BEQ R4, 1(PC) +80040068 BLTU R4, 1(PC) +6460c02b MOVD F4, 24(R3) +85b81401 MOVV F4, R5 +a5101600 Unknown ORN R4, R5 +a6901d00 MULV R4, R5, R6 +a6901e00 MULHVU R4, R5, R6 +a6102200 DIVV R4, R5, R6 +a4044028 MOVH 1(R5), R4 +a5901c00 MULH R4, R5 +a5902000 REM R4, R5 +a5102000 DIV R4, R5 +a5102100 DIVU R4, R5 +85804500 SRLV $32, R4, R5 +a6101300 MASKEQZ R4, R5, R6 +a6102600 CRCCWBW R4, R5, R6 +85101d01 FFINTFW F4, F5 +85081401 ABSD F4, F5 +00004003 NOOP +a510220c CMPEQD F4, F5, FCC5 +80d01401 MOVV F4, FCC0 +85040025 Unknown STPTR.W $4, R4, R5 +a4fc7f24 Unknown LDPTR.W $-4, R5, R4 +a4040026 Unknown LDPTR.D $4, R5, R4 +84400010 Unknown ADDU16I.D $16, R4 +acb95838 AMCASH R14, (R13), R12 +acb96238 AMANDV R14, (R13), R12 +acb96538 AMMAXV R14, (R13), R12 +acb96838 AMMINVU R14, (R13), R12 +acb95a38 AMCASDBH R14, (R13), R12 +acb96b38 AMANDDBV R14, (R13), R12 +acb96e38 AMMAXDBV R14, (R13), R12 +acb97138 AMMINDBVU R14, (R13), R12 +a4001021 SC R4, 1024(R5) +30391108 FMADDF F2, F14, F9, F16 +88a1d808 FNMSUBF F17, F8, F12, F8 +a5ac9d08 FNMADDF F27, F11, F5, F5 +a6100b01 FMIND F4, F5, F6 +a6901201 FCOPYSGF F4, F5, F6 +01201d01 FFINTDW F0, F1 +01441e01 FRINTS F0, F1 +a6900e01 Unknown FMINA.S F4, F5, F6 +02241a01 FTINTRMVF F0, F2 +02841a01 FTINTRZWF F0, F2 +02e41a01 FTINTRNEVF F0, F2 +cc350438 MOVH (R14)(R13), R12 +cc351438 MOVH R12, (R14)(R13) +c2353c38 MOVD F2, (R14)(R13) +85188f00 BSTRINSV $15, R4, $6, R5 +8518cf00 BSTRPICKV $15, R4, $6, R5 +04a43a03 LU52ID $-343, R0, R4 +a484cc02 ADDV $801, R5, R4 +88fcff2a Unknown PRELD $-1, R4, $8 diff --git a/disasm/testdata/parity_riscv64.txt b/disasm/testdata/parity_riscv64.txt new file mode 100644 index 0000000..b8eb5f0 --- /dev/null +++ b/disasm/testdata/parity_riscv64.txt @@ -0,0 +1,290 @@ +1383f27f ADDI $2047, X5, X6 +13e31200 ORI $1, X5, X6 +13d31200 SRLI $1, X5, X6 +1383f27f ADDI $2047, X5, X6 +b3b36200 SLTU X6, X5, X7 +b3e36200 OR X6, X5, X7 +13c31200 XORI $1, X5, X6 +17f5ff7f AUIPC $524287, X10 +33135300 SLL X5, X6, X6 +93d21200 SRLI $1, X5, X5 +93820280 ADDI $-2048, X5, X5 +67830200 JALR X6, (X5) +63d46200 BGE X5, X6, 2(PC) +03930200 MOVH (X5), X6 +03c30200 MOVBU (X5), X6 +23005300 MOVB X5, (X6) +0f003083 FENCE.TSO +bb135300 SLLW X5, X6, X7 +1b531300 SRLIW $1, X6, X6 +bbd35340 SRAW X5, X7, X7 +03b30200 MOV (X5), X6 +73708100 CSRRCI $2, VSTART, X0 +f3229000 CSRRS X0, VXSAT, X5 +f37211c0 CSRRCI $2, TIME, X5 +f36211c0 CSRRSI $2, TIME, X5 +73208500 CSRRS X10, VSTART, X0 +f32200c0 RDCYCLE X5 +b373530e CZERONEZ X5, X6, X7 +bb035302 MULW X5, X6, X7 +bb535302 DIVUW X5, X6, X7 +af33531a SCD X5, (X6), X7 +af335366 AMOANDD X5, (X6), X7 +af3353a6 AMOMAXD X5, (X6), X7 +af3353c6 AMOMINUD X5, (X6), X7 +53011008 FSUBS F1, F0, F2 +d31200c0 FCVTWS F0, X5 +d31220c0 FCVTLS F0, X5 +538002d0 FCVTSW X5, F0 +d33210c0 FCVTWUS F0, X5 +d33230c0 FCVTLUS F0, X5 +53211020 FSGNJXS F1, F0, F2 +47822018 FMSUBS F1, F2, F3, F4 +d31200e0 FCLASSS F0, X5 +5301100a FSUBD F1, F0, F2 +d31200c2 FCVTWD F0, X5 +d31220c2 FCVTLD F0, X5 +538002d2 FCVTDW X5, F0 +d33210c2 FCVTWUD F0, X5 +d33230c2 FCVTLUD F0, X5 +53011022 FSGNJD F1, F0, F2 +4782201a FMSUBD F1, F2, F3, F4 +d31200e2 FCLASSD F0, X5 +2ab0 MOVD F10, 32(X2) +0cb1 MOVD F11, 32(X10) +8152 ADDI $-32, X0, X5 +8112 ADDI $-32, X5, X5 +0171 ADDI $-512, X2, X2 +7d95 SRAI $63, X10, X10 +2694 ADD X9, X8, X8 +059c SUBW X9, X8, X8 +3326b620 SH1ADD X11, X12, X12 +bbc7e720 SH2ADDUW X14, X15, X15 +9b98f80b SLLIUW $63, X17, X17 +1b9c2b60 CPOPW X23, X24 +13d37228 ORCB X5, X6 +b323530a CLMULR X5, X6, X7 +135efe4b BEXTI $63, X28, X28 +9394f42b BSETI $63, X9, X9 +57760509 VSETVLI X10, E32, M1, TU, MA, X12 +5776650d VSETVLI X10, E32, MF4, TA, MA, X12 +57f60fcd VSETIVLI $31, E32, M1, TA, MA, X12 +87610502 VLE32V (X10), V3 +a7510502 VSE16V V3, (X10) +8701b502 VLMV (X10), V3 +8761b50a VLSE32V (X10), X11, V3 +a751b50a VSSE16V V3, X11, (X10) +87012506 VLUXEI8V (X10), V2, V3 +87712506 VLUXEI64V (X10), V2, V3 +8761250e VLOXEI32V (X10), V2, V3 +a7512506 VSUXEI16V V3, V2, (X10) +a701250e VSOXEI8V V3, V2, (X10) +a771250e VSOXEI64V V3, V2, (X10) +07040501 VLE8FFV (X10), V0, V8 +07640522 VLSEG2E32V (X10), V8 +07040542 VLSEG3E8V (X10), V8 +07640540 VLSEG3E32V (X10), V0, V8 +07040560 VLSEG4E8V (X10), V0, V8 +07640582 VLSEG5E32V (X10), V8 +070405a2 VLSEG6E8V (X10), V8 +076405a0 VLSEG6E32V (X10), V0, V8 +070405c0 VLSEG7E8V (X10), V0, V8 +076405e2 VLSEG8E32V (X10), V8 +270c0522 VSSEG2E8V V24, (X10) +276c0520 VSSEG2E32V V24, V0, (X10) +270c0540 VSSEG3E8V V24, V0, (X10) +276c0562 VSSEG4E32V V24, (X10) +270c0582 VSSEG5E8V V24, (X10) +276c0580 VSSEG5E32V V24, V0, (X10) +270c05a0 VSSEG6E8V V24, V0, (X10) +276c05c2 VSSEG7E32V V24, (X10) +270c05e2 VSSEG8E8V V24, (X10) +276c05e0 VSSEG8E32V V24, V0, (X10) +07040521 VLSEG2E8FFV (X10), V0, V8 +07640543 VLSEG3E32FFV (X10), V8 +07040563 VLSEG4E8FFV (X10), V8 +07640561 VLSEG4E32FFV (X10), V0, V8 +07040581 VLSEG5E8FFV (X10), V0, V8 +076405a3 VLSEG6E32FFV (X10), V8 +070405c3 VLSEG7E8FFV (X10), V8 +076405c1 VLSEG7E32FFV (X10), V0, V8 +070405e1 VLSEG8E8FFV (X10), V0, V8 +0764b52a VLSSEG2E32V (X10), X11, V8 +0704b54a VLSSEG3E8V (X10), X11, V8 +0764b548 VLSSEG3E32V (X10), X11, V0, V8 +0704b568 VLSSEG4E8V (X10), X11, V0, V8 +0764b58a VLSSEG5E32V (X10), X11, V8 +0704b5aa VLSSEG6E8V (X10), X11, V8 +0764b5a8 VLSSEG6E32V (X10), X11, V0, V8 +0704b5c8 VLSSEG7E8V (X10), X11, V0, V8 +0764b5ea VLSSEG8E32V (X10), X11, V8 +270cb52a VSSSEG2E8V V24, X11, (X10) +276cb528 VSSSEG2E32V V24, X11, V0, (X10) +270cb548 VSSSEG3E8V V24, X11, V0, (X10) +276cb56a VSSSEG4E32V V24, X11, (X10) +270cb58a VSSSEG5E8V V24, X11, (X10) +276cb588 VSSSEG5E32V V24, X11, V0, (X10) +270cb5a8 VSSSEG6E8V V24, X11, V0, (X10) +276cb5ca VSSSEG7E32V V24, X11, (X10) +270cb5ea VSSSEG8E8V V24, X11, (X10) +276cb5e8 VSSSEG8E32V V24, X11, V0, (X10) +07044524 VLUXSEG2EI8V (X10), V4, V0, V8 +07644546 VLUXSEG3EI32V (X10), V4, V8 +07044566 VLUXSEG4EI8V (X10), V4, V8 +07644564 VLUXSEG4EI32V (X10), V4, V0, V8 +07044584 VLUXSEG5EI8V (X10), V4, V0, V8 +076445a6 VLUXSEG6EI32V (X10), V4, V8 +070445ae VLOXSEG6EI8V (X10), V4, V8 +076445ac VLOXSEG6EI32V (X10), V4, V0, V8 +070445c4 VLUXSEG7EI8V (X10), V4, V0, V8 +076445e6 VLUXSEG8EI32V (X10), V4, V8 +270c4526 VSUXSEG2EI8V V24, V4, (X10) +276c4524 VSUXSEG2EI32V V24, V4, V0, (X10) +270c4544 VSUXSEG3EI8V V24, V4, V0, (X10) +276c4566 VSUXSEG4EI32V V24, V4, (X10) +270c4586 VSUXSEG5EI8V V24, V4, (X10) +276c4584 VSUXSEG5EI32V V24, V4, V0, (X10) +270c45a4 VSUXSEG6EI8V V24, V4, V0, (X10) +276c45c6 VSUXSEG7EI32V V24, V4, (X10) +270c45e6 VSUXSEG8EI8V V24, V4, (X10) +276c45e4 VSUXSEG8EI32V V24, V4, V0, (X10) +0704452c VLOXSEG2EI8V (X10), V4, V0, V8 +0764454e VLOXSEG3EI32V (X10), V4, V8 +0704456e VLOXSEG4EI8V (X10), V4, V8 +0764456c VLOXSEG4EI32V (X10), V4, V0, V8 +0704458c VLOXSEG5EI8V (X10), V4, V0, V8 +076445ce VLOXSEG7EI32V (X10), V4, V8 +070445ee VLOXSEG8EI8V (X10), V4, V8 +076445ec VLOXSEG8EI32V (X10), V4, V0, V8 +270c452c VSOXSEG2EI8V V24, V4, V0, (X10) +276c454e VSOXSEG3EI32V V24, V4, (X10) +270c456e VSOXSEG4EI8V V24, V4, (X10) +276c456c VSOXSEG4EI32V V24, V4, V0, (X10) +270c458c VSOXSEG5EI8V V24, V4, V0, (X10) +276c45ae VSOXSEG6EI32V V24, V4, (X10) +270c45ce VSOXSEG7EI8V V24, V4, (X10) +276c45cc VSOXSEG7EI32V V24, V4, V0, (X10) +270c45ec VSOXSEG8EI8V V24, V4, V0, (X10) +87518502 VL1RE16V (X10), V3 +07618522 VL2RE32V (X10), V2 +07728562 VL4RE64V (X10), V4 +a7818502 VS1RV V3, (X11) +d7412502 VADDVX X10, V2, V3 +d781200a VSUBVV V1, V2, V3 +d7b1270c VRSUBVI $15, V2, V0, V3 +d76125c2 VWADDUVX X10, V2, V3 +d7a120c6 VWADDVV V1, V2, V3 +d76125ce VWSUBVX X10, V2, V3 +d7a120da VWSUBUWV V1, V2, V3 +d76125d6 VWADDWX X10, V2, V3 +d76120c6 VWCVTXXV V2, V3 +d7a1234a VSEXTVF2 V2, V3 +d721214a VZEXTVF8 V2, V3 +d7b12740 VADCVIM $15, V2, V0, V3 +57b02744 VMADCVIM $15, V2, V0, V0 +57b02746 VMADCVI $15, V2, V0 +57c0254c VMSBCVXM X11, V2, V0, V0 +d7812024 VANDVV V1, V2, V0, V3 +d7812028 VORVV V1, V2, V0, V3 +d781202c VXORVV V1, V2, V0, V3 +d7b12f2c VNOTV V2, V0, V3 +d7b12794 VSLLVI $15, V2, V0, V3 +d7b127a0 VSRLVI $15, V2, V0, V3 +d7b127a4 VSRAVI $15, V2, V0, V3 +d7b12fb0 VNSRLWI $31, V2, V0, V3 +d7b12fb4 VNSRAWI $31, V2, V0, V3 +d7412560 VMSEQVX X10, V2, V0, V3 +d7412564 VMSNEVX X10, V2, V0, V3 +d7412568 VMSLTUVX X10, V2, V0, V3 +d7812070 VMSLEUVV V1, V2, V0, V3 +d7812074 VMSLEVV V1, V2, V0, V3 +d7412578 VMSGTUVX X10, V2, V0, V3 +d7b1277c VMSGTVI $15, V2, V0, V3 +d7011174 VMSLEVV V2, V1, V0, V3 +d7312770 VMSLEUVI $14, V2, V0, V3 +d7812010 VMINUVV V1, V2, V0, V3 +d7412514 VMINVX X10, V2, V0, V3 +d781201c VMAXVV V1, V2, V0, V3 +d7612594 VMULVX X10, V2, V0, V3 +d7a12090 VMULHUVV V1, V2, V0, V3 +d7612598 VMULHSUVX X10, V2, V0, V3 +d7a12084 VDIVVV V1, V2, V0, V3 +d7612588 VREMUVX X10, V2, V0, V3 +d7a120ec VWMULVV V1, V2, V0, V3 +d76125e0 VWMULUVX X10, V2, V0, V3 +d7a120b4 VMACCVV V2, V1, V0, V3 +d76125bc VNMSACVX V2, X10, V0, V3 +d7a120ac VNMSUBVV V2, V1, V0, V3 +d76125f0 VWMACCUVX V2, X10, V0, V3 +d7a120fc VWMACCSUVV V2, V1, V0, V3 +d741255c VMERGEVXM X10, V2, V0, V3 +d7812080 VSADDUVV V1, V2, V0, V3 +d7812084 VSADDVV V1, V2, V0, V3 +d7812088 VSSUBUVV V1, V2, V0, V3 +d741258c VSSUBVX X10, V2, V0, V3 +d7a12024 VAADDVV V1, V2, V0, V3 +d7612528 VASUBUVX X10, V2, V0, V3 +d781209c VSMULVV V1, V2, V0, V3 +d74125a8 VSSRLVX X10, V2, V0, V3 +d74125ac VSSRAVX X10, V2, V0, V3 +d74125b8 VNCLIPUWX X10, V2, V0, V3 +d74125bc VNCLIPWX X10, V2, V0, V3 +d7512500 VFADDVF F10, V2, V0, V3 +d751259c VFRSUBVF F10, V2, V0, V3 +d79120c8 VFWSUBVV V1, V2, V0, V3 +d75125d0 VFWADDWF F10, V2, V0, V3 +d7912090 VFMULVV V1, V2, V0, V3 +d7512580 VFDIVVF F10, V2, V0, V3 +d75125e0 VFWMULVF F10, V2, V0, V3 +d79120b4 VFNMACCVV V2, V1, V0, V3 +d75125b8 VFMSACVF V2, F10, V0, V3 +d79120a0 VFMADDVV V2, V1, V0, V3 +d75125a4 VFNMADDVF V2, F10, V0, V3 +d79120ac VFNMSUBVV V2, V1, V0, V3 +d75125f0 VFWMACCVF V2, F10, V0, V3 +d79120f8 VFWMSACVV V2, V1, V0, V3 +d75125fc VFWNMSACVF V2, F10, V0, V3 +d791224c VFREC7V V2, V0, V3 +d7912018 VFMAXVV V1, V2, V0, V3 +d7512520 VFSGNJVF F10, V2, V0, V3 +d7912028 VFSGNJXVV V1, V2, V0, V3 +d7112128 VFABSV V2, V0, V3 +d7912070 VMFNEVV V1, V2, V0, V3 +d751256c VMFLTVF F10, V2, V0, V3 +d7512574 VMFGTVF F10, V2, V0, V3 +d7111164 VMFLEVV V2, V1, V0, V3 +d7112048 VFCVTXUFV V2, V0, V3 +d7912348 VFCVTRTZXFV V2, V0, V3 +d7112448 VFWCVTXUFV V2, V0, V3 +d7912748 VFWCVTRTZXFV V2, V0, V3 +d7112648 VFWCVTFFV V2, V0, V3 +d7112b48 VFNCVTRTZXUFW V2, V0, V3 +d7912948 VFNCVTFXW V2, V0, V3 +d7a12000 VREDSUMVS V1, V2, V0, V3 +d7a12010 VREDMINUVS V1, V2, V0, V3 +d7a12008 VREDORVS V1, V2, V0, V3 +d78120c4 VWREDSUMVS V1, V2, V0, V3 +d791201c VFREDMAXVS V1, V2, V0, V3 +d79120c4 VFWREDUSUMVS V1, V2, V0, V3 +d7a1207a VMNORMM V1, V2, V3 +d7212176 VMNOTM V2, V3 +d7a12050 VMSBFM V2, V0, V3 +d7212850 VIOTAM V2, V0, V3 +57510542 VFMVSF F10, V2 +d741253c VSLIDEDOWNVX X10, V2, V0, V3 +d7512538 VFSLIDE1UPVF F10, V2, V0, V3 +d7812030 VRGATHERVV V1, V2, V0, V3 +d7312830 VRGATHERVI $16, V2, V0, V3 +73000000 ECALL +93020080 ADDI $-2048, X0, X5 +03830200 MOVB (X5), X6 +23305300 MOV X5, (X6) +23205300 MOVW X5, (X6) +d3000020 MOVF F0, F1 +27b20200 MOVD F0, 4(X5) +93c2f2ff NOT X5, X5 +6fe06f9f JMP -1922(PC) +63840200 BEQZ X5, 2(PC) +63745300 BGEU X6, X5, 2(PC) +d3200020 FABSS F0, F1 +d3a200a2 FEQD F0, F1, X5