1 package amd64
2
3 import (
4 "fmt"
5 "math"
6 "testing"
7
8 "github.com/tetratelabs/wazero/internal/asm"
9 "github.com/tetratelabs/wazero/internal/testing/require"
10 )
11
12 func TestAssemblerImpl_Assemble_NOPPadding_fusedJumps(t *testing.T) {
13 tests := []struct {
14 name string
15 setupFn func(assembler Assembler)
16 jmpInstToExpectedBytes map[string][]byte
17 }{
18 {
19 name: "CMPL(register to const)",
20 setupFn: func(assembler Assembler) {
21 assembler.CompileRegisterToConst(CMPL, RegAX, math.MaxInt16)
22 },
23 jmpInstToExpectedBytes: map[string][]uint8{
24 "JCC": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x0, 0xc3},
25 "JCS": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x0, 0xc3},
26 "JEQ": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x0, 0xc3},
27 "JGE": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x0, 0xc3},
28 "JGT": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0xc3},
29 "JHI": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x0, 0xc3},
30 "JLE": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x0, 0xc3},
31 "JLS": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x0, 0xc3},
32 "JLT": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x0, 0xc3},
33 "JMI": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x4d, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x46, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x3f, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x38, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x31, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x2a, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x23, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x1c, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x0, 0xc3},
34 "JNE": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x55, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x4e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x47, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x40, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x35, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x2e, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x27, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x20, 0xf, 0x1f, 0x40, 0x0, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x0, 0xc3},
35 "JPC": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x4d, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x46, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x3f, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x38, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x31, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x2a, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x23, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x1c, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x0, 0xc3},
36 "JPS": {0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x4d, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x46, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x3f, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x38, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x31, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x2a, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x23, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x1c, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x15, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0xe, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x7, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x0, 0xc3},
37 },
38 },
39 {
40 name: "CMPL(memory to const)",
41 setupFn: func(assembler Assembler) {
42 assembler.CompileMemoryToConst(CMPL, RegAX, 1, 10)
43 },
44 jmpInstToExpectedBytes: map[string][]uint8{
45 "JCC": {0x83, 0x78, 0x1, 0xa, 0x73, 0x42, 0x83, 0x78, 0x1, 0xa, 0x73, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x73, 0x36, 0x83, 0x78, 0x1, 0xa, 0x73, 0x30, 0x83, 0x78, 0x1, 0xa, 0x73, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x73, 0x24, 0x83, 0x78, 0x1, 0xa, 0x73, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x73, 0x18, 0x83, 0x78, 0x1, 0xa, 0x73, 0x12, 0x83, 0x78, 0x1, 0xa, 0x73, 0xc, 0x83, 0x78, 0x1, 0xa, 0x73, 0x6, 0x83, 0x78, 0x1, 0xa, 0x73, 0x0, 0xc3},
46 "JCS": {0x83, 0x78, 0x1, 0xa, 0x72, 0x42, 0x83, 0x78, 0x1, 0xa, 0x72, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x72, 0x36, 0x83, 0x78, 0x1, 0xa, 0x72, 0x30, 0x83, 0x78, 0x1, 0xa, 0x72, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x72, 0x24, 0x83, 0x78, 0x1, 0xa, 0x72, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x72, 0x18, 0x83, 0x78, 0x1, 0xa, 0x72, 0x12, 0x83, 0x78, 0x1, 0xa, 0x72, 0xc, 0x83, 0x78, 0x1, 0xa, 0x72, 0x6, 0x83, 0x78, 0x1, 0xa, 0x72, 0x0, 0xc3},
47 "JEQ": {0x83, 0x78, 0x1, 0xa, 0x74, 0x42, 0x83, 0x78, 0x1, 0xa, 0x74, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x74, 0x36, 0x83, 0x78, 0x1, 0xa, 0x74, 0x30, 0x83, 0x78, 0x1, 0xa, 0x74, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x74, 0x24, 0x83, 0x78, 0x1, 0xa, 0x74, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x74, 0x18, 0x83, 0x78, 0x1, 0xa, 0x74, 0x12, 0x83, 0x78, 0x1, 0xa, 0x74, 0xc, 0x83, 0x78, 0x1, 0xa, 0x74, 0x6, 0x83, 0x78, 0x1, 0xa, 0x74, 0x0, 0xc3},
48 "JGE": {0x83, 0x78, 0x1, 0xa, 0x7d, 0x42, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x36, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x30, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x24, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x18, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x12, 0x83, 0x78, 0x1, 0xa, 0x7d, 0xc, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x6, 0x83, 0x78, 0x1, 0xa, 0x7d, 0x0, 0xc3},
49 "JGT": {0x83, 0x78, 0x1, 0xa, 0x7f, 0x42, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x36, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x30, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x24, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x18, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x12, 0x83, 0x78, 0x1, 0xa, 0x7f, 0xc, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x6, 0x83, 0x78, 0x1, 0xa, 0x7f, 0x0, 0xc3},
50 "JHI": {0x83, 0x78, 0x1, 0xa, 0x77, 0x42, 0x83, 0x78, 0x1, 0xa, 0x77, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x77, 0x36, 0x83, 0x78, 0x1, 0xa, 0x77, 0x30, 0x83, 0x78, 0x1, 0xa, 0x77, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x77, 0x24, 0x83, 0x78, 0x1, 0xa, 0x77, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x77, 0x18, 0x83, 0x78, 0x1, 0xa, 0x77, 0x12, 0x83, 0x78, 0x1, 0xa, 0x77, 0xc, 0x83, 0x78, 0x1, 0xa, 0x77, 0x6, 0x83, 0x78, 0x1, 0xa, 0x77, 0x0, 0xc3},
51 "JLE": {0x83, 0x78, 0x1, 0xa, 0x7e, 0x42, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x36, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x30, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x24, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x18, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x12, 0x83, 0x78, 0x1, 0xa, 0x7e, 0xc, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x6, 0x83, 0x78, 0x1, 0xa, 0x7e, 0x0, 0xc3},
52 "JLS": {0x83, 0x78, 0x1, 0xa, 0x76, 0x42, 0x83, 0x78, 0x1, 0xa, 0x76, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x76, 0x36, 0x83, 0x78, 0x1, 0xa, 0x76, 0x30, 0x83, 0x78, 0x1, 0xa, 0x76, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x76, 0x24, 0x83, 0x78, 0x1, 0xa, 0x76, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x76, 0x18, 0x83, 0x78, 0x1, 0xa, 0x76, 0x12, 0x83, 0x78, 0x1, 0xa, 0x76, 0xc, 0x83, 0x78, 0x1, 0xa, 0x76, 0x6, 0x83, 0x78, 0x1, 0xa, 0x76, 0x0, 0xc3},
53 "JLT": {0x83, 0x78, 0x1, 0xa, 0x7c, 0x42, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x36, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x30, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x24, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x18, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x12, 0x83, 0x78, 0x1, 0xa, 0x7c, 0xc, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x6, 0x83, 0x78, 0x1, 0xa, 0x7c, 0x0, 0xc3},
54 "JMI": {0x83, 0x78, 0x1, 0xa, 0x78, 0x42, 0x83, 0x78, 0x1, 0xa, 0x78, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x78, 0x36, 0x83, 0x78, 0x1, 0xa, 0x78, 0x30, 0x83, 0x78, 0x1, 0xa, 0x78, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x78, 0x24, 0x83, 0x78, 0x1, 0xa, 0x78, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x78, 0x18, 0x83, 0x78, 0x1, 0xa, 0x78, 0x12, 0x83, 0x78, 0x1, 0xa, 0x78, 0xc, 0x83, 0x78, 0x1, 0xa, 0x78, 0x6, 0x83, 0x78, 0x1, 0xa, 0x78, 0x0, 0xc3},
55 "JNE": {0x83, 0x78, 0x1, 0xa, 0x75, 0x42, 0x83, 0x78, 0x1, 0xa, 0x75, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x75, 0x36, 0x83, 0x78, 0x1, 0xa, 0x75, 0x30, 0x83, 0x78, 0x1, 0xa, 0x75, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x75, 0x24, 0x83, 0x78, 0x1, 0xa, 0x75, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x75, 0x18, 0x83, 0x78, 0x1, 0xa, 0x75, 0x12, 0x83, 0x78, 0x1, 0xa, 0x75, 0xc, 0x83, 0x78, 0x1, 0xa, 0x75, 0x6, 0x83, 0x78, 0x1, 0xa, 0x75, 0x0, 0xc3},
56 "JPC": {0x83, 0x78, 0x1, 0xa, 0x7b, 0x42, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x36, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x30, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x24, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x18, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x12, 0x83, 0x78, 0x1, 0xa, 0x7b, 0xc, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x6, 0x83, 0x78, 0x1, 0xa, 0x7b, 0x0, 0xc3},
57 "JPS": {0x83, 0x78, 0x1, 0xa, 0x7a, 0x42, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x3c, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x36, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x30, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x2a, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x24, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x1e, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x18, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x12, 0x83, 0x78, 0x1, 0xa, 0x7a, 0xc, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x6, 0x83, 0x78, 0x1, 0xa, 0x7a, 0x0, 0xc3},
58 },
59 },
60 {
61 name: "CMPL(register to register)",
62 setupFn: func(assembler Assembler) {
63 assembler.CompileRegisterToRegister(CMPL, RegR14, RegR10)
64 },
65 jmpInstToExpectedBytes: map[string][]uint8{
66 "JCC": {0x45, 0x39, 0xd6, 0x73, 0x39, 0x45, 0x39, 0xd6, 0x73, 0x34, 0x45, 0x39, 0xd6, 0x73, 0x2f, 0x45, 0x39, 0xd6, 0x73, 0x2a, 0x45, 0x39, 0xd6, 0x73, 0x25, 0x45, 0x39, 0xd6, 0x73, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x73, 0x19, 0x45, 0x39, 0xd6, 0x73, 0x14, 0x45, 0x39, 0xd6, 0x73, 0xf, 0x45, 0x39, 0xd6, 0x73, 0xa, 0x45, 0x39, 0xd6, 0x73, 0x5, 0x45, 0x39, 0xd6, 0x73, 0x0, 0xc3},
67 "JCS": {0x45, 0x39, 0xd6, 0x72, 0x39, 0x45, 0x39, 0xd6, 0x72, 0x34, 0x45, 0x39, 0xd6, 0x72, 0x2f, 0x45, 0x39, 0xd6, 0x72, 0x2a, 0x45, 0x39, 0xd6, 0x72, 0x25, 0x45, 0x39, 0xd6, 0x72, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x72, 0x19, 0x45, 0x39, 0xd6, 0x72, 0x14, 0x45, 0x39, 0xd6, 0x72, 0xf, 0x45, 0x39, 0xd6, 0x72, 0xa, 0x45, 0x39, 0xd6, 0x72, 0x5, 0x45, 0x39, 0xd6, 0x72, 0x0, 0xc3},
68 "JEQ": {0x45, 0x39, 0xd6, 0x74, 0x39, 0x45, 0x39, 0xd6, 0x74, 0x34, 0x45, 0x39, 0xd6, 0x74, 0x2f, 0x45, 0x39, 0xd6, 0x74, 0x2a, 0x45, 0x39, 0xd6, 0x74, 0x25, 0x45, 0x39, 0xd6, 0x74, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x74, 0x19, 0x45, 0x39, 0xd6, 0x74, 0x14, 0x45, 0x39, 0xd6, 0x74, 0xf, 0x45, 0x39, 0xd6, 0x74, 0xa, 0x45, 0x39, 0xd6, 0x74, 0x5, 0x45, 0x39, 0xd6, 0x74, 0x0, 0xc3},
69 "JGE": {0x45, 0x39, 0xd6, 0x7d, 0x39, 0x45, 0x39, 0xd6, 0x7d, 0x34, 0x45, 0x39, 0xd6, 0x7d, 0x2f, 0x45, 0x39, 0xd6, 0x7d, 0x2a, 0x45, 0x39, 0xd6, 0x7d, 0x25, 0x45, 0x39, 0xd6, 0x7d, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x7d, 0x19, 0x45, 0x39, 0xd6, 0x7d, 0x14, 0x45, 0x39, 0xd6, 0x7d, 0xf, 0x45, 0x39, 0xd6, 0x7d, 0xa, 0x45, 0x39, 0xd6, 0x7d, 0x5, 0x45, 0x39, 0xd6, 0x7d, 0x0, 0xc3},
70 "JGT": {0x45, 0x39, 0xd6, 0x7f, 0x39, 0x45, 0x39, 0xd6, 0x7f, 0x34, 0x45, 0x39, 0xd6, 0x7f, 0x2f, 0x45, 0x39, 0xd6, 0x7f, 0x2a, 0x45, 0x39, 0xd6, 0x7f, 0x25, 0x45, 0x39, 0xd6, 0x7f, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x7f, 0x19, 0x45, 0x39, 0xd6, 0x7f, 0x14, 0x45, 0x39, 0xd6, 0x7f, 0xf, 0x45, 0x39, 0xd6, 0x7f, 0xa, 0x45, 0x39, 0xd6, 0x7f, 0x5, 0x45, 0x39, 0xd6, 0x7f, 0x0, 0xc3},
71 "JHI": {0x45, 0x39, 0xd6, 0x77, 0x39, 0x45, 0x39, 0xd6, 0x77, 0x34, 0x45, 0x39, 0xd6, 0x77, 0x2f, 0x45, 0x39, 0xd6, 0x77, 0x2a, 0x45, 0x39, 0xd6, 0x77, 0x25, 0x45, 0x39, 0xd6, 0x77, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x77, 0x19, 0x45, 0x39, 0xd6, 0x77, 0x14, 0x45, 0x39, 0xd6, 0x77, 0xf, 0x45, 0x39, 0xd6, 0x77, 0xa, 0x45, 0x39, 0xd6, 0x77, 0x5, 0x45, 0x39, 0xd6, 0x77, 0x0, 0xc3},
72 "JLE": {0x45, 0x39, 0xd6, 0x7e, 0x39, 0x45, 0x39, 0xd6, 0x7e, 0x34, 0x45, 0x39, 0xd6, 0x7e, 0x2f, 0x45, 0x39, 0xd6, 0x7e, 0x2a, 0x45, 0x39, 0xd6, 0x7e, 0x25, 0x45, 0x39, 0xd6, 0x7e, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x7e, 0x19, 0x45, 0x39, 0xd6, 0x7e, 0x14, 0x45, 0x39, 0xd6, 0x7e, 0xf, 0x45, 0x39, 0xd6, 0x7e, 0xa, 0x45, 0x39, 0xd6, 0x7e, 0x5, 0x45, 0x39, 0xd6, 0x7e, 0x0, 0xc3},
73 "JLS": {0x45, 0x39, 0xd6, 0x76, 0x39, 0x45, 0x39, 0xd6, 0x76, 0x34, 0x45, 0x39, 0xd6, 0x76, 0x2f, 0x45, 0x39, 0xd6, 0x76, 0x2a, 0x45, 0x39, 0xd6, 0x76, 0x25, 0x45, 0x39, 0xd6, 0x76, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x76, 0x19, 0x45, 0x39, 0xd6, 0x76, 0x14, 0x45, 0x39, 0xd6, 0x76, 0xf, 0x45, 0x39, 0xd6, 0x76, 0xa, 0x45, 0x39, 0xd6, 0x76, 0x5, 0x45, 0x39, 0xd6, 0x76, 0x0, 0xc3},
74 "JLT": {0x45, 0x39, 0xd6, 0x7c, 0x39, 0x45, 0x39, 0xd6, 0x7c, 0x34, 0x45, 0x39, 0xd6, 0x7c, 0x2f, 0x45, 0x39, 0xd6, 0x7c, 0x2a, 0x45, 0x39, 0xd6, 0x7c, 0x25, 0x45, 0x39, 0xd6, 0x7c, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x7c, 0x19, 0x45, 0x39, 0xd6, 0x7c, 0x14, 0x45, 0x39, 0xd6, 0x7c, 0xf, 0x45, 0x39, 0xd6, 0x7c, 0xa, 0x45, 0x39, 0xd6, 0x7c, 0x5, 0x45, 0x39, 0xd6, 0x7c, 0x0, 0xc3},
75 "JMI": {0x45, 0x39, 0xd6, 0x78, 0x37, 0x45, 0x39, 0xd6, 0x78, 0x32, 0x45, 0x39, 0xd6, 0x78, 0x2d, 0x45, 0x39, 0xd6, 0x78, 0x28, 0x45, 0x39, 0xd6, 0x78, 0x23, 0x45, 0x39, 0xd6, 0x78, 0x1e, 0x45, 0x39, 0xd6, 0x78, 0x19, 0x45, 0x39, 0xd6, 0x78, 0x14, 0x45, 0x39, 0xd6, 0x78, 0xf, 0x45, 0x39, 0xd6, 0x78, 0xa, 0x45, 0x39, 0xd6, 0x78, 0x5, 0x45, 0x39, 0xd6, 0x78, 0x0, 0xc3},
76 "JNE": {0x45, 0x39, 0xd6, 0x75, 0x39, 0x45, 0x39, 0xd6, 0x75, 0x34, 0x45, 0x39, 0xd6, 0x75, 0x2f, 0x45, 0x39, 0xd6, 0x75, 0x2a, 0x45, 0x39, 0xd6, 0x75, 0x25, 0x45, 0x39, 0xd6, 0x75, 0x20, 0x66, 0x90, 0x45, 0x39, 0xd6, 0x75, 0x19, 0x45, 0x39, 0xd6, 0x75, 0x14, 0x45, 0x39, 0xd6, 0x75, 0xf, 0x45, 0x39, 0xd6, 0x75, 0xa, 0x45, 0x39, 0xd6, 0x75, 0x5, 0x45, 0x39, 0xd6, 0x75, 0x0, 0xc3},
77 "JPC": {0x45, 0x39, 0xd6, 0x7b, 0x37, 0x45, 0x39, 0xd6, 0x7b, 0x32, 0x45, 0x39, 0xd6, 0x7b, 0x2d, 0x45, 0x39, 0xd6, 0x7b, 0x28, 0x45, 0x39, 0xd6, 0x7b, 0x23, 0x45, 0x39, 0xd6, 0x7b, 0x1e, 0x45, 0x39, 0xd6, 0x7b, 0x19, 0x45, 0x39, 0xd6, 0x7b, 0x14, 0x45, 0x39, 0xd6, 0x7b, 0xf, 0x45, 0x39, 0xd6, 0x7b, 0xa, 0x45, 0x39, 0xd6, 0x7b, 0x5, 0x45, 0x39, 0xd6, 0x7b, 0x0, 0xc3},
78 "JPS": {0x45, 0x39, 0xd6, 0x7a, 0x37, 0x45, 0x39, 0xd6, 0x7a, 0x32, 0x45, 0x39, 0xd6, 0x7a, 0x2d, 0x45, 0x39, 0xd6, 0x7a, 0x28, 0x45, 0x39, 0xd6, 0x7a, 0x23, 0x45, 0x39, 0xd6, 0x7a, 0x1e, 0x45, 0x39, 0xd6, 0x7a, 0x19, 0x45, 0x39, 0xd6, 0x7a, 0x14, 0x45, 0x39, 0xd6, 0x7a, 0xf, 0x45, 0x39, 0xd6, 0x7a, 0xa, 0x45, 0x39, 0xd6, 0x7a, 0x5, 0x45, 0x39, 0xd6, 0x7a, 0x0, 0xc3},
79 },
80 },
81 {
82 name: "CMPQ(register to const)",
83 setupFn: func(assembler Assembler) {
84 assembler.CompileRegisterToConst(CMPQ, RegAX, math.MaxInt16)
85 },
86 jmpInstToExpectedBytes: map[string][]uint8{
87 "JCC": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x0, 0xc3},
88 "JCS": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x0, 0xc3},
89 "JEQ": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x0, 0xc3},
90 "JGE": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x0, 0xc3},
91 "JGT": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0xc3},
92 "JHI": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x0, 0xc3},
93 "JLE": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x0, 0xc3},
94 "JLS": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x0, 0xc3},
95 "JLT": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x0, 0xc3},
96 "JMI": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x5a, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x52, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x4a, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x66, 0x90, 0x78, 0x40, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x38, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x20, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x18, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x0, 0xc3},
97 "JNE": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x70, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x68, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x60, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x50, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x48, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x40, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x20, 0xf, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x0, 0xc3},
98 "JPC": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x5a, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x52, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x4a, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x66, 0x90, 0x7b, 0x40, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x38, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x20, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x18, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x0, 0xc3},
99 "JPS": {0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x5a, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x52, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x4a, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x66, 0x90, 0x7a, 0x40, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x38, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x30, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x28, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x20, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x18, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x10, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x8, 0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x0, 0xc3},
100 },
101 },
102 {
103 name: "CMPQ(register to register)",
104 setupFn: func(assembler Assembler) {
105 assembler.CompileRegisterToRegister(CMPQ, RegR14, RegR10)
106 },
107 jmpInstToExpectedBytes: map[string][]uint8{
108 "JCC": {0x4d, 0x39, 0xd6, 0x73, 0x39, 0x4d, 0x39, 0xd6, 0x73, 0x34, 0x4d, 0x39, 0xd6, 0x73, 0x2f, 0x4d, 0x39, 0xd6, 0x73, 0x2a, 0x4d, 0x39, 0xd6, 0x73, 0x25, 0x4d, 0x39, 0xd6, 0x73, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x73, 0x19, 0x4d, 0x39, 0xd6, 0x73, 0x14, 0x4d, 0x39, 0xd6, 0x73, 0xf, 0x4d, 0x39, 0xd6, 0x73, 0xa, 0x4d, 0x39, 0xd6, 0x73, 0x5, 0x4d, 0x39, 0xd6, 0x73, 0x0, 0xc3},
109 "JCS": {0x4d, 0x39, 0xd6, 0x72, 0x39, 0x4d, 0x39, 0xd6, 0x72, 0x34, 0x4d, 0x39, 0xd6, 0x72, 0x2f, 0x4d, 0x39, 0xd6, 0x72, 0x2a, 0x4d, 0x39, 0xd6, 0x72, 0x25, 0x4d, 0x39, 0xd6, 0x72, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x72, 0x19, 0x4d, 0x39, 0xd6, 0x72, 0x14, 0x4d, 0x39, 0xd6, 0x72, 0xf, 0x4d, 0x39, 0xd6, 0x72, 0xa, 0x4d, 0x39, 0xd6, 0x72, 0x5, 0x4d, 0x39, 0xd6, 0x72, 0x0, 0xc3},
110 "JEQ": {0x4d, 0x39, 0xd6, 0x74, 0x39, 0x4d, 0x39, 0xd6, 0x74, 0x34, 0x4d, 0x39, 0xd6, 0x74, 0x2f, 0x4d, 0x39, 0xd6, 0x74, 0x2a, 0x4d, 0x39, 0xd6, 0x74, 0x25, 0x4d, 0x39, 0xd6, 0x74, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x74, 0x19, 0x4d, 0x39, 0xd6, 0x74, 0x14, 0x4d, 0x39, 0xd6, 0x74, 0xf, 0x4d, 0x39, 0xd6, 0x74, 0xa, 0x4d, 0x39, 0xd6, 0x74, 0x5, 0x4d, 0x39, 0xd6, 0x74, 0x0, 0xc3},
111 "JGE": {0x4d, 0x39, 0xd6, 0x7d, 0x39, 0x4d, 0x39, 0xd6, 0x7d, 0x34, 0x4d, 0x39, 0xd6, 0x7d, 0x2f, 0x4d, 0x39, 0xd6, 0x7d, 0x2a, 0x4d, 0x39, 0xd6, 0x7d, 0x25, 0x4d, 0x39, 0xd6, 0x7d, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x7d, 0x19, 0x4d, 0x39, 0xd6, 0x7d, 0x14, 0x4d, 0x39, 0xd6, 0x7d, 0xf, 0x4d, 0x39, 0xd6, 0x7d, 0xa, 0x4d, 0x39, 0xd6, 0x7d, 0x5, 0x4d, 0x39, 0xd6, 0x7d, 0x0, 0xc3},
112 "JGT": {0x4d, 0x39, 0xd6, 0x7f, 0x39, 0x4d, 0x39, 0xd6, 0x7f, 0x34, 0x4d, 0x39, 0xd6, 0x7f, 0x2f, 0x4d, 0x39, 0xd6, 0x7f, 0x2a, 0x4d, 0x39, 0xd6, 0x7f, 0x25, 0x4d, 0x39, 0xd6, 0x7f, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x7f, 0x19, 0x4d, 0x39, 0xd6, 0x7f, 0x14, 0x4d, 0x39, 0xd6, 0x7f, 0xf, 0x4d, 0x39, 0xd6, 0x7f, 0xa, 0x4d, 0x39, 0xd6, 0x7f, 0x5, 0x4d, 0x39, 0xd6, 0x7f, 0x0, 0xc3},
113 "JHI": {0x4d, 0x39, 0xd6, 0x77, 0x39, 0x4d, 0x39, 0xd6, 0x77, 0x34, 0x4d, 0x39, 0xd6, 0x77, 0x2f, 0x4d, 0x39, 0xd6, 0x77, 0x2a, 0x4d, 0x39, 0xd6, 0x77, 0x25, 0x4d, 0x39, 0xd6, 0x77, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x77, 0x19, 0x4d, 0x39, 0xd6, 0x77, 0x14, 0x4d, 0x39, 0xd6, 0x77, 0xf, 0x4d, 0x39, 0xd6, 0x77, 0xa, 0x4d, 0x39, 0xd6, 0x77, 0x5, 0x4d, 0x39, 0xd6, 0x77, 0x0, 0xc3},
114 "JLE": {0x4d, 0x39, 0xd6, 0x7e, 0x39, 0x4d, 0x39, 0xd6, 0x7e, 0x34, 0x4d, 0x39, 0xd6, 0x7e, 0x2f, 0x4d, 0x39, 0xd6, 0x7e, 0x2a, 0x4d, 0x39, 0xd6, 0x7e, 0x25, 0x4d, 0x39, 0xd6, 0x7e, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x7e, 0x19, 0x4d, 0x39, 0xd6, 0x7e, 0x14, 0x4d, 0x39, 0xd6, 0x7e, 0xf, 0x4d, 0x39, 0xd6, 0x7e, 0xa, 0x4d, 0x39, 0xd6, 0x7e, 0x5, 0x4d, 0x39, 0xd6, 0x7e, 0x0, 0xc3},
115 "JLS": {0x4d, 0x39, 0xd6, 0x76, 0x39, 0x4d, 0x39, 0xd6, 0x76, 0x34, 0x4d, 0x39, 0xd6, 0x76, 0x2f, 0x4d, 0x39, 0xd6, 0x76, 0x2a, 0x4d, 0x39, 0xd6, 0x76, 0x25, 0x4d, 0x39, 0xd6, 0x76, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x76, 0x19, 0x4d, 0x39, 0xd6, 0x76, 0x14, 0x4d, 0x39, 0xd6, 0x76, 0xf, 0x4d, 0x39, 0xd6, 0x76, 0xa, 0x4d, 0x39, 0xd6, 0x76, 0x5, 0x4d, 0x39, 0xd6, 0x76, 0x0, 0xc3},
116 "JLT": {0x4d, 0x39, 0xd6, 0x7c, 0x39, 0x4d, 0x39, 0xd6, 0x7c, 0x34, 0x4d, 0x39, 0xd6, 0x7c, 0x2f, 0x4d, 0x39, 0xd6, 0x7c, 0x2a, 0x4d, 0x39, 0xd6, 0x7c, 0x25, 0x4d, 0x39, 0xd6, 0x7c, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x7c, 0x19, 0x4d, 0x39, 0xd6, 0x7c, 0x14, 0x4d, 0x39, 0xd6, 0x7c, 0xf, 0x4d, 0x39, 0xd6, 0x7c, 0xa, 0x4d, 0x39, 0xd6, 0x7c, 0x5, 0x4d, 0x39, 0xd6, 0x7c, 0x0, 0xc3},
117 "JMI": {0x4d, 0x39, 0xd6, 0x78, 0x37, 0x4d, 0x39, 0xd6, 0x78, 0x32, 0x4d, 0x39, 0xd6, 0x78, 0x2d, 0x4d, 0x39, 0xd6, 0x78, 0x28, 0x4d, 0x39, 0xd6, 0x78, 0x23, 0x4d, 0x39, 0xd6, 0x78, 0x1e, 0x4d, 0x39, 0xd6, 0x78, 0x19, 0x4d, 0x39, 0xd6, 0x78, 0x14, 0x4d, 0x39, 0xd6, 0x78, 0xf, 0x4d, 0x39, 0xd6, 0x78, 0xa, 0x4d, 0x39, 0xd6, 0x78, 0x5, 0x4d, 0x39, 0xd6, 0x78, 0x0, 0xc3},
118 "JNE": {0x4d, 0x39, 0xd6, 0x75, 0x39, 0x4d, 0x39, 0xd6, 0x75, 0x34, 0x4d, 0x39, 0xd6, 0x75, 0x2f, 0x4d, 0x39, 0xd6, 0x75, 0x2a, 0x4d, 0x39, 0xd6, 0x75, 0x25, 0x4d, 0x39, 0xd6, 0x75, 0x20, 0x66, 0x90, 0x4d, 0x39, 0xd6, 0x75, 0x19, 0x4d, 0x39, 0xd6, 0x75, 0x14, 0x4d, 0x39, 0xd6, 0x75, 0xf, 0x4d, 0x39, 0xd6, 0x75, 0xa, 0x4d, 0x39, 0xd6, 0x75, 0x5, 0x4d, 0x39, 0xd6, 0x75, 0x0, 0xc3},
119 "JPC": {0x4d, 0x39, 0xd6, 0x7b, 0x37, 0x4d, 0x39, 0xd6, 0x7b, 0x32, 0x4d, 0x39, 0xd6, 0x7b, 0x2d, 0x4d, 0x39, 0xd6, 0x7b, 0x28, 0x4d, 0x39, 0xd6, 0x7b, 0x23, 0x4d, 0x39, 0xd6, 0x7b, 0x1e, 0x4d, 0x39, 0xd6, 0x7b, 0x19, 0x4d, 0x39, 0xd6, 0x7b, 0x14, 0x4d, 0x39, 0xd6, 0x7b, 0xf, 0x4d, 0x39, 0xd6, 0x7b, 0xa, 0x4d, 0x39, 0xd6, 0x7b, 0x5, 0x4d, 0x39, 0xd6, 0x7b, 0x0, 0xc3},
120 "JPS": {0x4d, 0x39, 0xd6, 0x7a, 0x37, 0x4d, 0x39, 0xd6, 0x7a, 0x32, 0x4d, 0x39, 0xd6, 0x7a, 0x2d, 0x4d, 0x39, 0xd6, 0x7a, 0x28, 0x4d, 0x39, 0xd6, 0x7a, 0x23, 0x4d, 0x39, 0xd6, 0x7a, 0x1e, 0x4d, 0x39, 0xd6, 0x7a, 0x19, 0x4d, 0x39, 0xd6, 0x7a, 0x14, 0x4d, 0x39, 0xd6, 0x7a, 0xf, 0x4d, 0x39, 0xd6, 0x7a, 0xa, 0x4d, 0x39, 0xd6, 0x7a, 0x5, 0x4d, 0x39, 0xd6, 0x7a, 0x0, 0xc3},
121 },
122 },
123 {
124 name: "TESTL",
125 setupFn: func(assembler Assembler) {
126 assembler.CompileRegisterToRegister(TESTL, RegAX, RegAX)
127 },
128 jmpInstToExpectedBytes: map[string][]uint8{
129 "JCC": {0x85, 0xc0, 0x73, 0x30, 0x85, 0xc0, 0x73, 0x2c, 0x85, 0xc0, 0x73, 0x28, 0x85, 0xc0, 0x73, 0x24, 0x85, 0xc0, 0x73, 0x20, 0x85, 0xc0, 0x73, 0x1c, 0x85, 0xc0, 0x73, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x73, 0x10, 0x85, 0xc0, 0x73, 0xc, 0x85, 0xc0, 0x73, 0x8, 0x85, 0xc0, 0x73, 0x4, 0x85, 0xc0, 0x73, 0x0, 0xc3},
130 "JCS": {0x85, 0xc0, 0x72, 0x30, 0x85, 0xc0, 0x72, 0x2c, 0x85, 0xc0, 0x72, 0x28, 0x85, 0xc0, 0x72, 0x24, 0x85, 0xc0, 0x72, 0x20, 0x85, 0xc0, 0x72, 0x1c, 0x85, 0xc0, 0x72, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x72, 0x10, 0x85, 0xc0, 0x72, 0xc, 0x85, 0xc0, 0x72, 0x8, 0x85, 0xc0, 0x72, 0x4, 0x85, 0xc0, 0x72, 0x0, 0xc3},
131 "JEQ": {0x85, 0xc0, 0x74, 0x30, 0x85, 0xc0, 0x74, 0x2c, 0x85, 0xc0, 0x74, 0x28, 0x85, 0xc0, 0x74, 0x24, 0x85, 0xc0, 0x74, 0x20, 0x85, 0xc0, 0x74, 0x1c, 0x85, 0xc0, 0x74, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x74, 0x10, 0x85, 0xc0, 0x74, 0xc, 0x85, 0xc0, 0x74, 0x8, 0x85, 0xc0, 0x74, 0x4, 0x85, 0xc0, 0x74, 0x0, 0xc3},
132 "JGE": {0x85, 0xc0, 0x7d, 0x30, 0x85, 0xc0, 0x7d, 0x2c, 0x85, 0xc0, 0x7d, 0x28, 0x85, 0xc0, 0x7d, 0x24, 0x85, 0xc0, 0x7d, 0x20, 0x85, 0xc0, 0x7d, 0x1c, 0x85, 0xc0, 0x7d, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x7d, 0x10, 0x85, 0xc0, 0x7d, 0xc, 0x85, 0xc0, 0x7d, 0x8, 0x85, 0xc0, 0x7d, 0x4, 0x85, 0xc0, 0x7d, 0x0, 0xc3},
133 "JGT": {0x85, 0xc0, 0x7f, 0x30, 0x85, 0xc0, 0x7f, 0x2c, 0x85, 0xc0, 0x7f, 0x28, 0x85, 0xc0, 0x7f, 0x24, 0x85, 0xc0, 0x7f, 0x20, 0x85, 0xc0, 0x7f, 0x1c, 0x85, 0xc0, 0x7f, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x7f, 0x10, 0x85, 0xc0, 0x7f, 0xc, 0x85, 0xc0, 0x7f, 0x8, 0x85, 0xc0, 0x7f, 0x4, 0x85, 0xc0, 0x7f, 0x0, 0xc3},
134 "JHI": {0x85, 0xc0, 0x77, 0x30, 0x85, 0xc0, 0x77, 0x2c, 0x85, 0xc0, 0x77, 0x28, 0x85, 0xc0, 0x77, 0x24, 0x85, 0xc0, 0x77, 0x20, 0x85, 0xc0, 0x77, 0x1c, 0x85, 0xc0, 0x77, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x77, 0x10, 0x85, 0xc0, 0x77, 0xc, 0x85, 0xc0, 0x77, 0x8, 0x85, 0xc0, 0x77, 0x4, 0x85, 0xc0, 0x77, 0x0, 0xc3},
135 "JLE": {0x85, 0xc0, 0x7e, 0x30, 0x85, 0xc0, 0x7e, 0x2c, 0x85, 0xc0, 0x7e, 0x28, 0x85, 0xc0, 0x7e, 0x24, 0x85, 0xc0, 0x7e, 0x20, 0x85, 0xc0, 0x7e, 0x1c, 0x85, 0xc0, 0x7e, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x7e, 0x10, 0x85, 0xc0, 0x7e, 0xc, 0x85, 0xc0, 0x7e, 0x8, 0x85, 0xc0, 0x7e, 0x4, 0x85, 0xc0, 0x7e, 0x0, 0xc3},
136 "JLS": {0x85, 0xc0, 0x76, 0x30, 0x85, 0xc0, 0x76, 0x2c, 0x85, 0xc0, 0x76, 0x28, 0x85, 0xc0, 0x76, 0x24, 0x85, 0xc0, 0x76, 0x20, 0x85, 0xc0, 0x76, 0x1c, 0x85, 0xc0, 0x76, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x76, 0x10, 0x85, 0xc0, 0x76, 0xc, 0x85, 0xc0, 0x76, 0x8, 0x85, 0xc0, 0x76, 0x4, 0x85, 0xc0, 0x76, 0x0, 0xc3},
137 "JLT": {0x85, 0xc0, 0x7c, 0x30, 0x85, 0xc0, 0x7c, 0x2c, 0x85, 0xc0, 0x7c, 0x28, 0x85, 0xc0, 0x7c, 0x24, 0x85, 0xc0, 0x7c, 0x20, 0x85, 0xc0, 0x7c, 0x1c, 0x85, 0xc0, 0x7c, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x7c, 0x10, 0x85, 0xc0, 0x7c, 0xc, 0x85, 0xc0, 0x7c, 0x8, 0x85, 0xc0, 0x7c, 0x4, 0x85, 0xc0, 0x7c, 0x0, 0xc3},
138 "JMI": {0x85, 0xc0, 0x78, 0x30, 0x85, 0xc0, 0x78, 0x2c, 0x85, 0xc0, 0x78, 0x28, 0x85, 0xc0, 0x78, 0x24, 0x85, 0xc0, 0x78, 0x20, 0x85, 0xc0, 0x78, 0x1c, 0x85, 0xc0, 0x78, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x78, 0x10, 0x85, 0xc0, 0x78, 0xc, 0x85, 0xc0, 0x78, 0x8, 0x85, 0xc0, 0x78, 0x4, 0x85, 0xc0, 0x78, 0x0, 0xc3},
139 "JNE": {0x85, 0xc0, 0x75, 0x30, 0x85, 0xc0, 0x75, 0x2c, 0x85, 0xc0, 0x75, 0x28, 0x85, 0xc0, 0x75, 0x24, 0x85, 0xc0, 0x75, 0x20, 0x85, 0xc0, 0x75, 0x1c, 0x85, 0xc0, 0x75, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x75, 0x10, 0x85, 0xc0, 0x75, 0xc, 0x85, 0xc0, 0x75, 0x8, 0x85, 0xc0, 0x75, 0x4, 0x85, 0xc0, 0x75, 0x0, 0xc3},
140 "JPC": {0x85, 0xc0, 0x7b, 0x30, 0x85, 0xc0, 0x7b, 0x2c, 0x85, 0xc0, 0x7b, 0x28, 0x85, 0xc0, 0x7b, 0x24, 0x85, 0xc0, 0x7b, 0x20, 0x85, 0xc0, 0x7b, 0x1c, 0x85, 0xc0, 0x7b, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x7b, 0x10, 0x85, 0xc0, 0x7b, 0xc, 0x85, 0xc0, 0x7b, 0x8, 0x85, 0xc0, 0x7b, 0x4, 0x85, 0xc0, 0x7b, 0x0, 0xc3},
141 "JPS": {0x85, 0xc0, 0x7a, 0x30, 0x85, 0xc0, 0x7a, 0x2c, 0x85, 0xc0, 0x7a, 0x28, 0x85, 0xc0, 0x7a, 0x24, 0x85, 0xc0, 0x7a, 0x20, 0x85, 0xc0, 0x7a, 0x1c, 0x85, 0xc0, 0x7a, 0x18, 0xf, 0x1f, 0x40, 0x0, 0x85, 0xc0, 0x7a, 0x10, 0x85, 0xc0, 0x7a, 0xc, 0x85, 0xc0, 0x7a, 0x8, 0x85, 0xc0, 0x7a, 0x4, 0x85, 0xc0, 0x7a, 0x0, 0xc3},
142 },
143 },
144 {
145 name: "TESTQ",
146 setupFn: func(assembler Assembler) {
147 assembler.CompileRegisterToRegister(TESTQ, RegAX, RegAX)
148 },
149 jmpInstToExpectedBytes: map[string][]uint8{
150 "JCC": {0x48, 0x85, 0xc0, 0x73, 0x39, 0x48, 0x85, 0xc0, 0x73, 0x34, 0x48, 0x85, 0xc0, 0x73, 0x2f, 0x48, 0x85, 0xc0, 0x73, 0x2a, 0x48, 0x85, 0xc0, 0x73, 0x25, 0x48, 0x85, 0xc0, 0x73, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x73, 0x19, 0x48, 0x85, 0xc0, 0x73, 0x14, 0x48, 0x85, 0xc0, 0x73, 0xf, 0x48, 0x85, 0xc0, 0x73, 0xa, 0x48, 0x85, 0xc0, 0x73, 0x5, 0x48, 0x85, 0xc0, 0x73, 0x0, 0xc3},
151 "JCS": {0x48, 0x85, 0xc0, 0x72, 0x39, 0x48, 0x85, 0xc0, 0x72, 0x34, 0x48, 0x85, 0xc0, 0x72, 0x2f, 0x48, 0x85, 0xc0, 0x72, 0x2a, 0x48, 0x85, 0xc0, 0x72, 0x25, 0x48, 0x85, 0xc0, 0x72, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x72, 0x19, 0x48, 0x85, 0xc0, 0x72, 0x14, 0x48, 0x85, 0xc0, 0x72, 0xf, 0x48, 0x85, 0xc0, 0x72, 0xa, 0x48, 0x85, 0xc0, 0x72, 0x5, 0x48, 0x85, 0xc0, 0x72, 0x0, 0xc3},
152 "JEQ": {0x48, 0x85, 0xc0, 0x74, 0x39, 0x48, 0x85, 0xc0, 0x74, 0x34, 0x48, 0x85, 0xc0, 0x74, 0x2f, 0x48, 0x85, 0xc0, 0x74, 0x2a, 0x48, 0x85, 0xc0, 0x74, 0x25, 0x48, 0x85, 0xc0, 0x74, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x74, 0x19, 0x48, 0x85, 0xc0, 0x74, 0x14, 0x48, 0x85, 0xc0, 0x74, 0xf, 0x48, 0x85, 0xc0, 0x74, 0xa, 0x48, 0x85, 0xc0, 0x74, 0x5, 0x48, 0x85, 0xc0, 0x74, 0x0, 0xc3},
153 "JGE": {0x48, 0x85, 0xc0, 0x7d, 0x39, 0x48, 0x85, 0xc0, 0x7d, 0x34, 0x48, 0x85, 0xc0, 0x7d, 0x2f, 0x48, 0x85, 0xc0, 0x7d, 0x2a, 0x48, 0x85, 0xc0, 0x7d, 0x25, 0x48, 0x85, 0xc0, 0x7d, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x7d, 0x19, 0x48, 0x85, 0xc0, 0x7d, 0x14, 0x48, 0x85, 0xc0, 0x7d, 0xf, 0x48, 0x85, 0xc0, 0x7d, 0xa, 0x48, 0x85, 0xc0, 0x7d, 0x5, 0x48, 0x85, 0xc0, 0x7d, 0x0, 0xc3},
154 "JGT": {0x48, 0x85, 0xc0, 0x7f, 0x39, 0x48, 0x85, 0xc0, 0x7f, 0x34, 0x48, 0x85, 0xc0, 0x7f, 0x2f, 0x48, 0x85, 0xc0, 0x7f, 0x2a, 0x48, 0x85, 0xc0, 0x7f, 0x25, 0x48, 0x85, 0xc0, 0x7f, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x7f, 0x19, 0x48, 0x85, 0xc0, 0x7f, 0x14, 0x48, 0x85, 0xc0, 0x7f, 0xf, 0x48, 0x85, 0xc0, 0x7f, 0xa, 0x48, 0x85, 0xc0, 0x7f, 0x5, 0x48, 0x85, 0xc0, 0x7f, 0x0, 0xc3},
155 "JHI": {0x48, 0x85, 0xc0, 0x77, 0x39, 0x48, 0x85, 0xc0, 0x77, 0x34, 0x48, 0x85, 0xc0, 0x77, 0x2f, 0x48, 0x85, 0xc0, 0x77, 0x2a, 0x48, 0x85, 0xc0, 0x77, 0x25, 0x48, 0x85, 0xc0, 0x77, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x77, 0x19, 0x48, 0x85, 0xc0, 0x77, 0x14, 0x48, 0x85, 0xc0, 0x77, 0xf, 0x48, 0x85, 0xc0, 0x77, 0xa, 0x48, 0x85, 0xc0, 0x77, 0x5, 0x48, 0x85, 0xc0, 0x77, 0x0, 0xc3},
156 "JLE": {0x48, 0x85, 0xc0, 0x7e, 0x39, 0x48, 0x85, 0xc0, 0x7e, 0x34, 0x48, 0x85, 0xc0, 0x7e, 0x2f, 0x48, 0x85, 0xc0, 0x7e, 0x2a, 0x48, 0x85, 0xc0, 0x7e, 0x25, 0x48, 0x85, 0xc0, 0x7e, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x7e, 0x19, 0x48, 0x85, 0xc0, 0x7e, 0x14, 0x48, 0x85, 0xc0, 0x7e, 0xf, 0x48, 0x85, 0xc0, 0x7e, 0xa, 0x48, 0x85, 0xc0, 0x7e, 0x5, 0x48, 0x85, 0xc0, 0x7e, 0x0, 0xc3},
157 "JLS": {0x48, 0x85, 0xc0, 0x76, 0x39, 0x48, 0x85, 0xc0, 0x76, 0x34, 0x48, 0x85, 0xc0, 0x76, 0x2f, 0x48, 0x85, 0xc0, 0x76, 0x2a, 0x48, 0x85, 0xc0, 0x76, 0x25, 0x48, 0x85, 0xc0, 0x76, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x76, 0x19, 0x48, 0x85, 0xc0, 0x76, 0x14, 0x48, 0x85, 0xc0, 0x76, 0xf, 0x48, 0x85, 0xc0, 0x76, 0xa, 0x48, 0x85, 0xc0, 0x76, 0x5, 0x48, 0x85, 0xc0, 0x76, 0x0, 0xc3},
158 "JLT": {0x48, 0x85, 0xc0, 0x7c, 0x39, 0x48, 0x85, 0xc0, 0x7c, 0x34, 0x48, 0x85, 0xc0, 0x7c, 0x2f, 0x48, 0x85, 0xc0, 0x7c, 0x2a, 0x48, 0x85, 0xc0, 0x7c, 0x25, 0x48, 0x85, 0xc0, 0x7c, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x7c, 0x19, 0x48, 0x85, 0xc0, 0x7c, 0x14, 0x48, 0x85, 0xc0, 0x7c, 0xf, 0x48, 0x85, 0xc0, 0x7c, 0xa, 0x48, 0x85, 0xc0, 0x7c, 0x5, 0x48, 0x85, 0xc0, 0x7c, 0x0, 0xc3},
159 "JMI": {0x48, 0x85, 0xc0, 0x78, 0x39, 0x48, 0x85, 0xc0, 0x78, 0x34, 0x48, 0x85, 0xc0, 0x78, 0x2f, 0x48, 0x85, 0xc0, 0x78, 0x2a, 0x48, 0x85, 0xc0, 0x78, 0x25, 0x48, 0x85, 0xc0, 0x78, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x78, 0x19, 0x48, 0x85, 0xc0, 0x78, 0x14, 0x48, 0x85, 0xc0, 0x78, 0xf, 0x48, 0x85, 0xc0, 0x78, 0xa, 0x48, 0x85, 0xc0, 0x78, 0x5, 0x48, 0x85, 0xc0, 0x78, 0x0, 0xc3},
160 "JNE": {0x48, 0x85, 0xc0, 0x75, 0x39, 0x48, 0x85, 0xc0, 0x75, 0x34, 0x48, 0x85, 0xc0, 0x75, 0x2f, 0x48, 0x85, 0xc0, 0x75, 0x2a, 0x48, 0x85, 0xc0, 0x75, 0x25, 0x48, 0x85, 0xc0, 0x75, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x75, 0x19, 0x48, 0x85, 0xc0, 0x75, 0x14, 0x48, 0x85, 0xc0, 0x75, 0xf, 0x48, 0x85, 0xc0, 0x75, 0xa, 0x48, 0x85, 0xc0, 0x75, 0x5, 0x48, 0x85, 0xc0, 0x75, 0x0, 0xc3},
161 "JPC": {0x48, 0x85, 0xc0, 0x7b, 0x39, 0x48, 0x85, 0xc0, 0x7b, 0x34, 0x48, 0x85, 0xc0, 0x7b, 0x2f, 0x48, 0x85, 0xc0, 0x7b, 0x2a, 0x48, 0x85, 0xc0, 0x7b, 0x25, 0x48, 0x85, 0xc0, 0x7b, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x7b, 0x19, 0x48, 0x85, 0xc0, 0x7b, 0x14, 0x48, 0x85, 0xc0, 0x7b, 0xf, 0x48, 0x85, 0xc0, 0x7b, 0xa, 0x48, 0x85, 0xc0, 0x7b, 0x5, 0x48, 0x85, 0xc0, 0x7b, 0x0, 0xc3},
162 "JPS": {0x48, 0x85, 0xc0, 0x7a, 0x39, 0x48, 0x85, 0xc0, 0x7a, 0x34, 0x48, 0x85, 0xc0, 0x7a, 0x2f, 0x48, 0x85, 0xc0, 0x7a, 0x2a, 0x48, 0x85, 0xc0, 0x7a, 0x25, 0x48, 0x85, 0xc0, 0x7a, 0x20, 0x66, 0x90, 0x48, 0x85, 0xc0, 0x7a, 0x19, 0x48, 0x85, 0xc0, 0x7a, 0x14, 0x48, 0x85, 0xc0, 0x7a, 0xf, 0x48, 0x85, 0xc0, 0x7a, 0xa, 0x48, 0x85, 0xc0, 0x7a, 0x5, 0x48, 0x85, 0xc0, 0x7a, 0x0, 0xc3},
163 },
164 },
165 {
166 name: "ADDL (register to register)",
167 setupFn: func(assembler Assembler) {
168 assembler.CompileRegisterToRegister(ADDL, RegR10, RegAX)
169 },
170 jmpInstToExpectedBytes: map[string][]uint8{
171 "JCC": {0x44, 0x1, 0xd0, 0x73, 0x39, 0x44, 0x1, 0xd0, 0x73, 0x34, 0x44, 0x1, 0xd0, 0x73, 0x2f, 0x44, 0x1, 0xd0, 0x73, 0x2a, 0x44, 0x1, 0xd0, 0x73, 0x25, 0x44, 0x1, 0xd0, 0x73, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x73, 0x19, 0x44, 0x1, 0xd0, 0x73, 0x14, 0x44, 0x1, 0xd0, 0x73, 0xf, 0x44, 0x1, 0xd0, 0x73, 0xa, 0x44, 0x1, 0xd0, 0x73, 0x5, 0x44, 0x1, 0xd0, 0x73, 0x0, 0xc3},
172 "JCS": {0x44, 0x1, 0xd0, 0x72, 0x39, 0x44, 0x1, 0xd0, 0x72, 0x34, 0x44, 0x1, 0xd0, 0x72, 0x2f, 0x44, 0x1, 0xd0, 0x72, 0x2a, 0x44, 0x1, 0xd0, 0x72, 0x25, 0x44, 0x1, 0xd0, 0x72, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x72, 0x19, 0x44, 0x1, 0xd0, 0x72, 0x14, 0x44, 0x1, 0xd0, 0x72, 0xf, 0x44, 0x1, 0xd0, 0x72, 0xa, 0x44, 0x1, 0xd0, 0x72, 0x5, 0x44, 0x1, 0xd0, 0x72, 0x0, 0xc3},
173 "JEQ": {0x44, 0x1, 0xd0, 0x74, 0x39, 0x44, 0x1, 0xd0, 0x74, 0x34, 0x44, 0x1, 0xd0, 0x74, 0x2f, 0x44, 0x1, 0xd0, 0x74, 0x2a, 0x44, 0x1, 0xd0, 0x74, 0x25, 0x44, 0x1, 0xd0, 0x74, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x74, 0x19, 0x44, 0x1, 0xd0, 0x74, 0x14, 0x44, 0x1, 0xd0, 0x74, 0xf, 0x44, 0x1, 0xd0, 0x74, 0xa, 0x44, 0x1, 0xd0, 0x74, 0x5, 0x44, 0x1, 0xd0, 0x74, 0x0, 0xc3},
174 "JGE": {0x44, 0x1, 0xd0, 0x7d, 0x39, 0x44, 0x1, 0xd0, 0x7d, 0x34, 0x44, 0x1, 0xd0, 0x7d, 0x2f, 0x44, 0x1, 0xd0, 0x7d, 0x2a, 0x44, 0x1, 0xd0, 0x7d, 0x25, 0x44, 0x1, 0xd0, 0x7d, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x7d, 0x19, 0x44, 0x1, 0xd0, 0x7d, 0x14, 0x44, 0x1, 0xd0, 0x7d, 0xf, 0x44, 0x1, 0xd0, 0x7d, 0xa, 0x44, 0x1, 0xd0, 0x7d, 0x5, 0x44, 0x1, 0xd0, 0x7d, 0x0, 0xc3},
175 "JGT": {0x44, 0x1, 0xd0, 0x7f, 0x39, 0x44, 0x1, 0xd0, 0x7f, 0x34, 0x44, 0x1, 0xd0, 0x7f, 0x2f, 0x44, 0x1, 0xd0, 0x7f, 0x2a, 0x44, 0x1, 0xd0, 0x7f, 0x25, 0x44, 0x1, 0xd0, 0x7f, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x7f, 0x19, 0x44, 0x1, 0xd0, 0x7f, 0x14, 0x44, 0x1, 0xd0, 0x7f, 0xf, 0x44, 0x1, 0xd0, 0x7f, 0xa, 0x44, 0x1, 0xd0, 0x7f, 0x5, 0x44, 0x1, 0xd0, 0x7f, 0x0, 0xc3},
176 "JHI": {0x44, 0x1, 0xd0, 0x77, 0x39, 0x44, 0x1, 0xd0, 0x77, 0x34, 0x44, 0x1, 0xd0, 0x77, 0x2f, 0x44, 0x1, 0xd0, 0x77, 0x2a, 0x44, 0x1, 0xd0, 0x77, 0x25, 0x44, 0x1, 0xd0, 0x77, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x77, 0x19, 0x44, 0x1, 0xd0, 0x77, 0x14, 0x44, 0x1, 0xd0, 0x77, 0xf, 0x44, 0x1, 0xd0, 0x77, 0xa, 0x44, 0x1, 0xd0, 0x77, 0x5, 0x44, 0x1, 0xd0, 0x77, 0x0, 0xc3},
177 "JLE": {0x44, 0x1, 0xd0, 0x7e, 0x39, 0x44, 0x1, 0xd0, 0x7e, 0x34, 0x44, 0x1, 0xd0, 0x7e, 0x2f, 0x44, 0x1, 0xd0, 0x7e, 0x2a, 0x44, 0x1, 0xd0, 0x7e, 0x25, 0x44, 0x1, 0xd0, 0x7e, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x7e, 0x19, 0x44, 0x1, 0xd0, 0x7e, 0x14, 0x44, 0x1, 0xd0, 0x7e, 0xf, 0x44, 0x1, 0xd0, 0x7e, 0xa, 0x44, 0x1, 0xd0, 0x7e, 0x5, 0x44, 0x1, 0xd0, 0x7e, 0x0, 0xc3},
178 "JLS": {0x44, 0x1, 0xd0, 0x76, 0x39, 0x44, 0x1, 0xd0, 0x76, 0x34, 0x44, 0x1, 0xd0, 0x76, 0x2f, 0x44, 0x1, 0xd0, 0x76, 0x2a, 0x44, 0x1, 0xd0, 0x76, 0x25, 0x44, 0x1, 0xd0, 0x76, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x76, 0x19, 0x44, 0x1, 0xd0, 0x76, 0x14, 0x44, 0x1, 0xd0, 0x76, 0xf, 0x44, 0x1, 0xd0, 0x76, 0xa, 0x44, 0x1, 0xd0, 0x76, 0x5, 0x44, 0x1, 0xd0, 0x76, 0x0, 0xc3},
179 "JLT": {0x44, 0x1, 0xd0, 0x7c, 0x39, 0x44, 0x1, 0xd0, 0x7c, 0x34, 0x44, 0x1, 0xd0, 0x7c, 0x2f, 0x44, 0x1, 0xd0, 0x7c, 0x2a, 0x44, 0x1, 0xd0, 0x7c, 0x25, 0x44, 0x1, 0xd0, 0x7c, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x7c, 0x19, 0x44, 0x1, 0xd0, 0x7c, 0x14, 0x44, 0x1, 0xd0, 0x7c, 0xf, 0x44, 0x1, 0xd0, 0x7c, 0xa, 0x44, 0x1, 0xd0, 0x7c, 0x5, 0x44, 0x1, 0xd0, 0x7c, 0x0, 0xc3},
180 "JMI": {0x44, 0x1, 0xd0, 0x78, 0x37, 0x44, 0x1, 0xd0, 0x78, 0x32, 0x44, 0x1, 0xd0, 0x78, 0x2d, 0x44, 0x1, 0xd0, 0x78, 0x28, 0x44, 0x1, 0xd0, 0x78, 0x23, 0x44, 0x1, 0xd0, 0x78, 0x1e, 0x44, 0x1, 0xd0, 0x78, 0x19, 0x44, 0x1, 0xd0, 0x78, 0x14, 0x44, 0x1, 0xd0, 0x78, 0xf, 0x44, 0x1, 0xd0, 0x78, 0xa, 0x44, 0x1, 0xd0, 0x78, 0x5, 0x44, 0x1, 0xd0, 0x78, 0x0, 0xc3},
181 "JNE": {0x44, 0x1, 0xd0, 0x75, 0x39, 0x44, 0x1, 0xd0, 0x75, 0x34, 0x44, 0x1, 0xd0, 0x75, 0x2f, 0x44, 0x1, 0xd0, 0x75, 0x2a, 0x44, 0x1, 0xd0, 0x75, 0x25, 0x44, 0x1, 0xd0, 0x75, 0x20, 0x66, 0x90, 0x44, 0x1, 0xd0, 0x75, 0x19, 0x44, 0x1, 0xd0, 0x75, 0x14, 0x44, 0x1, 0xd0, 0x75, 0xf, 0x44, 0x1, 0xd0, 0x75, 0xa, 0x44, 0x1, 0xd0, 0x75, 0x5, 0x44, 0x1, 0xd0, 0x75, 0x0, 0xc3},
182 "JPC": {0x44, 0x1, 0xd0, 0x7b, 0x37, 0x44, 0x1, 0xd0, 0x7b, 0x32, 0x44, 0x1, 0xd0, 0x7b, 0x2d, 0x44, 0x1, 0xd0, 0x7b, 0x28, 0x44, 0x1, 0xd0, 0x7b, 0x23, 0x44, 0x1, 0xd0, 0x7b, 0x1e, 0x44, 0x1, 0xd0, 0x7b, 0x19, 0x44, 0x1, 0xd0, 0x7b, 0x14, 0x44, 0x1, 0xd0, 0x7b, 0xf, 0x44, 0x1, 0xd0, 0x7b, 0xa, 0x44, 0x1, 0xd0, 0x7b, 0x5, 0x44, 0x1, 0xd0, 0x7b, 0x0, 0xc3},
183 "JPS": {0x44, 0x1, 0xd0, 0x7a, 0x37, 0x44, 0x1, 0xd0, 0x7a, 0x32, 0x44, 0x1, 0xd0, 0x7a, 0x2d, 0x44, 0x1, 0xd0, 0x7a, 0x28, 0x44, 0x1, 0xd0, 0x7a, 0x23, 0x44, 0x1, 0xd0, 0x7a, 0x1e, 0x44, 0x1, 0xd0, 0x7a, 0x19, 0x44, 0x1, 0xd0, 0x7a, 0x14, 0x44, 0x1, 0xd0, 0x7a, 0xf, 0x44, 0x1, 0xd0, 0x7a, 0xa, 0x44, 0x1, 0xd0, 0x7a, 0x5, 0x44, 0x1, 0xd0, 0x7a, 0x0, 0xc3},
184 },
185 },
186 {
187 name: "ADDL(memory to register)",
188 setupFn: func(assembler Assembler) {
189 assembler.CompileMemoryToRegister(ADDL, RegR10, 1234, RegAX)
190 },
191 jmpInstToExpectedBytes: map[string][]uint8{
192 "JCC": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x0, 0xc3},
193 "JCS": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x0, 0xc3},
194 "JEQ": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x0, 0xc3},
195 "JGE": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x0, 0xc3},
196 "JGT": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x0, 0xc3},
197 "JHI": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x0, 0xc3},
198 "JLE": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x0, 0xc3},
199 "JLS": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x0, 0xc3},
200 "JLT": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x0, 0xc3},
201 "JMI": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x63, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x5a, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x51, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x48, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x3f, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x36, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x2d, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x24, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x1b, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x0, 0xc3},
202 "JNE": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x72, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x69, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x52, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x49, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x32, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x29, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x0, 0xc3},
203 "JPC": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x63, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x5a, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x51, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x48, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x3f, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x36, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x2d, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x24, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x1b, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x0, 0xc3},
204 "JPS": {0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x63, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x5a, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x51, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x48, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x3f, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x36, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x2d, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x24, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x1b, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x12, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x9, 0x41, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x0, 0xc3},
205 },
206 },
207 {
208 name: "ADDQ (register to register)",
209 setupFn: func(assembler Assembler) {
210 assembler.CompileRegisterToRegister(ADDQ, RegR10, RegAX)
211 },
212 jmpInstToExpectedBytes: map[string][]uint8{
213 "JCC": {0x4c, 0x1, 0xd0, 0x73, 0x39, 0x4c, 0x1, 0xd0, 0x73, 0x34, 0x4c, 0x1, 0xd0, 0x73, 0x2f, 0x4c, 0x1, 0xd0, 0x73, 0x2a, 0x4c, 0x1, 0xd0, 0x73, 0x25, 0x4c, 0x1, 0xd0, 0x73, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x73, 0x19, 0x4c, 0x1, 0xd0, 0x73, 0x14, 0x4c, 0x1, 0xd0, 0x73, 0xf, 0x4c, 0x1, 0xd0, 0x73, 0xa, 0x4c, 0x1, 0xd0, 0x73, 0x5, 0x4c, 0x1, 0xd0, 0x73, 0x0, 0xc3},
214 "JCS": {0x4c, 0x1, 0xd0, 0x72, 0x39, 0x4c, 0x1, 0xd0, 0x72, 0x34, 0x4c, 0x1, 0xd0, 0x72, 0x2f, 0x4c, 0x1, 0xd0, 0x72, 0x2a, 0x4c, 0x1, 0xd0, 0x72, 0x25, 0x4c, 0x1, 0xd0, 0x72, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x72, 0x19, 0x4c, 0x1, 0xd0, 0x72, 0x14, 0x4c, 0x1, 0xd0, 0x72, 0xf, 0x4c, 0x1, 0xd0, 0x72, 0xa, 0x4c, 0x1, 0xd0, 0x72, 0x5, 0x4c, 0x1, 0xd0, 0x72, 0x0, 0xc3},
215 "JEQ": {0x4c, 0x1, 0xd0, 0x74, 0x39, 0x4c, 0x1, 0xd0, 0x74, 0x34, 0x4c, 0x1, 0xd0, 0x74, 0x2f, 0x4c, 0x1, 0xd0, 0x74, 0x2a, 0x4c, 0x1, 0xd0, 0x74, 0x25, 0x4c, 0x1, 0xd0, 0x74, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x74, 0x19, 0x4c, 0x1, 0xd0, 0x74, 0x14, 0x4c, 0x1, 0xd0, 0x74, 0xf, 0x4c, 0x1, 0xd0, 0x74, 0xa, 0x4c, 0x1, 0xd0, 0x74, 0x5, 0x4c, 0x1, 0xd0, 0x74, 0x0, 0xc3},
216 "JGE": {0x4c, 0x1, 0xd0, 0x7d, 0x39, 0x4c, 0x1, 0xd0, 0x7d, 0x34, 0x4c, 0x1, 0xd0, 0x7d, 0x2f, 0x4c, 0x1, 0xd0, 0x7d, 0x2a, 0x4c, 0x1, 0xd0, 0x7d, 0x25, 0x4c, 0x1, 0xd0, 0x7d, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x7d, 0x19, 0x4c, 0x1, 0xd0, 0x7d, 0x14, 0x4c, 0x1, 0xd0, 0x7d, 0xf, 0x4c, 0x1, 0xd0, 0x7d, 0xa, 0x4c, 0x1, 0xd0, 0x7d, 0x5, 0x4c, 0x1, 0xd0, 0x7d, 0x0, 0xc3},
217 "JGT": {0x4c, 0x1, 0xd0, 0x7f, 0x39, 0x4c, 0x1, 0xd0, 0x7f, 0x34, 0x4c, 0x1, 0xd0, 0x7f, 0x2f, 0x4c, 0x1, 0xd0, 0x7f, 0x2a, 0x4c, 0x1, 0xd0, 0x7f, 0x25, 0x4c, 0x1, 0xd0, 0x7f, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x7f, 0x19, 0x4c, 0x1, 0xd0, 0x7f, 0x14, 0x4c, 0x1, 0xd0, 0x7f, 0xf, 0x4c, 0x1, 0xd0, 0x7f, 0xa, 0x4c, 0x1, 0xd0, 0x7f, 0x5, 0x4c, 0x1, 0xd0, 0x7f, 0x0, 0xc3},
218 "JHI": {0x4c, 0x1, 0xd0, 0x77, 0x39, 0x4c, 0x1, 0xd0, 0x77, 0x34, 0x4c, 0x1, 0xd0, 0x77, 0x2f, 0x4c, 0x1, 0xd0, 0x77, 0x2a, 0x4c, 0x1, 0xd0, 0x77, 0x25, 0x4c, 0x1, 0xd0, 0x77, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x77, 0x19, 0x4c, 0x1, 0xd0, 0x77, 0x14, 0x4c, 0x1, 0xd0, 0x77, 0xf, 0x4c, 0x1, 0xd0, 0x77, 0xa, 0x4c, 0x1, 0xd0, 0x77, 0x5, 0x4c, 0x1, 0xd0, 0x77, 0x0, 0xc3},
219 "JLE": {0x4c, 0x1, 0xd0, 0x7e, 0x39, 0x4c, 0x1, 0xd0, 0x7e, 0x34, 0x4c, 0x1, 0xd0, 0x7e, 0x2f, 0x4c, 0x1, 0xd0, 0x7e, 0x2a, 0x4c, 0x1, 0xd0, 0x7e, 0x25, 0x4c, 0x1, 0xd0, 0x7e, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x7e, 0x19, 0x4c, 0x1, 0xd0, 0x7e, 0x14, 0x4c, 0x1, 0xd0, 0x7e, 0xf, 0x4c, 0x1, 0xd0, 0x7e, 0xa, 0x4c, 0x1, 0xd0, 0x7e, 0x5, 0x4c, 0x1, 0xd0, 0x7e, 0x0, 0xc3},
220 "JLS": {0x4c, 0x1, 0xd0, 0x76, 0x39, 0x4c, 0x1, 0xd0, 0x76, 0x34, 0x4c, 0x1, 0xd0, 0x76, 0x2f, 0x4c, 0x1, 0xd0, 0x76, 0x2a, 0x4c, 0x1, 0xd0, 0x76, 0x25, 0x4c, 0x1, 0xd0, 0x76, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x76, 0x19, 0x4c, 0x1, 0xd0, 0x76, 0x14, 0x4c, 0x1, 0xd0, 0x76, 0xf, 0x4c, 0x1, 0xd0, 0x76, 0xa, 0x4c, 0x1, 0xd0, 0x76, 0x5, 0x4c, 0x1, 0xd0, 0x76, 0x0, 0xc3},
221 "JLT": {0x4c, 0x1, 0xd0, 0x7c, 0x39, 0x4c, 0x1, 0xd0, 0x7c, 0x34, 0x4c, 0x1, 0xd0, 0x7c, 0x2f, 0x4c, 0x1, 0xd0, 0x7c, 0x2a, 0x4c, 0x1, 0xd0, 0x7c, 0x25, 0x4c, 0x1, 0xd0, 0x7c, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x7c, 0x19, 0x4c, 0x1, 0xd0, 0x7c, 0x14, 0x4c, 0x1, 0xd0, 0x7c, 0xf, 0x4c, 0x1, 0xd0, 0x7c, 0xa, 0x4c, 0x1, 0xd0, 0x7c, 0x5, 0x4c, 0x1, 0xd0, 0x7c, 0x0, 0xc3},
222 "JMI": {0x4c, 0x1, 0xd0, 0x78, 0x37, 0x4c, 0x1, 0xd0, 0x78, 0x32, 0x4c, 0x1, 0xd0, 0x78, 0x2d, 0x4c, 0x1, 0xd0, 0x78, 0x28, 0x4c, 0x1, 0xd0, 0x78, 0x23, 0x4c, 0x1, 0xd0, 0x78, 0x1e, 0x4c, 0x1, 0xd0, 0x78, 0x19, 0x4c, 0x1, 0xd0, 0x78, 0x14, 0x4c, 0x1, 0xd0, 0x78, 0xf, 0x4c, 0x1, 0xd0, 0x78, 0xa, 0x4c, 0x1, 0xd0, 0x78, 0x5, 0x4c, 0x1, 0xd0, 0x78, 0x0, 0xc3},
223 "JNE": {0x4c, 0x1, 0xd0, 0x75, 0x39, 0x4c, 0x1, 0xd0, 0x75, 0x34, 0x4c, 0x1, 0xd0, 0x75, 0x2f, 0x4c, 0x1, 0xd0, 0x75, 0x2a, 0x4c, 0x1, 0xd0, 0x75, 0x25, 0x4c, 0x1, 0xd0, 0x75, 0x20, 0x66, 0x90, 0x4c, 0x1, 0xd0, 0x75, 0x19, 0x4c, 0x1, 0xd0, 0x75, 0x14, 0x4c, 0x1, 0xd0, 0x75, 0xf, 0x4c, 0x1, 0xd0, 0x75, 0xa, 0x4c, 0x1, 0xd0, 0x75, 0x5, 0x4c, 0x1, 0xd0, 0x75, 0x0, 0xc3},
224 "JPC": {0x4c, 0x1, 0xd0, 0x7b, 0x37, 0x4c, 0x1, 0xd0, 0x7b, 0x32, 0x4c, 0x1, 0xd0, 0x7b, 0x2d, 0x4c, 0x1, 0xd0, 0x7b, 0x28, 0x4c, 0x1, 0xd0, 0x7b, 0x23, 0x4c, 0x1, 0xd0, 0x7b, 0x1e, 0x4c, 0x1, 0xd0, 0x7b, 0x19, 0x4c, 0x1, 0xd0, 0x7b, 0x14, 0x4c, 0x1, 0xd0, 0x7b, 0xf, 0x4c, 0x1, 0xd0, 0x7b, 0xa, 0x4c, 0x1, 0xd0, 0x7b, 0x5, 0x4c, 0x1, 0xd0, 0x7b, 0x0, 0xc3},
225 "JPS": {0x4c, 0x1, 0xd0, 0x7a, 0x37, 0x4c, 0x1, 0xd0, 0x7a, 0x32, 0x4c, 0x1, 0xd0, 0x7a, 0x2d, 0x4c, 0x1, 0xd0, 0x7a, 0x28, 0x4c, 0x1, 0xd0, 0x7a, 0x23, 0x4c, 0x1, 0xd0, 0x7a, 0x1e, 0x4c, 0x1, 0xd0, 0x7a, 0x19, 0x4c, 0x1, 0xd0, 0x7a, 0x14, 0x4c, 0x1, 0xd0, 0x7a, 0xf, 0x4c, 0x1, 0xd0, 0x7a, 0xa, 0x4c, 0x1, 0xd0, 0x7a, 0x5, 0x4c, 0x1, 0xd0, 0x7a, 0x0, 0xc3},
226 },
227 },
228 {
229 name: "ADDQ(memory to register)",
230 setupFn: func(assembler Assembler) {
231 assembler.CompileMemoryToRegister(ADDQ, RegR10, 1234, RegAX)
232 },
233 jmpInstToExpectedBytes: map[string][]uint8{
234 "JCC": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x0, 0xc3},
235 "JCS": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x0, 0xc3},
236 "JEQ": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x0, 0xc3},
237 "JGE": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x0, 0xc3},
238 "JGT": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x0, 0xc3},
239 "JHI": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x0, 0xc3},
240 "JLE": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x0, 0xc3},
241 "JLS": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x0, 0xc3},
242 "JLT": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x0, 0xc3},
243 "JMI": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x63, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x5a, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x51, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x48, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x3f, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x36, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x2d, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x24, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x1b, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x0, 0xc3},
244 "JNE": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x72, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x69, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x52, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x49, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x32, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x29, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x0, 0xc3},
245 "JPC": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x63, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x5a, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x51, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x48, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x3f, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x36, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x2d, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x24, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x1b, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x0, 0xc3},
246 "JPS": {0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x63, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x5a, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x51, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x48, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x3f, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x36, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x2d, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x24, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x1b, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x12, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x9, 0x49, 0x3, 0x82, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x0, 0xc3},
247 },
248 },
249 {
250 name: "ADDQ(const to register)",
251 setupFn: func(assembler Assembler) {
252 assembler.CompileConstToRegister(ADDQ, 1234, RegR10)
253 },
254 jmpInstToExpectedBytes: map[string][]uint8{
255 "JCC": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x73, 0x0, 0xc3},
256 "JCS": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x72, 0x0, 0xc3},
257 "JEQ": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x74, 0x0, 0xc3},
258 "JGE": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7d, 0x0, 0xc3},
259 "JGT": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7f, 0x0, 0xc3},
260 "JHI": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x77, 0x0, 0xc3},
261 "JLE": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7e, 0x0, 0xc3},
262 "JLS": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x76, 0x0, 0xc3},
263 "JLT": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7c, 0x0, 0xc3},
264 "JMI": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x63, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x5a, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x51, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x48, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x3f, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x36, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x2d, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x24, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x1b, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x78, 0x0, 0xc3},
265 "JNE": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x72, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x69, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x52, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x49, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x32, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x29, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x75, 0x0, 0xc3},
266 "JPC": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x63, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x5a, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x51, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x48, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x3f, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x36, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x2d, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x24, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x1b, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7b, 0x0, 0xc3},
267 "JPS": {0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x63, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x5a, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x51, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x48, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x3f, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x36, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x2d, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x24, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x1b, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x12, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x9, 0x49, 0x81, 0xc2, 0xd2, 0x4, 0x0, 0x0, 0x7a, 0x0, 0xc3},
268 },
269 },
270 {
271 name: "SUBL",
272 setupFn: func(assembler Assembler) {
273 assembler.CompileRegisterToRegister(SUBL, RegR10, RegAX)
274 },
275 jmpInstToExpectedBytes: map[string][]uint8{
276 "JCC": {0x44, 0x29, 0xd0, 0x73, 0x39, 0x44, 0x29, 0xd0, 0x73, 0x34, 0x44, 0x29, 0xd0, 0x73, 0x2f, 0x44, 0x29, 0xd0, 0x73, 0x2a, 0x44, 0x29, 0xd0, 0x73, 0x25, 0x44, 0x29, 0xd0, 0x73, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x73, 0x19, 0x44, 0x29, 0xd0, 0x73, 0x14, 0x44, 0x29, 0xd0, 0x73, 0xf, 0x44, 0x29, 0xd0, 0x73, 0xa, 0x44, 0x29, 0xd0, 0x73, 0x5, 0x44, 0x29, 0xd0, 0x73, 0x0, 0xc3},
277 "JCS": {0x44, 0x29, 0xd0, 0x72, 0x39, 0x44, 0x29, 0xd0, 0x72, 0x34, 0x44, 0x29, 0xd0, 0x72, 0x2f, 0x44, 0x29, 0xd0, 0x72, 0x2a, 0x44, 0x29, 0xd0, 0x72, 0x25, 0x44, 0x29, 0xd0, 0x72, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x72, 0x19, 0x44, 0x29, 0xd0, 0x72, 0x14, 0x44, 0x29, 0xd0, 0x72, 0xf, 0x44, 0x29, 0xd0, 0x72, 0xa, 0x44, 0x29, 0xd0, 0x72, 0x5, 0x44, 0x29, 0xd0, 0x72, 0x0, 0xc3},
278 "JEQ": {0x44, 0x29, 0xd0, 0x74, 0x39, 0x44, 0x29, 0xd0, 0x74, 0x34, 0x44, 0x29, 0xd0, 0x74, 0x2f, 0x44, 0x29, 0xd0, 0x74, 0x2a, 0x44, 0x29, 0xd0, 0x74, 0x25, 0x44, 0x29, 0xd0, 0x74, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x74, 0x19, 0x44, 0x29, 0xd0, 0x74, 0x14, 0x44, 0x29, 0xd0, 0x74, 0xf, 0x44, 0x29, 0xd0, 0x74, 0xa, 0x44, 0x29, 0xd0, 0x74, 0x5, 0x44, 0x29, 0xd0, 0x74, 0x0, 0xc3},
279 "JGE": {0x44, 0x29, 0xd0, 0x7d, 0x39, 0x44, 0x29, 0xd0, 0x7d, 0x34, 0x44, 0x29, 0xd0, 0x7d, 0x2f, 0x44, 0x29, 0xd0, 0x7d, 0x2a, 0x44, 0x29, 0xd0, 0x7d, 0x25, 0x44, 0x29, 0xd0, 0x7d, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x7d, 0x19, 0x44, 0x29, 0xd0, 0x7d, 0x14, 0x44, 0x29, 0xd0, 0x7d, 0xf, 0x44, 0x29, 0xd0, 0x7d, 0xa, 0x44, 0x29, 0xd0, 0x7d, 0x5, 0x44, 0x29, 0xd0, 0x7d, 0x0, 0xc3},
280 "JGT": {0x44, 0x29, 0xd0, 0x7f, 0x39, 0x44, 0x29, 0xd0, 0x7f, 0x34, 0x44, 0x29, 0xd0, 0x7f, 0x2f, 0x44, 0x29, 0xd0, 0x7f, 0x2a, 0x44, 0x29, 0xd0, 0x7f, 0x25, 0x44, 0x29, 0xd0, 0x7f, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x7f, 0x19, 0x44, 0x29, 0xd0, 0x7f, 0x14, 0x44, 0x29, 0xd0, 0x7f, 0xf, 0x44, 0x29, 0xd0, 0x7f, 0xa, 0x44, 0x29, 0xd0, 0x7f, 0x5, 0x44, 0x29, 0xd0, 0x7f, 0x0, 0xc3},
281 "JHI": {0x44, 0x29, 0xd0, 0x77, 0x39, 0x44, 0x29, 0xd0, 0x77, 0x34, 0x44, 0x29, 0xd0, 0x77, 0x2f, 0x44, 0x29, 0xd0, 0x77, 0x2a, 0x44, 0x29, 0xd0, 0x77, 0x25, 0x44, 0x29, 0xd0, 0x77, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x77, 0x19, 0x44, 0x29, 0xd0, 0x77, 0x14, 0x44, 0x29, 0xd0, 0x77, 0xf, 0x44, 0x29, 0xd0, 0x77, 0xa, 0x44, 0x29, 0xd0, 0x77, 0x5, 0x44, 0x29, 0xd0, 0x77, 0x0, 0xc3},
282 "JLE": {0x44, 0x29, 0xd0, 0x7e, 0x39, 0x44, 0x29, 0xd0, 0x7e, 0x34, 0x44, 0x29, 0xd0, 0x7e, 0x2f, 0x44, 0x29, 0xd0, 0x7e, 0x2a, 0x44, 0x29, 0xd0, 0x7e, 0x25, 0x44, 0x29, 0xd0, 0x7e, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x7e, 0x19, 0x44, 0x29, 0xd0, 0x7e, 0x14, 0x44, 0x29, 0xd0, 0x7e, 0xf, 0x44, 0x29, 0xd0, 0x7e, 0xa, 0x44, 0x29, 0xd0, 0x7e, 0x5, 0x44, 0x29, 0xd0, 0x7e, 0x0, 0xc3},
283 "JLS": {0x44, 0x29, 0xd0, 0x76, 0x39, 0x44, 0x29, 0xd0, 0x76, 0x34, 0x44, 0x29, 0xd0, 0x76, 0x2f, 0x44, 0x29, 0xd0, 0x76, 0x2a, 0x44, 0x29, 0xd0, 0x76, 0x25, 0x44, 0x29, 0xd0, 0x76, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x76, 0x19, 0x44, 0x29, 0xd0, 0x76, 0x14, 0x44, 0x29, 0xd0, 0x76, 0xf, 0x44, 0x29, 0xd0, 0x76, 0xa, 0x44, 0x29, 0xd0, 0x76, 0x5, 0x44, 0x29, 0xd0, 0x76, 0x0, 0xc3},
284 "JLT": {0x44, 0x29, 0xd0, 0x7c, 0x39, 0x44, 0x29, 0xd0, 0x7c, 0x34, 0x44, 0x29, 0xd0, 0x7c, 0x2f, 0x44, 0x29, 0xd0, 0x7c, 0x2a, 0x44, 0x29, 0xd0, 0x7c, 0x25, 0x44, 0x29, 0xd0, 0x7c, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x7c, 0x19, 0x44, 0x29, 0xd0, 0x7c, 0x14, 0x44, 0x29, 0xd0, 0x7c, 0xf, 0x44, 0x29, 0xd0, 0x7c, 0xa, 0x44, 0x29, 0xd0, 0x7c, 0x5, 0x44, 0x29, 0xd0, 0x7c, 0x0, 0xc3},
285 "JMI": {0x44, 0x29, 0xd0, 0x78, 0x37, 0x44, 0x29, 0xd0, 0x78, 0x32, 0x44, 0x29, 0xd0, 0x78, 0x2d, 0x44, 0x29, 0xd0, 0x78, 0x28, 0x44, 0x29, 0xd0, 0x78, 0x23, 0x44, 0x29, 0xd0, 0x78, 0x1e, 0x44, 0x29, 0xd0, 0x78, 0x19, 0x44, 0x29, 0xd0, 0x78, 0x14, 0x44, 0x29, 0xd0, 0x78, 0xf, 0x44, 0x29, 0xd0, 0x78, 0xa, 0x44, 0x29, 0xd0, 0x78, 0x5, 0x44, 0x29, 0xd0, 0x78, 0x0, 0xc3},
286 "JNE": {0x44, 0x29, 0xd0, 0x75, 0x39, 0x44, 0x29, 0xd0, 0x75, 0x34, 0x44, 0x29, 0xd0, 0x75, 0x2f, 0x44, 0x29, 0xd0, 0x75, 0x2a, 0x44, 0x29, 0xd0, 0x75, 0x25, 0x44, 0x29, 0xd0, 0x75, 0x20, 0x66, 0x90, 0x44, 0x29, 0xd0, 0x75, 0x19, 0x44, 0x29, 0xd0, 0x75, 0x14, 0x44, 0x29, 0xd0, 0x75, 0xf, 0x44, 0x29, 0xd0, 0x75, 0xa, 0x44, 0x29, 0xd0, 0x75, 0x5, 0x44, 0x29, 0xd0, 0x75, 0x0, 0xc3},
287 "JPC": {0x44, 0x29, 0xd0, 0x7b, 0x37, 0x44, 0x29, 0xd0, 0x7b, 0x32, 0x44, 0x29, 0xd0, 0x7b, 0x2d, 0x44, 0x29, 0xd0, 0x7b, 0x28, 0x44, 0x29, 0xd0, 0x7b, 0x23, 0x44, 0x29, 0xd0, 0x7b, 0x1e, 0x44, 0x29, 0xd0, 0x7b, 0x19, 0x44, 0x29, 0xd0, 0x7b, 0x14, 0x44, 0x29, 0xd0, 0x7b, 0xf, 0x44, 0x29, 0xd0, 0x7b, 0xa, 0x44, 0x29, 0xd0, 0x7b, 0x5, 0x44, 0x29, 0xd0, 0x7b, 0x0, 0xc3},
288 "JPS": {0x44, 0x29, 0xd0, 0x7a, 0x37, 0x44, 0x29, 0xd0, 0x7a, 0x32, 0x44, 0x29, 0xd0, 0x7a, 0x2d, 0x44, 0x29, 0xd0, 0x7a, 0x28, 0x44, 0x29, 0xd0, 0x7a, 0x23, 0x44, 0x29, 0xd0, 0x7a, 0x1e, 0x44, 0x29, 0xd0, 0x7a, 0x19, 0x44, 0x29, 0xd0, 0x7a, 0x14, 0x44, 0x29, 0xd0, 0x7a, 0xf, 0x44, 0x29, 0xd0, 0x7a, 0xa, 0x44, 0x29, 0xd0, 0x7a, 0x5, 0x44, 0x29, 0xd0, 0x7a, 0x0, 0xc3},
289 },
290 },
291 {
292 name: "SUBQ (register to register)",
293 setupFn: func(assembler Assembler) {
294 assembler.CompileRegisterToRegister(SUBQ, RegR10, RegAX)
295 },
296 jmpInstToExpectedBytes: map[string][]uint8{
297 "JCC": {0x4c, 0x29, 0xd0, 0x73, 0x39, 0x4c, 0x29, 0xd0, 0x73, 0x34, 0x4c, 0x29, 0xd0, 0x73, 0x2f, 0x4c, 0x29, 0xd0, 0x73, 0x2a, 0x4c, 0x29, 0xd0, 0x73, 0x25, 0x4c, 0x29, 0xd0, 0x73, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x73, 0x19, 0x4c, 0x29, 0xd0, 0x73, 0x14, 0x4c, 0x29, 0xd0, 0x73, 0xf, 0x4c, 0x29, 0xd0, 0x73, 0xa, 0x4c, 0x29, 0xd0, 0x73, 0x5, 0x4c, 0x29, 0xd0, 0x73, 0x0, 0xc3},
298 "JCS": {0x4c, 0x29, 0xd0, 0x72, 0x39, 0x4c, 0x29, 0xd0, 0x72, 0x34, 0x4c, 0x29, 0xd0, 0x72, 0x2f, 0x4c, 0x29, 0xd0, 0x72, 0x2a, 0x4c, 0x29, 0xd0, 0x72, 0x25, 0x4c, 0x29, 0xd0, 0x72, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x72, 0x19, 0x4c, 0x29, 0xd0, 0x72, 0x14, 0x4c, 0x29, 0xd0, 0x72, 0xf, 0x4c, 0x29, 0xd0, 0x72, 0xa, 0x4c, 0x29, 0xd0, 0x72, 0x5, 0x4c, 0x29, 0xd0, 0x72, 0x0, 0xc3},
299 "JEQ": {0x4c, 0x29, 0xd0, 0x74, 0x39, 0x4c, 0x29, 0xd0, 0x74, 0x34, 0x4c, 0x29, 0xd0, 0x74, 0x2f, 0x4c, 0x29, 0xd0, 0x74, 0x2a, 0x4c, 0x29, 0xd0, 0x74, 0x25, 0x4c, 0x29, 0xd0, 0x74, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x74, 0x19, 0x4c, 0x29, 0xd0, 0x74, 0x14, 0x4c, 0x29, 0xd0, 0x74, 0xf, 0x4c, 0x29, 0xd0, 0x74, 0xa, 0x4c, 0x29, 0xd0, 0x74, 0x5, 0x4c, 0x29, 0xd0, 0x74, 0x0, 0xc3},
300 "JGE": {0x4c, 0x29, 0xd0, 0x7d, 0x39, 0x4c, 0x29, 0xd0, 0x7d, 0x34, 0x4c, 0x29, 0xd0, 0x7d, 0x2f, 0x4c, 0x29, 0xd0, 0x7d, 0x2a, 0x4c, 0x29, 0xd0, 0x7d, 0x25, 0x4c, 0x29, 0xd0, 0x7d, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x7d, 0x19, 0x4c, 0x29, 0xd0, 0x7d, 0x14, 0x4c, 0x29, 0xd0, 0x7d, 0xf, 0x4c, 0x29, 0xd0, 0x7d, 0xa, 0x4c, 0x29, 0xd0, 0x7d, 0x5, 0x4c, 0x29, 0xd0, 0x7d, 0x0, 0xc3},
301 "JGT": {0x4c, 0x29, 0xd0, 0x7f, 0x39, 0x4c, 0x29, 0xd0, 0x7f, 0x34, 0x4c, 0x29, 0xd0, 0x7f, 0x2f, 0x4c, 0x29, 0xd0, 0x7f, 0x2a, 0x4c, 0x29, 0xd0, 0x7f, 0x25, 0x4c, 0x29, 0xd0, 0x7f, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x7f, 0x19, 0x4c, 0x29, 0xd0, 0x7f, 0x14, 0x4c, 0x29, 0xd0, 0x7f, 0xf, 0x4c, 0x29, 0xd0, 0x7f, 0xa, 0x4c, 0x29, 0xd0, 0x7f, 0x5, 0x4c, 0x29, 0xd0, 0x7f, 0x0, 0xc3},
302 "JHI": {0x4c, 0x29, 0xd0, 0x77, 0x39, 0x4c, 0x29, 0xd0, 0x77, 0x34, 0x4c, 0x29, 0xd0, 0x77, 0x2f, 0x4c, 0x29, 0xd0, 0x77, 0x2a, 0x4c, 0x29, 0xd0, 0x77, 0x25, 0x4c, 0x29, 0xd0, 0x77, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x77, 0x19, 0x4c, 0x29, 0xd0, 0x77, 0x14, 0x4c, 0x29, 0xd0, 0x77, 0xf, 0x4c, 0x29, 0xd0, 0x77, 0xa, 0x4c, 0x29, 0xd0, 0x77, 0x5, 0x4c, 0x29, 0xd0, 0x77, 0x0, 0xc3},
303 "JLE": {0x4c, 0x29, 0xd0, 0x7e, 0x39, 0x4c, 0x29, 0xd0, 0x7e, 0x34, 0x4c, 0x29, 0xd0, 0x7e, 0x2f, 0x4c, 0x29, 0xd0, 0x7e, 0x2a, 0x4c, 0x29, 0xd0, 0x7e, 0x25, 0x4c, 0x29, 0xd0, 0x7e, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x7e, 0x19, 0x4c, 0x29, 0xd0, 0x7e, 0x14, 0x4c, 0x29, 0xd0, 0x7e, 0xf, 0x4c, 0x29, 0xd0, 0x7e, 0xa, 0x4c, 0x29, 0xd0, 0x7e, 0x5, 0x4c, 0x29, 0xd0, 0x7e, 0x0, 0xc3},
304 "JLS": {0x4c, 0x29, 0xd0, 0x76, 0x39, 0x4c, 0x29, 0xd0, 0x76, 0x34, 0x4c, 0x29, 0xd0, 0x76, 0x2f, 0x4c, 0x29, 0xd0, 0x76, 0x2a, 0x4c, 0x29, 0xd0, 0x76, 0x25, 0x4c, 0x29, 0xd0, 0x76, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x76, 0x19, 0x4c, 0x29, 0xd0, 0x76, 0x14, 0x4c, 0x29, 0xd0, 0x76, 0xf, 0x4c, 0x29, 0xd0, 0x76, 0xa, 0x4c, 0x29, 0xd0, 0x76, 0x5, 0x4c, 0x29, 0xd0, 0x76, 0x0, 0xc3},
305 "JLT": {0x4c, 0x29, 0xd0, 0x7c, 0x39, 0x4c, 0x29, 0xd0, 0x7c, 0x34, 0x4c, 0x29, 0xd0, 0x7c, 0x2f, 0x4c, 0x29, 0xd0, 0x7c, 0x2a, 0x4c, 0x29, 0xd0, 0x7c, 0x25, 0x4c, 0x29, 0xd0, 0x7c, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x7c, 0x19, 0x4c, 0x29, 0xd0, 0x7c, 0x14, 0x4c, 0x29, 0xd0, 0x7c, 0xf, 0x4c, 0x29, 0xd0, 0x7c, 0xa, 0x4c, 0x29, 0xd0, 0x7c, 0x5, 0x4c, 0x29, 0xd0, 0x7c, 0x0, 0xc3},
306 "JMI": {0x4c, 0x29, 0xd0, 0x78, 0x37, 0x4c, 0x29, 0xd0, 0x78, 0x32, 0x4c, 0x29, 0xd0, 0x78, 0x2d, 0x4c, 0x29, 0xd0, 0x78, 0x28, 0x4c, 0x29, 0xd0, 0x78, 0x23, 0x4c, 0x29, 0xd0, 0x78, 0x1e, 0x4c, 0x29, 0xd0, 0x78, 0x19, 0x4c, 0x29, 0xd0, 0x78, 0x14, 0x4c, 0x29, 0xd0, 0x78, 0xf, 0x4c, 0x29, 0xd0, 0x78, 0xa, 0x4c, 0x29, 0xd0, 0x78, 0x5, 0x4c, 0x29, 0xd0, 0x78, 0x0, 0xc3},
307 "JNE": {0x4c, 0x29, 0xd0, 0x75, 0x39, 0x4c, 0x29, 0xd0, 0x75, 0x34, 0x4c, 0x29, 0xd0, 0x75, 0x2f, 0x4c, 0x29, 0xd0, 0x75, 0x2a, 0x4c, 0x29, 0xd0, 0x75, 0x25, 0x4c, 0x29, 0xd0, 0x75, 0x20, 0x66, 0x90, 0x4c, 0x29, 0xd0, 0x75, 0x19, 0x4c, 0x29, 0xd0, 0x75, 0x14, 0x4c, 0x29, 0xd0, 0x75, 0xf, 0x4c, 0x29, 0xd0, 0x75, 0xa, 0x4c, 0x29, 0xd0, 0x75, 0x5, 0x4c, 0x29, 0xd0, 0x75, 0x0, 0xc3},
308 "JPC": {0x4c, 0x29, 0xd0, 0x7b, 0x37, 0x4c, 0x29, 0xd0, 0x7b, 0x32, 0x4c, 0x29, 0xd0, 0x7b, 0x2d, 0x4c, 0x29, 0xd0, 0x7b, 0x28, 0x4c, 0x29, 0xd0, 0x7b, 0x23, 0x4c, 0x29, 0xd0, 0x7b, 0x1e, 0x4c, 0x29, 0xd0, 0x7b, 0x19, 0x4c, 0x29, 0xd0, 0x7b, 0x14, 0x4c, 0x29, 0xd0, 0x7b, 0xf, 0x4c, 0x29, 0xd0, 0x7b, 0xa, 0x4c, 0x29, 0xd0, 0x7b, 0x5, 0x4c, 0x29, 0xd0, 0x7b, 0x0, 0xc3},
309 "JPS": {0x4c, 0x29, 0xd0, 0x7a, 0x37, 0x4c, 0x29, 0xd0, 0x7a, 0x32, 0x4c, 0x29, 0xd0, 0x7a, 0x2d, 0x4c, 0x29, 0xd0, 0x7a, 0x28, 0x4c, 0x29, 0xd0, 0x7a, 0x23, 0x4c, 0x29, 0xd0, 0x7a, 0x1e, 0x4c, 0x29, 0xd0, 0x7a, 0x19, 0x4c, 0x29, 0xd0, 0x7a, 0x14, 0x4c, 0x29, 0xd0, 0x7a, 0xf, 0x4c, 0x29, 0xd0, 0x7a, 0xa, 0x4c, 0x29, 0xd0, 0x7a, 0x5, 0x4c, 0x29, 0xd0, 0x7a, 0x0, 0xc3},
310 },
311 },
312 {
313 name: "SUBQ (memory to register)",
314 setupFn: func(assembler Assembler) {
315 assembler.CompileMemoryToRegister(SUBQ, RegR10, math.MaxInt16, RegAX)
316 },
317 jmpInstToExpectedBytes: map[string][]uint8{
318 "JCC": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x73, 0x0, 0xc3},
319 "JCS": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x72, 0x0, 0xc3},
320 "JEQ": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x74, 0x0, 0xc3},
321 "JGE": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7d, 0x0, 0xc3},
322 "JGT": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0xc3},
323 "JHI": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x77, 0x0, 0xc3},
324 "JLE": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7e, 0x0, 0xc3},
325 "JLS": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x76, 0x0, 0xc3},
326 "JLT": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7c, 0x0, 0xc3},
327 "JMI": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x63, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x5a, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x51, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x48, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x3f, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x36, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x2d, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x24, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x1b, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x78, 0x0, 0xc3},
328 "JNE": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x72, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x69, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x60, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x52, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x49, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x40, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x32, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x29, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x20, 0xf, 0x1f, 0x44, 0x0, 0x0, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x75, 0x0, 0xc3},
329 "JPC": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x63, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x5a, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x51, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x48, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x3f, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x36, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x2d, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x24, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x1b, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7b, 0x0, 0xc3},
330 "JPS": {0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x63, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x5a, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x51, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x48, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x3f, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x36, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x2d, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x24, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x1b, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x12, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x9, 0x49, 0x2b, 0x82, 0xff, 0x7f, 0x0, 0x0, 0x7a, 0x0, 0xc3},
331 },
332 },
333 {
334 name: "ANDL",
335 setupFn: func(assembler Assembler) {
336 assembler.CompileRegisterToRegister(ANDL, RegR10, RegAX)
337 },
338 jmpInstToExpectedBytes: map[string][]uint8{
339 "JCC": {0x44, 0x21, 0xd0, 0x73, 0x39, 0x44, 0x21, 0xd0, 0x73, 0x34, 0x44, 0x21, 0xd0, 0x73, 0x2f, 0x44, 0x21, 0xd0, 0x73, 0x2a, 0x44, 0x21, 0xd0, 0x73, 0x25, 0x44, 0x21, 0xd0, 0x73, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x73, 0x19, 0x44, 0x21, 0xd0, 0x73, 0x14, 0x44, 0x21, 0xd0, 0x73, 0xf, 0x44, 0x21, 0xd0, 0x73, 0xa, 0x44, 0x21, 0xd0, 0x73, 0x5, 0x44, 0x21, 0xd0, 0x73, 0x0, 0xc3},
340 "JCS": {0x44, 0x21, 0xd0, 0x72, 0x39, 0x44, 0x21, 0xd0, 0x72, 0x34, 0x44, 0x21, 0xd0, 0x72, 0x2f, 0x44, 0x21, 0xd0, 0x72, 0x2a, 0x44, 0x21, 0xd0, 0x72, 0x25, 0x44, 0x21, 0xd0, 0x72, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x72, 0x19, 0x44, 0x21, 0xd0, 0x72, 0x14, 0x44, 0x21, 0xd0, 0x72, 0xf, 0x44, 0x21, 0xd0, 0x72, 0xa, 0x44, 0x21, 0xd0, 0x72, 0x5, 0x44, 0x21, 0xd0, 0x72, 0x0, 0xc3},
341 "JEQ": {0x44, 0x21, 0xd0, 0x74, 0x39, 0x44, 0x21, 0xd0, 0x74, 0x34, 0x44, 0x21, 0xd0, 0x74, 0x2f, 0x44, 0x21, 0xd0, 0x74, 0x2a, 0x44, 0x21, 0xd0, 0x74, 0x25, 0x44, 0x21, 0xd0, 0x74, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x74, 0x19, 0x44, 0x21, 0xd0, 0x74, 0x14, 0x44, 0x21, 0xd0, 0x74, 0xf, 0x44, 0x21, 0xd0, 0x74, 0xa, 0x44, 0x21, 0xd0, 0x74, 0x5, 0x44, 0x21, 0xd0, 0x74, 0x0, 0xc3},
342 "JGE": {0x44, 0x21, 0xd0, 0x7d, 0x39, 0x44, 0x21, 0xd0, 0x7d, 0x34, 0x44, 0x21, 0xd0, 0x7d, 0x2f, 0x44, 0x21, 0xd0, 0x7d, 0x2a, 0x44, 0x21, 0xd0, 0x7d, 0x25, 0x44, 0x21, 0xd0, 0x7d, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x7d, 0x19, 0x44, 0x21, 0xd0, 0x7d, 0x14, 0x44, 0x21, 0xd0, 0x7d, 0xf, 0x44, 0x21, 0xd0, 0x7d, 0xa, 0x44, 0x21, 0xd0, 0x7d, 0x5, 0x44, 0x21, 0xd0, 0x7d, 0x0, 0xc3},
343 "JGT": {0x44, 0x21, 0xd0, 0x7f, 0x39, 0x44, 0x21, 0xd0, 0x7f, 0x34, 0x44, 0x21, 0xd0, 0x7f, 0x2f, 0x44, 0x21, 0xd0, 0x7f, 0x2a, 0x44, 0x21, 0xd0, 0x7f, 0x25, 0x44, 0x21, 0xd0, 0x7f, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x7f, 0x19, 0x44, 0x21, 0xd0, 0x7f, 0x14, 0x44, 0x21, 0xd0, 0x7f, 0xf, 0x44, 0x21, 0xd0, 0x7f, 0xa, 0x44, 0x21, 0xd0, 0x7f, 0x5, 0x44, 0x21, 0xd0, 0x7f, 0x0, 0xc3},
344 "JHI": {0x44, 0x21, 0xd0, 0x77, 0x39, 0x44, 0x21, 0xd0, 0x77, 0x34, 0x44, 0x21, 0xd0, 0x77, 0x2f, 0x44, 0x21, 0xd0, 0x77, 0x2a, 0x44, 0x21, 0xd0, 0x77, 0x25, 0x44, 0x21, 0xd0, 0x77, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x77, 0x19, 0x44, 0x21, 0xd0, 0x77, 0x14, 0x44, 0x21, 0xd0, 0x77, 0xf, 0x44, 0x21, 0xd0, 0x77, 0xa, 0x44, 0x21, 0xd0, 0x77, 0x5, 0x44, 0x21, 0xd0, 0x77, 0x0, 0xc3},
345 "JLE": {0x44, 0x21, 0xd0, 0x7e, 0x39, 0x44, 0x21, 0xd0, 0x7e, 0x34, 0x44, 0x21, 0xd0, 0x7e, 0x2f, 0x44, 0x21, 0xd0, 0x7e, 0x2a, 0x44, 0x21, 0xd0, 0x7e, 0x25, 0x44, 0x21, 0xd0, 0x7e, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x7e, 0x19, 0x44, 0x21, 0xd0, 0x7e, 0x14, 0x44, 0x21, 0xd0, 0x7e, 0xf, 0x44, 0x21, 0xd0, 0x7e, 0xa, 0x44, 0x21, 0xd0, 0x7e, 0x5, 0x44, 0x21, 0xd0, 0x7e, 0x0, 0xc3},
346 "JLS": {0x44, 0x21, 0xd0, 0x76, 0x39, 0x44, 0x21, 0xd0, 0x76, 0x34, 0x44, 0x21, 0xd0, 0x76, 0x2f, 0x44, 0x21, 0xd0, 0x76, 0x2a, 0x44, 0x21, 0xd0, 0x76, 0x25, 0x44, 0x21, 0xd0, 0x76, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x76, 0x19, 0x44, 0x21, 0xd0, 0x76, 0x14, 0x44, 0x21, 0xd0, 0x76, 0xf, 0x44, 0x21, 0xd0, 0x76, 0xa, 0x44, 0x21, 0xd0, 0x76, 0x5, 0x44, 0x21, 0xd0, 0x76, 0x0, 0xc3},
347 "JLT": {0x44, 0x21, 0xd0, 0x7c, 0x39, 0x44, 0x21, 0xd0, 0x7c, 0x34, 0x44, 0x21, 0xd0, 0x7c, 0x2f, 0x44, 0x21, 0xd0, 0x7c, 0x2a, 0x44, 0x21, 0xd0, 0x7c, 0x25, 0x44, 0x21, 0xd0, 0x7c, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x7c, 0x19, 0x44, 0x21, 0xd0, 0x7c, 0x14, 0x44, 0x21, 0xd0, 0x7c, 0xf, 0x44, 0x21, 0xd0, 0x7c, 0xa, 0x44, 0x21, 0xd0, 0x7c, 0x5, 0x44, 0x21, 0xd0, 0x7c, 0x0, 0xc3},
348 "JMI": {0x44, 0x21, 0xd0, 0x78, 0x39, 0x44, 0x21, 0xd0, 0x78, 0x34, 0x44, 0x21, 0xd0, 0x78, 0x2f, 0x44, 0x21, 0xd0, 0x78, 0x2a, 0x44, 0x21, 0xd0, 0x78, 0x25, 0x44, 0x21, 0xd0, 0x78, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x78, 0x19, 0x44, 0x21, 0xd0, 0x78, 0x14, 0x44, 0x21, 0xd0, 0x78, 0xf, 0x44, 0x21, 0xd0, 0x78, 0xa, 0x44, 0x21, 0xd0, 0x78, 0x5, 0x44, 0x21, 0xd0, 0x78, 0x0, 0xc3},
349 "JNE": {0x44, 0x21, 0xd0, 0x75, 0x39, 0x44, 0x21, 0xd0, 0x75, 0x34, 0x44, 0x21, 0xd0, 0x75, 0x2f, 0x44, 0x21, 0xd0, 0x75, 0x2a, 0x44, 0x21, 0xd0, 0x75, 0x25, 0x44, 0x21, 0xd0, 0x75, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x75, 0x19, 0x44, 0x21, 0xd0, 0x75, 0x14, 0x44, 0x21, 0xd0, 0x75, 0xf, 0x44, 0x21, 0xd0, 0x75, 0xa, 0x44, 0x21, 0xd0, 0x75, 0x5, 0x44, 0x21, 0xd0, 0x75, 0x0, 0xc3},
350 "JPC": {0x44, 0x21, 0xd0, 0x7b, 0x39, 0x44, 0x21, 0xd0, 0x7b, 0x34, 0x44, 0x21, 0xd0, 0x7b, 0x2f, 0x44, 0x21, 0xd0, 0x7b, 0x2a, 0x44, 0x21, 0xd0, 0x7b, 0x25, 0x44, 0x21, 0xd0, 0x7b, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x7b, 0x19, 0x44, 0x21, 0xd0, 0x7b, 0x14, 0x44, 0x21, 0xd0, 0x7b, 0xf, 0x44, 0x21, 0xd0, 0x7b, 0xa, 0x44, 0x21, 0xd0, 0x7b, 0x5, 0x44, 0x21, 0xd0, 0x7b, 0x0, 0xc3},
351 "JPS": {0x44, 0x21, 0xd0, 0x7a, 0x39, 0x44, 0x21, 0xd0, 0x7a, 0x34, 0x44, 0x21, 0xd0, 0x7a, 0x2f, 0x44, 0x21, 0xd0, 0x7a, 0x2a, 0x44, 0x21, 0xd0, 0x7a, 0x25, 0x44, 0x21, 0xd0, 0x7a, 0x20, 0x66, 0x90, 0x44, 0x21, 0xd0, 0x7a, 0x19, 0x44, 0x21, 0xd0, 0x7a, 0x14, 0x44, 0x21, 0xd0, 0x7a, 0xf, 0x44, 0x21, 0xd0, 0x7a, 0xa, 0x44, 0x21, 0xd0, 0x7a, 0x5, 0x44, 0x21, 0xd0, 0x7a, 0x0, 0xc3},
352 },
353 },
354 {
355 name: "ANDQ (register to register)",
356 setupFn: func(assembler Assembler) {
357 assembler.CompileRegisterToRegister(ANDQ, RegR10, RegAX)
358 },
359 jmpInstToExpectedBytes: map[string][]uint8{
360 "JCC": {0x4c, 0x21, 0xd0, 0x73, 0x39, 0x4c, 0x21, 0xd0, 0x73, 0x34, 0x4c, 0x21, 0xd0, 0x73, 0x2f, 0x4c, 0x21, 0xd0, 0x73, 0x2a, 0x4c, 0x21, 0xd0, 0x73, 0x25, 0x4c, 0x21, 0xd0, 0x73, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x73, 0x19, 0x4c, 0x21, 0xd0, 0x73, 0x14, 0x4c, 0x21, 0xd0, 0x73, 0xf, 0x4c, 0x21, 0xd0, 0x73, 0xa, 0x4c, 0x21, 0xd0, 0x73, 0x5, 0x4c, 0x21, 0xd0, 0x73, 0x0, 0xc3},
361 "JCS": {0x4c, 0x21, 0xd0, 0x72, 0x39, 0x4c, 0x21, 0xd0, 0x72, 0x34, 0x4c, 0x21, 0xd0, 0x72, 0x2f, 0x4c, 0x21, 0xd0, 0x72, 0x2a, 0x4c, 0x21, 0xd0, 0x72, 0x25, 0x4c, 0x21, 0xd0, 0x72, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x72, 0x19, 0x4c, 0x21, 0xd0, 0x72, 0x14, 0x4c, 0x21, 0xd0, 0x72, 0xf, 0x4c, 0x21, 0xd0, 0x72, 0xa, 0x4c, 0x21, 0xd0, 0x72, 0x5, 0x4c, 0x21, 0xd0, 0x72, 0x0, 0xc3},
362 "JEQ": {0x4c, 0x21, 0xd0, 0x74, 0x39, 0x4c, 0x21, 0xd0, 0x74, 0x34, 0x4c, 0x21, 0xd0, 0x74, 0x2f, 0x4c, 0x21, 0xd0, 0x74, 0x2a, 0x4c, 0x21, 0xd0, 0x74, 0x25, 0x4c, 0x21, 0xd0, 0x74, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x74, 0x19, 0x4c, 0x21, 0xd0, 0x74, 0x14, 0x4c, 0x21, 0xd0, 0x74, 0xf, 0x4c, 0x21, 0xd0, 0x74, 0xa, 0x4c, 0x21, 0xd0, 0x74, 0x5, 0x4c, 0x21, 0xd0, 0x74, 0x0, 0xc3},
363 "JGE": {0x4c, 0x21, 0xd0, 0x7d, 0x39, 0x4c, 0x21, 0xd0, 0x7d, 0x34, 0x4c, 0x21, 0xd0, 0x7d, 0x2f, 0x4c, 0x21, 0xd0, 0x7d, 0x2a, 0x4c, 0x21, 0xd0, 0x7d, 0x25, 0x4c, 0x21, 0xd0, 0x7d, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x7d, 0x19, 0x4c, 0x21, 0xd0, 0x7d, 0x14, 0x4c, 0x21, 0xd0, 0x7d, 0xf, 0x4c, 0x21, 0xd0, 0x7d, 0xa, 0x4c, 0x21, 0xd0, 0x7d, 0x5, 0x4c, 0x21, 0xd0, 0x7d, 0x0, 0xc3},
364 "JGT": {0x4c, 0x21, 0xd0, 0x7f, 0x39, 0x4c, 0x21, 0xd0, 0x7f, 0x34, 0x4c, 0x21, 0xd0, 0x7f, 0x2f, 0x4c, 0x21, 0xd0, 0x7f, 0x2a, 0x4c, 0x21, 0xd0, 0x7f, 0x25, 0x4c, 0x21, 0xd0, 0x7f, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x7f, 0x19, 0x4c, 0x21, 0xd0, 0x7f, 0x14, 0x4c, 0x21, 0xd0, 0x7f, 0xf, 0x4c, 0x21, 0xd0, 0x7f, 0xa, 0x4c, 0x21, 0xd0, 0x7f, 0x5, 0x4c, 0x21, 0xd0, 0x7f, 0x0, 0xc3},
365 "JHI": {0x4c, 0x21, 0xd0, 0x77, 0x39, 0x4c, 0x21, 0xd0, 0x77, 0x34, 0x4c, 0x21, 0xd0, 0x77, 0x2f, 0x4c, 0x21, 0xd0, 0x77, 0x2a, 0x4c, 0x21, 0xd0, 0x77, 0x25, 0x4c, 0x21, 0xd0, 0x77, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x77, 0x19, 0x4c, 0x21, 0xd0, 0x77, 0x14, 0x4c, 0x21, 0xd0, 0x77, 0xf, 0x4c, 0x21, 0xd0, 0x77, 0xa, 0x4c, 0x21, 0xd0, 0x77, 0x5, 0x4c, 0x21, 0xd0, 0x77, 0x0, 0xc3},
366 "JLE": {0x4c, 0x21, 0xd0, 0x7e, 0x39, 0x4c, 0x21, 0xd0, 0x7e, 0x34, 0x4c, 0x21, 0xd0, 0x7e, 0x2f, 0x4c, 0x21, 0xd0, 0x7e, 0x2a, 0x4c, 0x21, 0xd0, 0x7e, 0x25, 0x4c, 0x21, 0xd0, 0x7e, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x7e, 0x19, 0x4c, 0x21, 0xd0, 0x7e, 0x14, 0x4c, 0x21, 0xd0, 0x7e, 0xf, 0x4c, 0x21, 0xd0, 0x7e, 0xa, 0x4c, 0x21, 0xd0, 0x7e, 0x5, 0x4c, 0x21, 0xd0, 0x7e, 0x0, 0xc3},
367 "JLS": {0x4c, 0x21, 0xd0, 0x76, 0x39, 0x4c, 0x21, 0xd0, 0x76, 0x34, 0x4c, 0x21, 0xd0, 0x76, 0x2f, 0x4c, 0x21, 0xd0, 0x76, 0x2a, 0x4c, 0x21, 0xd0, 0x76, 0x25, 0x4c, 0x21, 0xd0, 0x76, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x76, 0x19, 0x4c, 0x21, 0xd0, 0x76, 0x14, 0x4c, 0x21, 0xd0, 0x76, 0xf, 0x4c, 0x21, 0xd0, 0x76, 0xa, 0x4c, 0x21, 0xd0, 0x76, 0x5, 0x4c, 0x21, 0xd0, 0x76, 0x0, 0xc3},
368 "JLT": {0x4c, 0x21, 0xd0, 0x7c, 0x39, 0x4c, 0x21, 0xd0, 0x7c, 0x34, 0x4c, 0x21, 0xd0, 0x7c, 0x2f, 0x4c, 0x21, 0xd0, 0x7c, 0x2a, 0x4c, 0x21, 0xd0, 0x7c, 0x25, 0x4c, 0x21, 0xd0, 0x7c, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x7c, 0x19, 0x4c, 0x21, 0xd0, 0x7c, 0x14, 0x4c, 0x21, 0xd0, 0x7c, 0xf, 0x4c, 0x21, 0xd0, 0x7c, 0xa, 0x4c, 0x21, 0xd0, 0x7c, 0x5, 0x4c, 0x21, 0xd0, 0x7c, 0x0, 0xc3},
369 "JMI": {0x4c, 0x21, 0xd0, 0x78, 0x39, 0x4c, 0x21, 0xd0, 0x78, 0x34, 0x4c, 0x21, 0xd0, 0x78, 0x2f, 0x4c, 0x21, 0xd0, 0x78, 0x2a, 0x4c, 0x21, 0xd0, 0x78, 0x25, 0x4c, 0x21, 0xd0, 0x78, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x78, 0x19, 0x4c, 0x21, 0xd0, 0x78, 0x14, 0x4c, 0x21, 0xd0, 0x78, 0xf, 0x4c, 0x21, 0xd0, 0x78, 0xa, 0x4c, 0x21, 0xd0, 0x78, 0x5, 0x4c, 0x21, 0xd0, 0x78, 0x0, 0xc3},
370 "JNE": {0x4c, 0x21, 0xd0, 0x75, 0x39, 0x4c, 0x21, 0xd0, 0x75, 0x34, 0x4c, 0x21, 0xd0, 0x75, 0x2f, 0x4c, 0x21, 0xd0, 0x75, 0x2a, 0x4c, 0x21, 0xd0, 0x75, 0x25, 0x4c, 0x21, 0xd0, 0x75, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x75, 0x19, 0x4c, 0x21, 0xd0, 0x75, 0x14, 0x4c, 0x21, 0xd0, 0x75, 0xf, 0x4c, 0x21, 0xd0, 0x75, 0xa, 0x4c, 0x21, 0xd0, 0x75, 0x5, 0x4c, 0x21, 0xd0, 0x75, 0x0, 0xc3},
371 "JPC": {0x4c, 0x21, 0xd0, 0x7b, 0x39, 0x4c, 0x21, 0xd0, 0x7b, 0x34, 0x4c, 0x21, 0xd0, 0x7b, 0x2f, 0x4c, 0x21, 0xd0, 0x7b, 0x2a, 0x4c, 0x21, 0xd0, 0x7b, 0x25, 0x4c, 0x21, 0xd0, 0x7b, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x7b, 0x19, 0x4c, 0x21, 0xd0, 0x7b, 0x14, 0x4c, 0x21, 0xd0, 0x7b, 0xf, 0x4c, 0x21, 0xd0, 0x7b, 0xa, 0x4c, 0x21, 0xd0, 0x7b, 0x5, 0x4c, 0x21, 0xd0, 0x7b, 0x0, 0xc3},
372 "JPS": {0x4c, 0x21, 0xd0, 0x7a, 0x39, 0x4c, 0x21, 0xd0, 0x7a, 0x34, 0x4c, 0x21, 0xd0, 0x7a, 0x2f, 0x4c, 0x21, 0xd0, 0x7a, 0x2a, 0x4c, 0x21, 0xd0, 0x7a, 0x25, 0x4c, 0x21, 0xd0, 0x7a, 0x20, 0x66, 0x90, 0x4c, 0x21, 0xd0, 0x7a, 0x19, 0x4c, 0x21, 0xd0, 0x7a, 0x14, 0x4c, 0x21, 0xd0, 0x7a, 0xf, 0x4c, 0x21, 0xd0, 0x7a, 0xa, 0x4c, 0x21, 0xd0, 0x7a, 0x5, 0x4c, 0x21, 0xd0, 0x7a, 0x0, 0xc3},
373 },
374 },
375 {
376 name: "ANDQ (const to register)",
377 setupFn: func(assembler Assembler) {
378 assembler.CompileConstToRegister(ANDQ, -123, RegR10)
379 },
380 jmpInstToExpectedBytes: map[string][]uint8{
381 "JCC": {0x49, 0x83, 0xe2, 0x85, 0x73, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x73, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x73, 0x0, 0xc3},
382 "JCS": {0x49, 0x83, 0xe2, 0x85, 0x72, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x72, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x72, 0x0, 0xc3},
383 "JEQ": {0x49, 0x83, 0xe2, 0x85, 0x74, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x74, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x74, 0x0, 0xc3},
384 "JGE": {0x49, 0x83, 0xe2, 0x85, 0x7d, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x7d, 0x0, 0xc3},
385 "JGT": {0x49, 0x83, 0xe2, 0x85, 0x7f, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x7f, 0x0, 0xc3},
386 "JHI": {0x49, 0x83, 0xe2, 0x85, 0x77, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x77, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x77, 0x0, 0xc3},
387 "JLE": {0x49, 0x83, 0xe2, 0x85, 0x7e, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x7e, 0x0, 0xc3},
388 "JLS": {0x49, 0x83, 0xe2, 0x85, 0x76, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x76, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x76, 0x0, 0xc3},
389 "JLT": {0x49, 0x83, 0xe2, 0x85, 0x7c, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x7c, 0x0, 0xc3},
390 "JMI": {0x49, 0x83, 0xe2, 0x85, 0x78, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x78, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x78, 0x0, 0xc3},
391 "JNE": {0x49, 0x83, 0xe2, 0x85, 0x75, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x75, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x75, 0x0, 0xc3},
392 "JPC": {0x49, 0x83, 0xe2, 0x85, 0x7b, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x7b, 0x0, 0xc3},
393 "JPS": {0x49, 0x83, 0xe2, 0x85, 0x7a, 0x46, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x40, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x3a, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x34, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x2e, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x26, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x20, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x1a, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x14, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0xe, 0x66, 0x90, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x6, 0x49, 0x83, 0xe2, 0x85, 0x7a, 0x0, 0xc3},
394 },
395 },
396 {
397 name: "INCQ",
398 setupFn: func(assembler Assembler) {
399 assembler.CompileNoneToMemory(INCQ, RegR10, 123)
400 },
401 jmpInstToExpectedBytes: map[string][]uint8{
402 "JCC": {0x49, 0xff, 0x42, 0x7b, 0x73, 0x42, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x3c, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x36, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x30, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x2a, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x24, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x1e, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x18, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x12, 0x49, 0xff, 0x42, 0x7b, 0x73, 0xc, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x73, 0x0, 0xc3},
403 "JCS": {0x49, 0xff, 0x42, 0x7b, 0x72, 0x42, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x3c, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x36, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x30, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x2a, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x24, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x1e, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x18, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x12, 0x49, 0xff, 0x42, 0x7b, 0x72, 0xc, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x72, 0x0, 0xc3},
404 "JEQ": {0x49, 0xff, 0x42, 0x7b, 0x74, 0x46, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x40, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x3a, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x34, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x2e, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x26, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x20, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x1a, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x14, 0x49, 0xff, 0x42, 0x7b, 0x74, 0xe, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x74, 0x0, 0xc3},
405 "JGE": {0x49, 0xff, 0x42, 0x7b, 0x7d, 0x46, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x40, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x3a, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x34, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x2e, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x26, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x20, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x1a, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x14, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0xe, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x7d, 0x0, 0xc3},
406 "JGT": {0x49, 0xff, 0x42, 0x7b, 0x7f, 0x46, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x40, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x3a, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x34, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x2e, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x26, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x20, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x1a, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x14, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0xe, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x7f, 0x0, 0xc3},
407 "JHI": {0x49, 0xff, 0x42, 0x7b, 0x77, 0x42, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x3c, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x36, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x30, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x2a, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x24, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x1e, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x18, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x12, 0x49, 0xff, 0x42, 0x7b, 0x77, 0xc, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x77, 0x0, 0xc3},
408 "JLE": {0x49, 0xff, 0x42, 0x7b, 0x7e, 0x46, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x40, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x3a, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x34, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x2e, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x26, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x20, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x1a, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x14, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0xe, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x7e, 0x0, 0xc3},
409 "JLS": {0x49, 0xff, 0x42, 0x7b, 0x76, 0x42, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x3c, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x36, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x30, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x2a, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x24, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x1e, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x18, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x12, 0x49, 0xff, 0x42, 0x7b, 0x76, 0xc, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x76, 0x0, 0xc3},
410 "JLT": {0x49, 0xff, 0x42, 0x7b, 0x7c, 0x46, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x40, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x3a, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x34, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x2e, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x26, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x20, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x1a, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x14, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0xe, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x7c, 0x0, 0xc3},
411 "JMI": {0x49, 0xff, 0x42, 0x7b, 0x78, 0x42, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x3c, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x36, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x30, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x2a, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x24, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x1e, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x18, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x12, 0x49, 0xff, 0x42, 0x7b, 0x78, 0xc, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x78, 0x0, 0xc3},
412 "JNE": {0x49, 0xff, 0x42, 0x7b, 0x75, 0x46, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x40, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x3a, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x34, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x2e, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x26, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x20, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x1a, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x14, 0x49, 0xff, 0x42, 0x7b, 0x75, 0xe, 0x66, 0x90, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x75, 0x0, 0xc3},
413 "JPC": {0x49, 0xff, 0x42, 0x7b, 0x7b, 0x42, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x3c, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x36, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x30, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x2a, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x24, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x1e, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x18, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x12, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0xc, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x7b, 0x0, 0xc3},
414 "JPS": {0x49, 0xff, 0x42, 0x7b, 0x7a, 0x42, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x3c, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x36, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x30, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x2a, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x24, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x1e, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x18, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x12, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0xc, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x6, 0x49, 0xff, 0x42, 0x7b, 0x7a, 0x0, 0xc3},
415 },
416 },
417 {
418 name: "DECQ",
419 setupFn: func(assembler Assembler) {
420 assembler.CompileNoneToMemory(DECQ, RegR10, 0)
421 },
422 jmpInstToExpectedBytes: map[string][]uint8{
423 "JCC": {0x49, 0xff, 0xa, 0x73, 0x37, 0x49, 0xff, 0xa, 0x73, 0x32, 0x49, 0xff, 0xa, 0x73, 0x2d, 0x49, 0xff, 0xa, 0x73, 0x28, 0x49, 0xff, 0xa, 0x73, 0x23, 0x49, 0xff, 0xa, 0x73, 0x1e, 0x49, 0xff, 0xa, 0x73, 0x19, 0x49, 0xff, 0xa, 0x73, 0x14, 0x49, 0xff, 0xa, 0x73, 0xf, 0x49, 0xff, 0xa, 0x73, 0xa, 0x49, 0xff, 0xa, 0x73, 0x5, 0x49, 0xff, 0xa, 0x73, 0x0, 0xc3},
424 "JCS": {0x49, 0xff, 0xa, 0x72, 0x37, 0x49, 0xff, 0xa, 0x72, 0x32, 0x49, 0xff, 0xa, 0x72, 0x2d, 0x49, 0xff, 0xa, 0x72, 0x28, 0x49, 0xff, 0xa, 0x72, 0x23, 0x49, 0xff, 0xa, 0x72, 0x1e, 0x49, 0xff, 0xa, 0x72, 0x19, 0x49, 0xff, 0xa, 0x72, 0x14, 0x49, 0xff, 0xa, 0x72, 0xf, 0x49, 0xff, 0xa, 0x72, 0xa, 0x49, 0xff, 0xa, 0x72, 0x5, 0x49, 0xff, 0xa, 0x72, 0x0, 0xc3},
425 "JEQ": {0x49, 0xff, 0xa, 0x74, 0x39, 0x49, 0xff, 0xa, 0x74, 0x34, 0x49, 0xff, 0xa, 0x74, 0x2f, 0x49, 0xff, 0xa, 0x74, 0x2a, 0x49, 0xff, 0xa, 0x74, 0x25, 0x49, 0xff, 0xa, 0x74, 0x20, 0x66, 0x90, 0x49, 0xff, 0xa, 0x74, 0x19, 0x49, 0xff, 0xa, 0x74, 0x14, 0x49, 0xff, 0xa, 0x74, 0xf, 0x49, 0xff, 0xa, 0x74, 0xa, 0x49, 0xff, 0xa, 0x74, 0x5, 0x49, 0xff, 0xa, 0x74, 0x0, 0xc3},
426 "JGE": {0x49, 0xff, 0xa, 0x7d, 0x39, 0x49, 0xff, 0xa, 0x7d, 0x34, 0x49, 0xff, 0xa, 0x7d, 0x2f, 0x49, 0xff, 0xa, 0x7d, 0x2a, 0x49, 0xff, 0xa, 0x7d, 0x25, 0x49, 0xff, 0xa, 0x7d, 0x20, 0x66, 0x90, 0x49, 0xff, 0xa, 0x7d, 0x19, 0x49, 0xff, 0xa, 0x7d, 0x14, 0x49, 0xff, 0xa, 0x7d, 0xf, 0x49, 0xff, 0xa, 0x7d, 0xa, 0x49, 0xff, 0xa, 0x7d, 0x5, 0x49, 0xff, 0xa, 0x7d, 0x0, 0xc3},
427 "JGT": {0x49, 0xff, 0xa, 0x7f, 0x39, 0x49, 0xff, 0xa, 0x7f, 0x34, 0x49, 0xff, 0xa, 0x7f, 0x2f, 0x49, 0xff, 0xa, 0x7f, 0x2a, 0x49, 0xff, 0xa, 0x7f, 0x25, 0x49, 0xff, 0xa, 0x7f, 0x20, 0x66, 0x90, 0x49, 0xff, 0xa, 0x7f, 0x19, 0x49, 0xff, 0xa, 0x7f, 0x14, 0x49, 0xff, 0xa, 0x7f, 0xf, 0x49, 0xff, 0xa, 0x7f, 0xa, 0x49, 0xff, 0xa, 0x7f, 0x5, 0x49, 0xff, 0xa, 0x7f, 0x0, 0xc3},
428 "JHI": {0x49, 0xff, 0xa, 0x77, 0x37, 0x49, 0xff, 0xa, 0x77, 0x32, 0x49, 0xff, 0xa, 0x77, 0x2d, 0x49, 0xff, 0xa, 0x77, 0x28, 0x49, 0xff, 0xa, 0x77, 0x23, 0x49, 0xff, 0xa, 0x77, 0x1e, 0x49, 0xff, 0xa, 0x77, 0x19, 0x49, 0xff, 0xa, 0x77, 0x14, 0x49, 0xff, 0xa, 0x77, 0xf, 0x49, 0xff, 0xa, 0x77, 0xa, 0x49, 0xff, 0xa, 0x77, 0x5, 0x49, 0xff, 0xa, 0x77, 0x0, 0xc3},
429 "JLE": {0x49, 0xff, 0xa, 0x7e, 0x39, 0x49, 0xff, 0xa, 0x7e, 0x34, 0x49, 0xff, 0xa, 0x7e, 0x2f, 0x49, 0xff, 0xa, 0x7e, 0x2a, 0x49, 0xff, 0xa, 0x7e, 0x25, 0x49, 0xff, 0xa, 0x7e, 0x20, 0x66, 0x90, 0x49, 0xff, 0xa, 0x7e, 0x19, 0x49, 0xff, 0xa, 0x7e, 0x14, 0x49, 0xff, 0xa, 0x7e, 0xf, 0x49, 0xff, 0xa, 0x7e, 0xa, 0x49, 0xff, 0xa, 0x7e, 0x5, 0x49, 0xff, 0xa, 0x7e, 0x0, 0xc3},
430 "JLS": {0x49, 0xff, 0xa, 0x76, 0x37, 0x49, 0xff, 0xa, 0x76, 0x32, 0x49, 0xff, 0xa, 0x76, 0x2d, 0x49, 0xff, 0xa, 0x76, 0x28, 0x49, 0xff, 0xa, 0x76, 0x23, 0x49, 0xff, 0xa, 0x76, 0x1e, 0x49, 0xff, 0xa, 0x76, 0x19, 0x49, 0xff, 0xa, 0x76, 0x14, 0x49, 0xff, 0xa, 0x76, 0xf, 0x49, 0xff, 0xa, 0x76, 0xa, 0x49, 0xff, 0xa, 0x76, 0x5, 0x49, 0xff, 0xa, 0x76, 0x0, 0xc3},
431 "JLT": {0x49, 0xff, 0xa, 0x7c, 0x39, 0x49, 0xff, 0xa, 0x7c, 0x34, 0x49, 0xff, 0xa, 0x7c, 0x2f, 0x49, 0xff, 0xa, 0x7c, 0x2a, 0x49, 0xff, 0xa, 0x7c, 0x25, 0x49, 0xff, 0xa, 0x7c, 0x20, 0x66, 0x90, 0x49, 0xff, 0xa, 0x7c, 0x19, 0x49, 0xff, 0xa, 0x7c, 0x14, 0x49, 0xff, 0xa, 0x7c, 0xf, 0x49, 0xff, 0xa, 0x7c, 0xa, 0x49, 0xff, 0xa, 0x7c, 0x5, 0x49, 0xff, 0xa, 0x7c, 0x0, 0xc3},
432 "JMI": {0x49, 0xff, 0xa, 0x78, 0x37, 0x49, 0xff, 0xa, 0x78, 0x32, 0x49, 0xff, 0xa, 0x78, 0x2d, 0x49, 0xff, 0xa, 0x78, 0x28, 0x49, 0xff, 0xa, 0x78, 0x23, 0x49, 0xff, 0xa, 0x78, 0x1e, 0x49, 0xff, 0xa, 0x78, 0x19, 0x49, 0xff, 0xa, 0x78, 0x14, 0x49, 0xff, 0xa, 0x78, 0xf, 0x49, 0xff, 0xa, 0x78, 0xa, 0x49, 0xff, 0xa, 0x78, 0x5, 0x49, 0xff, 0xa, 0x78, 0x0, 0xc3},
433 "JNE": {0x49, 0xff, 0xa, 0x75, 0x39, 0x49, 0xff, 0xa, 0x75, 0x34, 0x49, 0xff, 0xa, 0x75, 0x2f, 0x49, 0xff, 0xa, 0x75, 0x2a, 0x49, 0xff, 0xa, 0x75, 0x25, 0x49, 0xff, 0xa, 0x75, 0x20, 0x66, 0x90, 0x49, 0xff, 0xa, 0x75, 0x19, 0x49, 0xff, 0xa, 0x75, 0x14, 0x49, 0xff, 0xa, 0x75, 0xf, 0x49, 0xff, 0xa, 0x75, 0xa, 0x49, 0xff, 0xa, 0x75, 0x5, 0x49, 0xff, 0xa, 0x75, 0x0, 0xc3},
434 "JPC": {0x49, 0xff, 0xa, 0x7b, 0x37, 0x49, 0xff, 0xa, 0x7b, 0x32, 0x49, 0xff, 0xa, 0x7b, 0x2d, 0x49, 0xff, 0xa, 0x7b, 0x28, 0x49, 0xff, 0xa, 0x7b, 0x23, 0x49, 0xff, 0xa, 0x7b, 0x1e, 0x49, 0xff, 0xa, 0x7b, 0x19, 0x49, 0xff, 0xa, 0x7b, 0x14, 0x49, 0xff, 0xa, 0x7b, 0xf, 0x49, 0xff, 0xa, 0x7b, 0xa, 0x49, 0xff, 0xa, 0x7b, 0x5, 0x49, 0xff, 0xa, 0x7b, 0x0, 0xc3},
435 "JPS": {0x49, 0xff, 0xa, 0x7a, 0x37, 0x49, 0xff, 0xa, 0x7a, 0x32, 0x49, 0xff, 0xa, 0x7a, 0x2d, 0x49, 0xff, 0xa, 0x7a, 0x28, 0x49, 0xff, 0xa, 0x7a, 0x23, 0x49, 0xff, 0xa, 0x7a, 0x1e, 0x49, 0xff, 0xa, 0x7a, 0x19, 0x49, 0xff, 0xa, 0x7a, 0x14, 0x49, 0xff, 0xa, 0x7a, 0xf, 0x49, 0xff, 0xa, 0x7a, 0xa, 0x49, 0xff, 0xa, 0x7a, 0x5, 0x49, 0xff, 0xa, 0x7a, 0x0, 0xc3},
436 },
437 },
438 }
439
440 code := asm.CodeSegment{}
441 defer func() { require.NoError(t, code.Unmap()) }()
442
443 for _, tc := range tests {
444 for _, jmpInst := range []asm.Instruction{JCC, JCS, JEQ, JGE, JGT, JHI, JLE, JLS, JLT, JMI, JNE, JPC, JPS} {
445 name := tc.name + "/" + InstructionName(jmpInst)
446
447 a := NewAssembler()
448
449 var jmps []asm.Node
450 for i := 0; i < 12; i++ {
451 tc.setupFn(a)
452 jmps = append(jmps, a.CompileJump(jmpInst))
453 }
454
455 target := a.CompileStandAlone(RET)
456 for _, jmp := range jmps {
457 jmp.AssignJumpTarget(target)
458 }
459
460 buf := code.NextCodeSection()
461 err := a.Assemble(buf)
462 require.NoError(t, err, name)
463
464 actual := buf.Bytes()
465 require.Equal(t, tc.jmpInstToExpectedBytes[InstructionName(jmpInst)], actual, name)
466 }
467 }
468 }
469
470 func TestAssemblerImpl_encodeNoneToBranch_errors(t *testing.T) {
471 tests := []struct {
472 n *nodeImpl
473 expErr string
474 }{
475 {
476 n: &nodeImpl{types: operandTypesNoneToBranch, instruction: JMP},
477 expErr: "jump target must not be nil for relative JMP",
478 },
479 }
480
481 code := asm.CodeSegment{}
482 defer func() { require.NoError(t, code.Unmap()) }()
483
484 for _, tc := range tests {
485 a := NewAssembler()
486 buf := code.NextCodeSection()
487 err := a.encodeRelativeJump(buf, tc.n)
488 require.EqualError(t, err, tc.expErr)
489 }
490 }
491
492 func TestAssemblerImpl_encodeNoneToBranch_backward_jumps(t *testing.T) {
493 t.Run("too large offset", func(t *testing.T) {
494 code := asm.CodeSegment{}
495 defer func() { require.NoError(t, code.Unmap()) }()
496
497 a := NewAssembler()
498 targetOffsetInBinaryField := uint64(0)
499 OffsetInBinaryField := uint64(math.MaxInt32)
500 node := &nodeImpl{
501 instruction: JMP,
502 jumpTarget: &nodeImpl{offsetInBinary: targetOffsetInBinaryField},
503 flag: nodeFlagBackwardJump,
504 offsetInBinary: OffsetInBinaryField,
505 }
506
507 buf := code.NextCodeSection()
508 err := a.encodeRelativeJump(buf, node)
509 require.Error(t, err)
510 })
511
512 code := asm.CodeSegment{}
513 defer func() { require.NoError(t, code.Unmap()) }()
514
515 for _, tc := range []struct {
516 jmpInst asm.Instruction
517 isShortJump bool
518 expected []byte
519 }{
520 {jmpInst: JCC, isShortJump: true, expected: []byte{0x99, 0x73, 0xfd}},
521 {jmpInst: JCS, isShortJump: true, expected: []byte{0x99, 0x72, 0xfd}},
522 {jmpInst: JEQ, isShortJump: true, expected: []byte{0x99, 0x74, 0xfd}},
523 {jmpInst: JGE, isShortJump: true, expected: []byte{0x99, 0x7d, 0xfd}},
524 {jmpInst: JGT, isShortJump: true, expected: []byte{0x99, 0x7f, 0xfd}},
525 {jmpInst: JHI, isShortJump: true, expected: []byte{0x99, 0x77, 0xfd}},
526 {jmpInst: JLE, isShortJump: true, expected: []byte{0x99, 0x7e, 0xfd}},
527 {jmpInst: JLS, isShortJump: true, expected: []byte{0x99, 0x76, 0xfd}},
528 {jmpInst: JLT, isShortJump: true, expected: []byte{0x99, 0x7c, 0xfd}},
529 {jmpInst: JMI, isShortJump: true, expected: []byte{0x99, 0x78, 0xfd}},
530 {jmpInst: JMP, isShortJump: true, expected: []byte{0x99, 0xeb, 0xfd}},
531 {jmpInst: JNE, isShortJump: true, expected: []byte{0x99, 0x75, 0xfd}},
532 {jmpInst: JPC, isShortJump: true, expected: []byte{0x99, 0x7b, 0xfd}},
533 {jmpInst: JPS, isShortJump: true, expected: []byte{0x99, 0x7a, 0xfd}},
534 {jmpInst: JPL, isShortJump: true, expected: []byte{0x99, 0x79, 0xfd}},
535 {jmpInst: JCC, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x83, 0x79, 0xff, 0xff, 0xff}},
536 {jmpInst: JCS, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x82, 0x79, 0xff, 0xff, 0xff}},
537 {jmpInst: JEQ, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x84, 0x79, 0xff, 0xff, 0xff}},
538 {jmpInst: JGE, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x8d, 0x79, 0xff, 0xff, 0xff}},
539 {jmpInst: JGT, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x8f, 0x79, 0xff, 0xff, 0xff}},
540 {jmpInst: JHI, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x87, 0x79, 0xff, 0xff, 0xff}},
541 {jmpInst: JLE, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x8e, 0x79, 0xff, 0xff, 0xff}},
542 {jmpInst: JLS, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x86, 0x79, 0xff, 0xff, 0xff}},
543 {jmpInst: JLT, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x8c, 0x79, 0xff, 0xff, 0xff}},
544 {jmpInst: JMI, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x88, 0x79, 0xff, 0xff, 0xff}},
545 {jmpInst: JMP, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xe9, 0x7a, 0xff, 0xff, 0xff}},
546 {jmpInst: JNE, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x85, 0x79, 0xff, 0xff, 0xff}},
547 {jmpInst: JPC, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x8b, 0x79, 0xff, 0xff, 0xff}},
548 {jmpInst: JPS, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x8a, 0x79, 0xff, 0xff, 0xff}},
549 {jmpInst: JPL, isShortJump: false, expected: []byte{0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf, 0x89, 0x79, 0xff, 0xff, 0xff}},
550 } {
551 name := fmt.Sprintf("%s/short=%v", InstructionName(tc.jmpInst), tc.isShortJump)
552 a := NewAssembler()
553 const dummyInstruction = CDQ
554 target := a.CompileStandAlone(dummyInstruction)
555 if !tc.isShortJump {
556 for i := 0; i < 128; i++ {
557 a.CompileStandAlone(dummyInstruction)
558 }
559 }
560 jmp := a.CompileJump(tc.jmpInst)
561 jmp.AssignJumpTarget(target)
562
563 buf := code.NextCodeSection()
564 err := a.Assemble(buf)
565 require.NoError(t, err, name)
566
567 actual := buf.Bytes()
568 require.Equal(t, tc.expected, actual, name)
569 }
570 }
571
572 func TestAssemblerImpl_encodeNoneToBranch_forward_jumps(t *testing.T) {
573 code := asm.CodeSegment{}
574 defer func() { require.NoError(t, code.Unmap()) }()
575
576 for _, tc := range []struct {
577 jmpInst asm.Instruction
578 isShortJump bool
579 expected []byte
580 }{
581 {jmpInst: JCC, isShortJump: true, expected: []byte{0x73, 0x0, 0x99}},
582 {jmpInst: JCS, isShortJump: true, expected: []byte{0x72, 0x0, 0x99}},
583 {jmpInst: JEQ, isShortJump: true, expected: []byte{0x74, 0x0, 0x99}},
584 {jmpInst: JGE, isShortJump: true, expected: []byte{0x7d, 0x0, 0x99}},
585 {jmpInst: JGT, isShortJump: true, expected: []byte{0x7f, 0x0, 0x99}},
586 {jmpInst: JHI, isShortJump: true, expected: []byte{0x77, 0x0, 0x99}},
587 {jmpInst: JLE, isShortJump: true, expected: []byte{0x7e, 0x0, 0x99}},
588 {jmpInst: JLS, isShortJump: true, expected: []byte{0x76, 0x0, 0x99}},
589 {jmpInst: JLT, isShortJump: true, expected: []byte{0x7c, 0x0, 0x99}},
590 {jmpInst: JMI, isShortJump: true, expected: []byte{0x78, 0x0, 0x99}},
591 {jmpInst: JMP, isShortJump: true, expected: []byte{0xeb, 0x0, 0x99}},
592 {jmpInst: JNE, isShortJump: true, expected: []byte{0x75, 0x0, 0x99}},
593 {jmpInst: JPC, isShortJump: true, expected: []byte{0x7b, 0x0, 0x99}},
594 {jmpInst: JPS, isShortJump: true, expected: []byte{0x7a, 0x0, 0x99}},
595 {jmpInst: JPL, isShortJump: true, expected: []byte{0x79, 0x0, 0x99}},
596 {jmpInst: JCC, isShortJump: false, expected: []byte{0xf, 0x83, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
597 {jmpInst: JCS, isShortJump: false, expected: []byte{0xf, 0x82, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
598 {jmpInst: JEQ, isShortJump: false, expected: []byte{0xf, 0x84, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
599 {jmpInst: JGE, isShortJump: false, expected: []byte{0xf, 0x8d, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
600 {jmpInst: JGT, isShortJump: false, expected: []byte{0xf, 0x8f, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
601 {jmpInst: JHI, isShortJump: false, expected: []byte{0xf, 0x87, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
602 {jmpInst: JLE, isShortJump: false, expected: []byte{0xf, 0x8e, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
603 {jmpInst: JLS, isShortJump: false, expected: []byte{0xf, 0x86, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
604 {jmpInst: JLT, isShortJump: false, expected: []byte{0xf, 0x8c, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
605 {jmpInst: JMI, isShortJump: false, expected: []byte{0xf, 0x88, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
606 {jmpInst: JMP, isShortJump: false, expected: []byte{0xe9, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
607 {jmpInst: JNE, isShortJump: false, expected: []byte{0xf, 0x85, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
608 {jmpInst: JPC, isShortJump: false, expected: []byte{0xf, 0x8b, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
609 {jmpInst: JPS, isShortJump: false, expected: []byte{0xf, 0x8a, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
610 {jmpInst: JPL, isShortJump: false, expected: []byte{0xf, 0x89, 0x80, 0x0, 0x0, 0x0, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}},
611 } {
612 name := fmt.Sprintf("%s/short=%v", InstructionName(tc.jmpInst), tc.isShortJump)
613
614 a := NewAssembler()
615 const dummyInstruction = CDQ
616 jmp := a.CompileJump(tc.jmpInst)
617
618 if !tc.isShortJump {
619 for i := 0; i < 128; i++ {
620 a.CompileStandAlone(dummyInstruction)
621 }
622 }
623 target := a.CompileStandAlone(dummyInstruction)
624 jmp.AssignJumpTarget(target)
625
626 buf := code.NextCodeSection()
627 err := a.Assemble(buf)
628 require.NoError(t, err, name)
629
630 actual := buf.Bytes()
631 require.Equal(t, tc.expected, actual, name)
632 }
633 }
634
View as plain text