github.com/wasilibs/wazerox@v0.0.0-20240124024944-4923be63ab5f/internal/asm/amd64/impl_4_test.go (about) 1 package amd64 2 3 import ( 4 "math" 5 "testing" 6 7 "github.com/wasilibs/wazerox/internal/asm" 8 "github.com/wasilibs/wazerox/internal/testing/require" 9 ) 10 11 func TestAssemblerImpl_encodeConstToRegister(t *testing.T) { 12 t.Run("error", func(t *testing.T) { 13 tests := []struct { 14 n *nodeImpl 15 expErr string 16 }{ 17 { 18 n: &nodeImpl{instruction: RET, types: operandTypesConstToRegister, dstReg: RegAX}, 19 expErr: "RET is unsupported for ConstToRegister type", 20 }, 21 { 22 n: &nodeImpl{instruction: PSLLD, types: operandTypesConstToRegister}, 23 expErr: "PSLLD needs float register but got nil", 24 }, 25 { 26 n: &nodeImpl{instruction: PSLLD, types: operandTypesConstToRegister, dstReg: RegAX}, 27 expErr: "PSLLD needs float register but got AX", 28 }, 29 { 30 n: &nodeImpl{instruction: ADDQ, types: operandTypesConstToRegister, dstReg: RegX0}, 31 expErr: "ADDQ needs int register but got X0", 32 }, 33 { 34 n: &nodeImpl{instruction: PSLLD, types: operandTypesConstToRegister, dstReg: RegX0, srcConst: 2199023255552}, 35 expErr: "constant must fit in 32-bit integer for PSLLD, but got 2199023255552", 36 }, 37 { 38 n: &nodeImpl{instruction: SHLQ, types: operandTypesConstToRegister, dstReg: RegR10, srcConst: 32768}, 39 expErr: "constant must fit in positive 8-bit integer for SHLQ, but got 32768", 40 }, 41 { 42 n: &nodeImpl{instruction: PSRLQ, types: operandTypesConstToRegister, dstReg: RegX0, srcConst: 32768}, 43 expErr: "constant must fit in signed 8-bit integer for PSRLQ, but got 32768", 44 }, 45 } 46 47 code := asm.CodeSegment{} 48 defer func() { require.NoError(t, code.Unmap()) }() 49 50 for _, tc := range tests { 51 a := NewAssembler() 52 buf := code.NextCodeSection() 53 err := a.encodeConstToRegister(buf, tc.n) 54 require.EqualError(t, err, tc.expErr) 55 } 56 }) 57 58 tests := []struct { 59 name string 60 c int64 61 inst asm.Instruction 62 dstReg asm.Register 63 exp []byte 64 }{ 65 {name: "ADDQ/c=0/dst=BX", inst: ADDQ, c: 0x0, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xc3, 0x0}}, 66 {name: "ADDQ/c=1/dst=BX", inst: ADDQ, c: 0x1, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xc3, 0x1}}, 67 {name: "ADDQ/c=-1/dst=BX", inst: ADDQ, c: -0x1, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xc3, 0xff}}, 68 {name: "ADDQ/c=11/dst=BX", inst: ADDQ, c: 0xb, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xc3, 0xb}}, 69 {name: "ADDQ/c=-11/dst=BX", inst: ADDQ, c: -0xb, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xc3, 0xf5}}, 70 {name: "ADDQ/c=1243/dst=BX", inst: ADDQ, c: 0x4db, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xc3, 0xdb, 0x4, 0x0, 0x0}}, 71 {name: "ADDQ/c=-1234/dst=BX", inst: ADDQ, c: -0x4d2, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xc3, 0x2e, 0xfb, 0xff, 0xff}}, 72 {name: "ADDQ/c=255/dst=BX", inst: ADDQ, c: 0xff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xc3, 0xff, 0x0, 0x0, 0x0}}, 73 {name: "ADDQ/c=2147483647/dst=BX", inst: ADDQ, c: 0x7fffffff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xc3, 0xff, 0xff, 0xff, 0x7f}}, 74 {name: "ADDQ/c=-2147483648/dst=BX", inst: ADDQ, c: -0x80000000, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xc3, 0x0, 0x0, 0x0, 0x80}}, 75 {name: "ADDQ/c=32767/dst=BX", inst: ADDQ, c: 0x7fff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xc3, 0xff, 0x7f, 0x0, 0x0}}, 76 {name: "ADDQ/c=4294967295/dst=BX", inst: ADDQ, c: 0xffffffff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xc3, 0xff, 0xff, 0xff, 0xff}}, 77 {name: "ADDQ/c=-32768/dst=BX", inst: ADDQ, c: -0x8000, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xc3, 0x0, 0x80, 0xff, 0xff}}, 78 {name: "ADDQ/c=0/dst=R15", inst: ADDQ, c: 0x0, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xc7, 0x0}}, 79 {name: "ADDQ/c=1/dst=R15", inst: ADDQ, c: 0x1, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xc7, 0x1}}, 80 {name: "ADDQ/c=-1/dst=R15", inst: ADDQ, c: -0x1, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xc7, 0xff}}, 81 {name: "ADDQ/c=11/dst=R15", inst: ADDQ, c: 0xb, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xc7, 0xb}}, 82 {name: "ADDQ/c=-11/dst=R15", inst: ADDQ, c: -0xb, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xc7, 0xf5}}, 83 {name: "ADDQ/c=1243/dst=R15", inst: ADDQ, c: 0x4db, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xc7, 0xdb, 0x4, 0x0, 0x0}}, 84 {name: "ADDQ/c=-1234/dst=R15", inst: ADDQ, c: -0x4d2, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xc7, 0x2e, 0xfb, 0xff, 0xff}}, 85 {name: "ADDQ/c=255/dst=R15", inst: ADDQ, c: 0xff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xc7, 0xff, 0x0, 0x0, 0x0}}, 86 {name: "ADDQ/c=2147483647/dst=R15", inst: ADDQ, c: 0x7fffffff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xc7, 0xff, 0xff, 0xff, 0x7f}}, 87 {name: "ADDQ/c=-2147483648/dst=R15", inst: ADDQ, c: -0x80000000, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xc7, 0x0, 0x0, 0x0, 0x80}}, 88 {name: "ADDQ/c=32767/dst=R15", inst: ADDQ, c: 0x7fff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xc7, 0xff, 0x7f, 0x0, 0x0}}, 89 {name: "ADDQ/c=4294967295/dst=R15", inst: ADDQ, c: 0xffffffff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xc7, 0xff, 0xff, 0xff, 0xff}}, 90 {name: "ADDQ/c=-32768/dst=R15", inst: ADDQ, c: -0x8000, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xc7, 0x0, 0x80, 0xff, 0xff}}, 91 {name: "ANDQ/c=0/dst=BX", inst: ANDQ, c: 0x0, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xe3, 0x0}}, 92 {name: "ANDQ/c=1/dst=BX", inst: ANDQ, c: 0x1, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xe3, 0x1}}, 93 {name: "ANDQ/c=-1/dst=BX", inst: ANDQ, c: -0x1, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xe3, 0xff}}, 94 {name: "ANDQ/c=11/dst=BX", inst: ANDQ, c: 0xb, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xe3, 0xb}}, 95 {name: "ANDQ/c=-11/dst=BX", inst: ANDQ, c: -0xb, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xe3, 0xf5}}, 96 {name: "ANDQ/c=1243/dst=BX", inst: ANDQ, c: 0x4db, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xe3, 0xdb, 0x4, 0x0, 0x0}}, 97 {name: "ANDQ/c=-1234/dst=BX", inst: ANDQ, c: -0x4d2, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xe3, 0x2e, 0xfb, 0xff, 0xff}}, 98 {name: "ANDQ/c=255/dst=BX", inst: ANDQ, c: 0xff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xe3, 0xff, 0x0, 0x0, 0x0}}, 99 {name: "ANDQ/c=2147483647/dst=BX", inst: ANDQ, c: 0x7fffffff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xe3, 0xff, 0xff, 0xff, 0x7f}}, 100 {name: "ANDQ/c=-2147483648/dst=BX", inst: ANDQ, c: -0x80000000, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xe3, 0x0, 0x0, 0x0, 0x80}}, 101 {name: "ANDQ/c=32767/dst=BX", inst: ANDQ, c: 0x7fff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xe3, 0xff, 0x7f, 0x0, 0x0}}, 102 {name: "ANDQ/c=4294967295/dst=BX", inst: ANDQ, c: 0xffffffff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xe3, 0xff, 0xff, 0xff, 0xff}}, 103 {name: "ANDQ/c=-32768/dst=BX", inst: ANDQ, c: -0x8000, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xe3, 0x0, 0x80, 0xff, 0xff}}, 104 {name: "ANDQ/c=0/dst=R15", inst: ANDQ, c: 0x0, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xe7, 0x0}}, 105 {name: "ANDQ/c=1/dst=R15", inst: ANDQ, c: 0x1, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xe7, 0x1}}, 106 {name: "ANDQ/c=-1/dst=R15", inst: ANDQ, c: -0x1, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xe7, 0xff}}, 107 {name: "ANDQ/c=11/dst=R15", inst: ANDQ, c: 0xb, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xe7, 0xb}}, 108 {name: "ANDQ/c=-11/dst=R15", inst: ANDQ, c: -0xb, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xe7, 0xf5}}, 109 {name: "ANDQ/c=1243/dst=R15", inst: ANDQ, c: 0x4db, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xe7, 0xdb, 0x4, 0x0, 0x0}}, 110 {name: "ANDQ/c=-1234/dst=R15", inst: ANDQ, c: -0x4d2, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xe7, 0x2e, 0xfb, 0xff, 0xff}}, 111 {name: "ANDQ/c=255/dst=R15", inst: ANDQ, c: 0xff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xe7, 0xff, 0x0, 0x0, 0x0}}, 112 {name: "ANDQ/c=2147483647/dst=R15", inst: ANDQ, c: 0x7fffffff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xe7, 0xff, 0xff, 0xff, 0x7f}}, 113 {name: "ANDQ/c=-2147483648/dst=R15", inst: ANDQ, c: -0x80000000, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xe7, 0x0, 0x0, 0x0, 0x80}}, 114 {name: "ANDQ/c=32767/dst=R15", inst: ANDQ, c: 0x7fff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xe7, 0xff, 0x7f, 0x0, 0x0}}, 115 {name: "ANDQ/c=4294967295/dst=R15", inst: ANDQ, c: 0xffffffff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xe7, 0xff, 0xff, 0xff, 0xff}}, 116 {name: "ANDQ/c=-32768/dst=R15", inst: ANDQ, c: -0x8000, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xe7, 0x0, 0x80, 0xff, 0xff}}, 117 {name: "MOVL/c=0/dst=BX", inst: MOVL, c: 0x0, dstReg: RegBX, exp: []byte{0xbb, 0x0, 0x0, 0x0, 0x0}}, 118 {name: "MOVL/c=1/dst=BX", inst: MOVL, c: 0x1, dstReg: RegBX, exp: []byte{0xbb, 0x1, 0x0, 0x0, 0x0}}, 119 {name: "MOVL/c=-1/dst=BX", inst: MOVL, c: -0x1, dstReg: RegBX, exp: []byte{0xbb, 0xff, 0xff, 0xff, 0xff}}, 120 {name: "MOVL/c=11/dst=BX", inst: MOVL, c: 0xb, dstReg: RegBX, exp: []byte{0xbb, 0xb, 0x0, 0x0, 0x0}}, 121 {name: "MOVL/c=-11/dst=BX", inst: MOVL, c: -0xb, dstReg: RegBX, exp: []byte{0xbb, 0xf5, 0xff, 0xff, 0xff}}, 122 {name: "MOVL/c=1243/dst=BX", inst: MOVL, c: 0x4db, dstReg: RegBX, exp: []byte{0xbb, 0xdb, 0x4, 0x0, 0x0}}, 123 {name: "MOVL/c=-1234/dst=BX", inst: MOVL, c: -0x4d2, dstReg: RegBX, exp: []byte{0xbb, 0x2e, 0xfb, 0xff, 0xff}}, 124 {name: "MOVL/c=255/dst=BX", inst: MOVL, c: 0xff, dstReg: RegBX, exp: []byte{0xbb, 0xff, 0x0, 0x0, 0x0}}, 125 {name: "MOVL/c=2147483647/dst=BX", inst: MOVL, c: 0x7fffffff, dstReg: RegBX, exp: []byte{0xbb, 0xff, 0xff, 0xff, 0x7f}}, 126 {name: "MOVL/c=-2147483648/dst=BX", inst: MOVL, c: -0x80000000, dstReg: RegBX, exp: []byte{0xbb, 0x0, 0x0, 0x0, 0x80}}, 127 {name: "MOVL/c=32767/dst=BX", inst: MOVL, c: 0x7fff, dstReg: RegBX, exp: []byte{0xbb, 0xff, 0x7f, 0x0, 0x0}}, 128 {name: "MOVL/c=4294967295/dst=BX", inst: MOVL, c: 0xffffffff, dstReg: RegBX, exp: []byte{0xbb, 0xff, 0xff, 0xff, 0xff}}, 129 {name: "MOVL/c=-32768/dst=BX", inst: MOVL, c: -0x8000, dstReg: RegBX, exp: []byte{0xbb, 0x0, 0x80, 0xff, 0xff}}, 130 {name: "MOVL/c=0/dst=R15", inst: MOVL, c: 0x0, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0x0, 0x0, 0x0, 0x0}}, 131 {name: "MOVL/c=1/dst=R15", inst: MOVL, c: 0x1, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0x1, 0x0, 0x0, 0x0}}, 132 {name: "MOVL/c=-1/dst=R15", inst: MOVL, c: -0x1, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0xff, 0xff, 0xff, 0xff}}, 133 {name: "MOVL/c=11/dst=R15", inst: MOVL, c: 0xb, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0xb, 0x0, 0x0, 0x0}}, 134 {name: "MOVL/c=-11/dst=R15", inst: MOVL, c: -0xb, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0xf5, 0xff, 0xff, 0xff}}, 135 {name: "MOVL/c=1243/dst=R15", inst: MOVL, c: 0x4db, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0xdb, 0x4, 0x0, 0x0}}, 136 {name: "MOVL/c=-1234/dst=R15", inst: MOVL, c: -0x4d2, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0x2e, 0xfb, 0xff, 0xff}}, 137 {name: "MOVL/c=255/dst=R15", inst: MOVL, c: 0xff, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0xff, 0x0, 0x0, 0x0}}, 138 {name: "MOVL/c=2147483647/dst=R15", inst: MOVL, c: 0x7fffffff, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0xff, 0xff, 0xff, 0x7f}}, 139 {name: "MOVL/c=-2147483648/dst=R15", inst: MOVL, c: -0x80000000, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0x0, 0x0, 0x0, 0x80}}, 140 {name: "MOVL/c=32767/dst=R15", inst: MOVL, c: 0x7fff, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0xff, 0x7f, 0x0, 0x0}}, 141 {name: "MOVL/c=4294967295/dst=R15", inst: MOVL, c: 0xffffffff, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0xff, 0xff, 0xff, 0xff}}, 142 {name: "MOVL/c=-32768/dst=R15", inst: MOVL, c: -0x8000, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0x0, 0x80, 0xff, 0xff}}, 143 {name: "MOVQ/c=0/dst=BX", inst: MOVQ, c: 0x0, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0x0, 0x0, 0x0, 0x0}}, 144 {name: "MOVQ/c=1/dst=BX", inst: MOVQ, c: 0x1, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0x1, 0x0, 0x0, 0x0}}, 145 {name: "MOVQ/c=-1/dst=BX", inst: MOVQ, c: -0x1, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff}}, 146 {name: "MOVQ/c=11/dst=BX", inst: MOVQ, c: 0xb, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0xb, 0x0, 0x0, 0x0}}, 147 {name: "MOVQ/c=-11/dst=BX", inst: MOVQ, c: -0xb, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0xf5, 0xff, 0xff, 0xff}}, 148 {name: "MOVQ/c=1243/dst=BX", inst: MOVQ, c: 0x4db, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0xdb, 0x4, 0x0, 0x0}}, 149 {name: "MOVQ/c=-1234/dst=BX", inst: MOVQ, c: -0x4d2, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0x2e, 0xfb, 0xff, 0xff}}, 150 {name: "MOVQ/c=255/dst=BX", inst: MOVQ, c: 0xff, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0xff, 0x0, 0x0, 0x0}}, 151 {name: "MOVQ/c=2147483647/dst=BX", inst: MOVQ, c: 0x7fffffff, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0x7f}}, 152 {name: "MOVQ/c=-2147483648/dst=BX", inst: MOVQ, c: -0x80000000, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0x0, 0x0, 0x0, 0x80}}, 153 {name: "MOVQ/c=32767/dst=BX", inst: MOVQ, c: 0x7fff, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0xff, 0x7f, 0x0, 0x0}}, 154 {name: "MOVQ/c=4294967295/dst=BX", inst: MOVQ, c: 0xffffffff, dstReg: RegBX, exp: []byte{0xbb, 0xff, 0xff, 0xff, 0xff}}, 155 {name: "MOVQ/c=-32768/dst=BX", inst: MOVQ, c: -0x8000, dstReg: RegBX, exp: []byte{0x48, 0xc7, 0xc3, 0x0, 0x80, 0xff, 0xff}}, 156 {name: "MOVQ/c=9223372036854775807/dst=BX", inst: MOVQ, c: 0x7fffffffffffffff, dstReg: RegBX, exp: []byte{0x48, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}}, 157 {name: "MOVQ/c=-9223372036854775808/dst=BX", inst: MOVQ, c: -0x8000000000000000, dstReg: RegBX, exp: []byte{0x48, 0xbb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}}, 158 {name: "MOVQ/c=0/dst=R15", inst: MOVQ, c: 0x0, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0x0, 0x0, 0x0, 0x0}}, 159 {name: "MOVQ/c=1/dst=R15", inst: MOVQ, c: 0x1, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0x1, 0x0, 0x0, 0x0}}, 160 {name: "MOVQ/c=-1/dst=R15", inst: MOVQ, c: -0x1, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff}}, 161 {name: "MOVQ/c=11/dst=R15", inst: MOVQ, c: 0xb, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0xb, 0x0, 0x0, 0x0}}, 162 {name: "MOVQ/c=-11/dst=R15", inst: MOVQ, c: -0xb, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0xf5, 0xff, 0xff, 0xff}}, 163 {name: "MOVQ/c=1243/dst=R15", inst: MOVQ, c: 0x4db, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0xdb, 0x4, 0x0, 0x0}}, 164 {name: "MOVQ/c=-1234/dst=R15", inst: MOVQ, c: -0x4d2, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0x2e, 0xfb, 0xff, 0xff}}, 165 {name: "MOVQ/c=255/dst=R15", inst: MOVQ, c: 0xff, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0xff, 0x0, 0x0, 0x0}}, 166 {name: "MOVQ/c=2147483647/dst=R15", inst: MOVQ, c: 0x7fffffff, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0x7f}}, 167 {name: "MOVQ/c=-2147483648/dst=R15", inst: MOVQ, c: -0x80000000, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0x0, 0x0, 0x0, 0x80}}, 168 {name: "MOVQ/c=32767/dst=R15", inst: MOVQ, c: 0x7fff, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0xff, 0x7f, 0x0, 0x0}}, 169 {name: "MOVQ/c=4294967295/dst=R15", inst: MOVQ, c: 0xffffffff, dstReg: RegR15, exp: []byte{0x41, 0xbf, 0xff, 0xff, 0xff, 0xff}}, 170 {name: "MOVQ/c=-32768/dst=R15", inst: MOVQ, c: -0x8000, dstReg: RegR15, exp: []byte{0x49, 0xc7, 0xc7, 0x0, 0x80, 0xff, 0xff}}, 171 {name: "MOVQ/c=9223372036854775807/dst=R15", inst: MOVQ, c: 0x7fffffffffffffff, dstReg: RegR15, exp: []byte{0x49, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}}, 172 {name: "MOVQ/c=-9223372036854775808/dst=R15", inst: MOVQ, c: -0x8000000000000000, dstReg: RegR15, exp: []byte{0x49, 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}}, 173 {name: "SHLQ/c=0/dst=BX", inst: SHLQ, c: 0x0, dstReg: RegBX, exp: []byte{0x48, 0xc1, 0xe3, 0x0}}, 174 {name: "SHLQ/c=1/dst=BX", inst: SHLQ, c: 0x1, dstReg: RegBX, exp: []byte{0x48, 0xd1, 0xe3}}, 175 {name: "SHLQ/c=11/dst=BX", inst: SHLQ, c: 0xb, dstReg: RegBX, exp: []byte{0x48, 0xc1, 0xe3, 0xb}}, 176 {name: "SHLQ/c=255/dst=BX", inst: SHLQ, c: 0xff, dstReg: RegBX, exp: []byte{0x48, 0xc1, 0xe3, 0xff}}, 177 {name: "SHLQ/c=0/dst=R15", inst: SHLQ, c: 0x0, dstReg: RegR15, exp: []byte{0x49, 0xc1, 0xe7, 0x0}}, 178 {name: "SHLQ/c=1/dst=R15", inst: SHLQ, c: 0x1, dstReg: RegR15, exp: []byte{0x49, 0xd1, 0xe7}}, 179 {name: "SHLQ/c=11/dst=R15", inst: SHLQ, c: 0xb, dstReg: RegR15, exp: []byte{0x49, 0xc1, 0xe7, 0xb}}, 180 {name: "SHLQ/c=255/dst=R15", inst: SHLQ, c: 0xff, dstReg: RegR15, exp: []byte{0x49, 0xc1, 0xe7, 0xff}}, 181 {name: "SHRQ/c=0/dst=BX", inst: SHRQ, c: 0x0, dstReg: RegBX, exp: []byte{0x48, 0xc1, 0xeb, 0x0}}, 182 {name: "SHRQ/c=1/dst=BX", inst: SHRQ, c: 0x1, dstReg: RegBX, exp: []byte{0x48, 0xd1, 0xeb}}, 183 {name: "SHRQ/c=11/dst=BX", inst: SHRQ, c: 0xb, dstReg: RegBX, exp: []byte{0x48, 0xc1, 0xeb, 0xb}}, 184 {name: "SHRQ/c=255/dst=BX", inst: SHRQ, c: 0xff, dstReg: RegBX, exp: []byte{0x48, 0xc1, 0xeb, 0xff}}, 185 {name: "SHRQ/c=0/dst=R15", inst: SHRQ, c: 0x0, dstReg: RegR15, exp: []byte{0x49, 0xc1, 0xef, 0x0}}, 186 {name: "SHRQ/c=1/dst=R15", inst: SHRQ, c: 0x1, dstReg: RegR15, exp: []byte{0x49, 0xd1, 0xef}}, 187 {name: "SHRQ/c=11/dst=R15", inst: SHRQ, c: 0xb, dstReg: RegR15, exp: []byte{0x49, 0xc1, 0xef, 0xb}}, 188 {name: "SHRQ/c=255/dst=R15", inst: SHRQ, c: 0xff, dstReg: RegR15, exp: []byte{0x49, 0xc1, 0xef, 0xff}}, 189 {name: "XORL/c=0/dst=BX", inst: XORL, c: 0x0, dstReg: RegBX, exp: []byte{0x83, 0xf3, 0x0}}, 190 {name: "XORL/c=1/dst=BX", inst: XORL, c: 0x1, dstReg: RegBX, exp: []byte{0x83, 0xf3, 0x1}}, 191 {name: "XORL/c=-1/dst=BX", inst: XORL, c: -0x1, dstReg: RegBX, exp: []byte{0x83, 0xf3, 0xff}}, 192 {name: "XORL/c=11/dst=BX", inst: XORL, c: 0xb, dstReg: RegBX, exp: []byte{0x83, 0xf3, 0xb}}, 193 {name: "XORL/c=-11/dst=BX", inst: XORL, c: -0xb, dstReg: RegBX, exp: []byte{0x83, 0xf3, 0xf5}}, 194 {name: "XORL/c=1243/dst=BX", inst: XORL, c: 0x4db, dstReg: RegBX, exp: []byte{0x81, 0xf3, 0xdb, 0x4, 0x0, 0x0}}, 195 {name: "XORL/c=-1234/dst=BX", inst: XORL, c: -0x4d2, dstReg: RegBX, exp: []byte{0x81, 0xf3, 0x2e, 0xfb, 0xff, 0xff}}, 196 {name: "XORL/c=255/dst=BX", inst: XORL, c: 0xff, dstReg: RegBX, exp: []byte{0x81, 0xf3, 0xff, 0x0, 0x0, 0x0}}, 197 {name: "XORL/c=2147483647/dst=BX", inst: XORL, c: 0x7fffffff, dstReg: RegBX, exp: []byte{0x81, 0xf3, 0xff, 0xff, 0xff, 0x7f}}, 198 {name: "XORL/c=-2147483648/dst=BX", inst: XORL, c: -0x80000000, dstReg: RegBX, exp: []byte{0x81, 0xf3, 0x0, 0x0, 0x0, 0x80}}, 199 {name: "XORL/c=32767/dst=BX", inst: XORL, c: 0x7fff, dstReg: RegBX, exp: []byte{0x81, 0xf3, 0xff, 0x7f, 0x0, 0x0}}, 200 {name: "XORL/c=4294967295/dst=BX", inst: XORL, c: 0xffffffff, dstReg: RegBX, exp: []byte{0x81, 0xf3, 0xff, 0xff, 0xff, 0xff}}, 201 {name: "XORL/c=-32768/dst=BX", inst: XORL, c: -0x8000, dstReg: RegBX, exp: []byte{0x81, 0xf3, 0x0, 0x80, 0xff, 0xff}}, 202 {name: "XORL/c=0/dst=R15", inst: XORL, c: 0x0, dstReg: RegR15, exp: []byte{0x41, 0x83, 0xf7, 0x0}}, 203 {name: "XORL/c=1/dst=R15", inst: XORL, c: 0x1, dstReg: RegR15, exp: []byte{0x41, 0x83, 0xf7, 0x1}}, 204 {name: "XORL/c=-1/dst=R15", inst: XORL, c: -0x1, dstReg: RegR15, exp: []byte{0x41, 0x83, 0xf7, 0xff}}, 205 {name: "XORL/c=11/dst=R15", inst: XORL, c: 0xb, dstReg: RegR15, exp: []byte{0x41, 0x83, 0xf7, 0xb}}, 206 {name: "XORL/c=-11/dst=R15", inst: XORL, c: -0xb, dstReg: RegR15, exp: []byte{0x41, 0x83, 0xf7, 0xf5}}, 207 {name: "XORL/c=1243/dst=R15", inst: XORL, c: 0x4db, dstReg: RegR15, exp: []byte{0x41, 0x81, 0xf7, 0xdb, 0x4, 0x0, 0x0}}, 208 {name: "XORL/c=-1234/dst=R15", inst: XORL, c: -0x4d2, dstReg: RegR15, exp: []byte{0x41, 0x81, 0xf7, 0x2e, 0xfb, 0xff, 0xff}}, 209 {name: "XORL/c=255/dst=R15", inst: XORL, c: 0xff, dstReg: RegR15, exp: []byte{0x41, 0x81, 0xf7, 0xff, 0x0, 0x0, 0x0}}, 210 {name: "XORL/c=2147483647/dst=R15", inst: XORL, c: 0x7fffffff, dstReg: RegR15, exp: []byte{0x41, 0x81, 0xf7, 0xff, 0xff, 0xff, 0x7f}}, 211 {name: "XORL/c=-2147483648/dst=R15", inst: XORL, c: -0x80000000, dstReg: RegR15, exp: []byte{0x41, 0x81, 0xf7, 0x0, 0x0, 0x0, 0x80}}, 212 {name: "XORL/c=32767/dst=R15", inst: XORL, c: 0x7fff, dstReg: RegR15, exp: []byte{0x41, 0x81, 0xf7, 0xff, 0x7f, 0x0, 0x0}}, 213 {name: "XORL/c=4294967295/dst=R15", inst: XORL, c: 0xffffffff, dstReg: RegR15, exp: []byte{0x41, 0x81, 0xf7, 0xff, 0xff, 0xff, 0xff}}, 214 {name: "XORL/c=-32768/dst=R15", inst: XORL, c: -0x8000, dstReg: RegR15, exp: []byte{0x41, 0x81, 0xf7, 0x0, 0x80, 0xff, 0xff}}, 215 {name: "XORQ/c=0/dst=BX", inst: XORQ, c: 0x0, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xf3, 0x0}}, 216 {name: "XORQ/c=1/dst=BX", inst: XORQ, c: 0x1, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xf3, 0x1}}, 217 {name: "XORQ/c=-1/dst=BX", inst: XORQ, c: -0x1, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xf3, 0xff}}, 218 {name: "XORQ/c=11/dst=BX", inst: XORQ, c: 0xb, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xf3, 0xb}}, 219 {name: "XORQ/c=-11/dst=BX", inst: XORQ, c: -0xb, dstReg: RegBX, exp: []byte{0x48, 0x83, 0xf3, 0xf5}}, 220 {name: "XORQ/c=1243/dst=BX", inst: XORQ, c: 0x4db, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xf3, 0xdb, 0x4, 0x0, 0x0}}, 221 {name: "XORQ/c=-1234/dst=BX", inst: XORQ, c: -0x4d2, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xf3, 0x2e, 0xfb, 0xff, 0xff}}, 222 {name: "XORQ/c=255/dst=BX", inst: XORQ, c: 0xff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xf3, 0xff, 0x0, 0x0, 0x0}}, 223 {name: "XORQ/c=2147483647/dst=BX", inst: XORQ, c: 0x7fffffff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xf3, 0xff, 0xff, 0xff, 0x7f}}, 224 {name: "XORQ/c=-2147483648/dst=BX", inst: XORQ, c: -0x80000000, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xf3, 0x0, 0x0, 0x0, 0x80}}, 225 {name: "XORQ/c=32767/dst=BX", inst: XORQ, c: 0x7fff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xf3, 0xff, 0x7f, 0x0, 0x0}}, 226 {name: "XORQ/c=4294967295/dst=BX", inst: XORQ, c: 0xffffffff, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xf3, 0xff, 0xff, 0xff, 0xff}}, 227 {name: "XORQ/c=-32768/dst=BX", inst: XORQ, c: -0x8000, dstReg: RegBX, exp: []byte{0x48, 0x81, 0xf3, 0x0, 0x80, 0xff, 0xff}}, 228 {name: "XORQ/c=0/dst=R15", inst: XORQ, c: 0x0, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xf7, 0x0}}, 229 {name: "XORQ/c=1/dst=R15", inst: XORQ, c: 0x1, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xf7, 0x1}}, 230 {name: "XORQ/c=-1/dst=R15", inst: XORQ, c: -0x1, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xf7, 0xff}}, 231 {name: "XORQ/c=11/dst=R15", inst: XORQ, c: 0xb, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xf7, 0xb}}, 232 {name: "XORQ/c=-11/dst=R15", inst: XORQ, c: -0xb, dstReg: RegR15, exp: []byte{0x49, 0x83, 0xf7, 0xf5}}, 233 {name: "XORQ/c=1243/dst=R15", inst: XORQ, c: 0x4db, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xf7, 0xdb, 0x4, 0x0, 0x0}}, 234 {name: "XORQ/c=-1234/dst=R15", inst: XORQ, c: -0x4d2, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xf7, 0x2e, 0xfb, 0xff, 0xff}}, 235 {name: "XORQ/c=255/dst=R15", inst: XORQ, c: 0xff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xf7, 0xff, 0x0, 0x0, 0x0}}, 236 {name: "XORQ/c=2147483647/dst=R15", inst: XORQ, c: 0x7fffffff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xf7, 0xff, 0xff, 0xff, 0x7f}}, 237 {name: "XORQ/c=-2147483648/dst=R15", inst: XORQ, c: -0x80000000, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xf7, 0x0, 0x0, 0x0, 0x80}}, 238 {name: "XORQ/c=32767/dst=R15", inst: XORQ, c: 0x7fff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xf7, 0xff, 0x7f, 0x0, 0x0}}, 239 {name: "XORQ/c=4294967295/dst=R15", inst: XORQ, c: 0xffffffff, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xf7, 0xff, 0xff, 0xff, 0xff}}, 240 {name: "XORQ/c=-32768/dst=R15", inst: XORQ, c: -0x8000, dstReg: RegR15, exp: []byte{0x49, 0x81, 0xf7, 0x0, 0x80, 0xff, 0xff}}, 241 {name: "PSLLD/c=0/dst=X3", inst: PSLLD, c: 0x0, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0x0}}, 242 {name: "PSLLD/c=1/dst=X3", inst: PSLLD, c: 0x1, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0x1}}, 243 {name: "PSLLD/c=-1/dst=X3", inst: PSLLD, c: -0x1, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0xff}}, 244 {name: "PSLLD/c=127/dst=X3", inst: PSLLD, c: 0x7f, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0x7f}}, 245 {name: "PSLLD/c=-128/dst=X3", inst: PSLLD, c: -0x80, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0x80}}, 246 {name: "PSLLD/c=0/dst=X15", inst: PSLLD, c: 0x0, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0x0}}, 247 {name: "PSLLD/c=1/dst=X15", inst: PSLLD, c: 0x1, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0x1}}, 248 {name: "PSLLD/c=-1/dst=X15", inst: PSLLD, c: -0x1, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0xff}}, 249 {name: "PSLLD/c=127/dst=X15", inst: PSLLD, c: 0x7f, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0x7f}}, 250 {name: "PSLLD/c=-128/dst=X15", inst: PSLLD, c: -0x80, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0x80}}, 251 {name: "PSLLQ/c=0/dst=X3", inst: PSLLQ, c: 0x0, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xf3, 0x0}}, 252 {name: "PSLLQ/c=1/dst=X3", inst: PSLLQ, c: 0x1, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xf3, 0x1}}, 253 {name: "PSLLQ/c=-1/dst=X3", inst: PSLLQ, c: -0x1, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xf3, 0xff}}, 254 {name: "PSLLQ/c=127/dst=X3", inst: PSLLQ, c: 0x7f, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xf3, 0x7f}}, 255 {name: "PSLLQ/c=-128/dst=X3", inst: PSLLQ, c: -0x80, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xf3, 0x80}}, 256 {name: "PSLLQ/c=0/dst=X15", inst: PSLLQ, c: 0x0, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xf7, 0x0}}, 257 {name: "PSLLQ/c=1/dst=X15", inst: PSLLQ, c: 0x1, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xf7, 0x1}}, 258 {name: "PSLLQ/c=-1/dst=X15", inst: PSLLQ, c: -0x1, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xf7, 0xff}}, 259 {name: "PSLLQ/c=127/dst=X15", inst: PSLLQ, c: 0x7f, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xf7, 0x7f}}, 260 {name: "PSLLQ/c=-128/dst=X15", inst: PSLLQ, c: -0x80, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xf7, 0x80}}, 261 {name: "PSLLD/c=0/dst=X3", inst: PSLLD, c: 0x0, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0x0}}, 262 {name: "PSLLD/c=1/dst=X3", inst: PSLLD, c: 0x1, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0x1}}, 263 {name: "PSLLD/c=-1/dst=X3", inst: PSLLD, c: -0x1, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0xff}}, 264 {name: "PSLLD/c=127/dst=X3", inst: PSLLD, c: 0x7f, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0x7f}}, 265 {name: "PSLLD/c=-128/dst=X3", inst: PSLLD, c: -0x80, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x72, 0xf3, 0x80}}, 266 {name: "PSLLD/c=0/dst=X15", inst: PSLLD, c: 0x0, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0x0}}, 267 {name: "PSLLD/c=1/dst=X15", inst: PSLLD, c: 0x1, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0x1}}, 268 {name: "PSLLD/c=-1/dst=X15", inst: PSLLD, c: -0x1, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0xff}}, 269 {name: "PSLLD/c=127/dst=X15", inst: PSLLD, c: 0x7f, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0x7f}}, 270 {name: "PSLLD/c=-128/dst=X15", inst: PSLLD, c: -0x80, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x72, 0xf7, 0x80}}, 271 {name: "PSRLQ/c=0/dst=X3", inst: PSRLQ, c: 0x0, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xd3, 0x0}}, 272 {name: "PSRLQ/c=1/dst=X3", inst: PSRLQ, c: 0x1, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xd3, 0x1}}, 273 {name: "PSRLQ/c=-1/dst=X3", inst: PSRLQ, c: -0x1, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xd3, 0xff}}, 274 {name: "PSRLQ/c=127/dst=X3", inst: PSRLQ, c: 0x7f, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xd3, 0x7f}}, 275 {name: "PSRLQ/c=-128/dst=X3", inst: PSRLQ, c: -0x80, dstReg: RegX3, exp: []byte{0x66, 0xf, 0x73, 0xd3, 0x80}}, 276 {name: "PSRLQ/c=0/dst=X15", inst: PSRLQ, c: 0x0, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xd7, 0x0}}, 277 {name: "PSRLQ/c=1/dst=X15", inst: PSRLQ, c: 0x1, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xd7, 0x1}}, 278 {name: "PSRLQ/c=-1/dst=X15", inst: PSRLQ, c: -0x1, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xd7, 0xff}}, 279 {name: "PSRLQ/c=127/dst=X15", inst: PSRLQ, c: 0x7f, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xd7, 0x7f}}, 280 {name: "PSRLQ/c=-128/dst=X15", inst: PSRLQ, c: -0x80, dstReg: RegX15, exp: []byte{0x66, 0x41, 0xf, 0x73, 0xd7, 0x80}}, 281 {name: "TESTQ/c=7/dst=R8", inst: TESTQ, c: 0x7, dstReg: RegR8, exp: []byte{0x49, 0xf7, 0xc0, 0x07, 0x00, 0x00, 0x00}}, 282 {name: "TESTQ/c=17/dst=BX", inst: TESTQ, c: 0x11, dstReg: RegBX, exp: []byte{0x48, 0xf7, 0xc3, 0x11, 0x00, 0x00, 0x00}}, 283 } 284 285 code := asm.CodeSegment{} 286 defer func() { require.NoError(t, code.Unmap()) }() 287 288 for _, tc := range tests { 289 a := NewAssembler() 290 buf := code.NextCodeSection() 291 err := a.encodeConstToRegister(buf, &nodeImpl{ 292 instruction: tc.inst, 293 types: operandTypesConstToRegister, srcConst: tc.c, dstReg: tc.dstReg, 294 }) 295 require.NoError(t, err, tc.name) 296 require.Equal(t, tc.exp, buf.Bytes(), tc.name) 297 } 298 } 299 300 func TestAssemblerImpl_encodeReadInstructionAddress(t *testing.T) { 301 t.Run("ok", func(t *testing.T) { 302 const targetBeforeInstruction = RET 303 304 code := asm.CodeSegment{} 305 defer func() { require.NoError(t, code.Unmap()) }() 306 307 for _, tc := range []struct { 308 name string 309 dst asm.Register 310 exp []byte 311 }{ 312 {name: "AX", dst: RegAX, exp: []byte{0x48, 0x8d, 0x5, 0x2, 0x0, 0x0, 0x0, 0x99, 0xc3, 0x99}}, 313 {name: "R8", dst: RegR8, exp: []byte{0x4c, 0x8d, 0x5, 0x2, 0x0, 0x0, 0x0, 0x99, 0xc3, 0x99}}, 314 } { 315 a := NewAssembler() 316 317 // Setup target. 318 a.CompileReadInstructionAddress(tc.dst, targetBeforeInstruction) 319 a.CompileStandAlone(CDQ) // Dummy. 320 a.CompileStandAlone(targetBeforeInstruction) 321 a.CompileStandAlone(CDQ) // Target. 322 323 buf := code.NextCodeSection() 324 err := a.Assemble(buf) 325 require.NoError(t, err, tc.name) 326 327 actual := buf.Bytes() 328 require.Equal(t, tc.exp, actual, tc.name) 329 } 330 }) 331 t.Run("not found", func(t *testing.T) { 332 code := asm.CodeSegment{} 333 defer func() { require.NoError(t, code.Unmap()) }() 334 335 a := NewAssembler() 336 a.CompileReadInstructionAddress(RegR10, NOP) 337 a.CompileStandAlone(CDQ) 338 339 buf := code.NextCodeSection() 340 err := a.Assemble(buf) 341 require.EqualError(t, err, "BUG: target instruction not found for read instruction address") 342 }) 343 t.Run("offset too large", func(t *testing.T) { 344 code := asm.CodeSegment{} 345 defer func() { require.NoError(t, code.Unmap()) }() 346 347 a := NewAssembler() 348 a.CompileReadInstructionAddress(RegR10, RET) 349 a.CompileStandAlone(RET) 350 a.CompileStandAlone(CDQ) 351 352 buf := code.NextCodeSection() 353 354 for n := a.root; n != nil; n = n.next { 355 n.offsetInBinary = uint64(buf.Len()) 356 357 err := a.encodeNode(buf, n) 358 require.NoError(t, err) 359 } 360 361 targetNode := a.current 362 targetNode.offsetInBinary = uint64(math.MaxInt64) 363 364 n := a.readInstructionAddressNodes[0] 365 err := a.finalizeReadInstructionAddressNode(nil, n) 366 require.EqualError(t, err, "BUG: too large offset for LEAQ instruction") 367 }) 368 } 369 370 func TestAssemblerImpl_encodeRegisterToConst(t *testing.T) { 371 t.Run("error", func(t *testing.T) { 372 tests := []struct { 373 n *nodeImpl 374 expErr string 375 }{ 376 { 377 n: &nodeImpl{instruction: ADDL, types: operandTypesRegisterToConst, srcReg: RegAX}, 378 expErr: "ADDL is unsupported for RegisterToConst type", 379 }, 380 } 381 382 code := asm.CodeSegment{} 383 defer func() { require.NoError(t, code.Unmap()) }() 384 385 for _, tc := range tests { 386 a := NewAssembler() 387 buf := code.NextCodeSection() 388 err := a.encodeRegisterToNone(buf, tc.n) 389 require.EqualError(t, err, tc.expErr) 390 } 391 }) 392 393 tests := []struct { 394 name string 395 c int64 396 inst asm.Instruction 397 srcReg asm.Register 398 exp []byte 399 }{ 400 {name: "CMPL/src=AX/c=0x0", inst: CMPL, srcReg: RegAX, c: 0x0, exp: []byte{0x83, 0xf8, 0x0}}, 401 {name: "CMPL/src=AX/c=0x1", inst: CMPL, srcReg: RegAX, c: 0x1, exp: []byte{0x83, 0xf8, 0x1}}, 402 {name: "CMPL/src=AX/c=-0x1", inst: CMPL, srcReg: RegAX, c: -0x1, exp: []byte{0x83, 0xf8, 0xff}}, 403 {name: "CMPL/src=AX/c=0x4db", inst: CMPL, srcReg: RegAX, c: 0x4db, exp: []byte{0x3d, 0xdb, 0x4, 0x0, 0x0}}, 404 {name: "CMPL/src=AX/c=-0x4d2", inst: CMPL, srcReg: RegAX, c: -0x4d2, exp: []byte{0x3d, 0x2e, 0xfb, 0xff, 0xff}}, 405 {name: "CMPL/src=AX/c=0x7fffffff", inst: CMPL, srcReg: RegAX, c: 0x7fffffff, exp: []byte{0x3d, 0xff, 0xff, 0xff, 0x7f}}, 406 {name: "CMPL/src=AX/c=-0x80000000", inst: CMPL, srcReg: RegAX, c: -0x80000000, exp: []byte{0x3d, 0x0, 0x0, 0x0, 0x80}}, 407 {name: "CMPL/src=AX/c=0x7fff", inst: CMPL, srcReg: RegAX, c: 0x7fff, exp: []byte{0x3d, 0xff, 0x7f, 0x0, 0x0}}, 408 {name: "CMPL/src=AX/c=-0x8000", inst: CMPL, srcReg: RegAX, c: -0x8000, exp: []byte{0x3d, 0x0, 0x80, 0xff, 0xff}}, 409 {name: "CMPL/src=BX/c=0x0", inst: CMPL, srcReg: RegBX, c: 0x0, exp: []byte{0x83, 0xfb, 0x0}}, 410 {name: "CMPL/src=BX/c=0x1", inst: CMPL, srcReg: RegBX, c: 0x1, exp: []byte{0x83, 0xfb, 0x1}}, 411 {name: "CMPL/src=BX/c=-0x1", inst: CMPL, srcReg: RegBX, c: -0x1, exp: []byte{0x83, 0xfb, 0xff}}, 412 {name: "CMPL/src=BX/c=0x4db", inst: CMPL, srcReg: RegBX, c: 0x4db, exp: []byte{0x81, 0xfb, 0xdb, 0x4, 0x0, 0x0}}, 413 {name: "CMPL/src=BX/c=-0x4d2", inst: CMPL, srcReg: RegBX, c: -0x4d2, exp: []byte{0x81, 0xfb, 0x2e, 0xfb, 0xff, 0xff}}, 414 {name: "CMPL/src=BX/c=0x7fffffff", inst: CMPL, srcReg: RegBX, c: 0x7fffffff, exp: []byte{0x81, 0xfb, 0xff, 0xff, 0xff, 0x7f}}, 415 {name: "CMPL/src=BX/c=-0x80000000", inst: CMPL, srcReg: RegBX, c: -0x80000000, exp: []byte{0x81, 0xfb, 0x0, 0x0, 0x0, 0x80}}, 416 {name: "CMPL/src=BX/c=0x7fff", inst: CMPL, srcReg: RegBX, c: 0x7fff, exp: []byte{0x81, 0xfb, 0xff, 0x7f, 0x0, 0x0}}, 417 {name: "CMPL/src=BX/c=-0x8000", inst: CMPL, srcReg: RegBX, c: -0x8000, exp: []byte{0x81, 0xfb, 0x0, 0x80, 0xff, 0xff}}, 418 {name: "CMPL/src=SP/c=0x0", inst: CMPL, srcReg: RegSP, c: 0x0, exp: []byte{0x83, 0xfc, 0x0}}, 419 {name: "CMPL/src=SP/c=0x1", inst: CMPL, srcReg: RegSP, c: 0x1, exp: []byte{0x83, 0xfc, 0x1}}, 420 {name: "CMPL/src=SP/c=-0x1", inst: CMPL, srcReg: RegSP, c: -0x1, exp: []byte{0x83, 0xfc, 0xff}}, 421 {name: "CMPL/src=SP/c=0x4db", inst: CMPL, srcReg: RegSP, c: 0x4db, exp: []byte{0x81, 0xfc, 0xdb, 0x4, 0x0, 0x0}}, 422 {name: "CMPL/src=SP/c=-0x4d2", inst: CMPL, srcReg: RegSP, c: -0x4d2, exp: []byte{0x81, 0xfc, 0x2e, 0xfb, 0xff, 0xff}}, 423 {name: "CMPL/src=SP/c=0x7fffffff", inst: CMPL, srcReg: RegSP, c: 0x7fffffff, exp: []byte{0x81, 0xfc, 0xff, 0xff, 0xff, 0x7f}}, 424 {name: "CMPL/src=SP/c=-0x80000000", inst: CMPL, srcReg: RegSP, c: -0x80000000, exp: []byte{0x81, 0xfc, 0x0, 0x0, 0x0, 0x80}}, 425 {name: "CMPL/src=SP/c=0x7fff", inst: CMPL, srcReg: RegSP, c: 0x7fff, exp: []byte{0x81, 0xfc, 0xff, 0x7f, 0x0, 0x0}}, 426 {name: "CMPL/src=SP/c=-0x8000", inst: CMPL, srcReg: RegSP, c: -0x8000, exp: []byte{0x81, 0xfc, 0x0, 0x80, 0xff, 0xff}}, 427 {name: "CMPL/src=BP/c=0x0", inst: CMPL, srcReg: RegBP, c: 0x0, exp: []byte{0x83, 0xfd, 0x0}}, 428 {name: "CMPL/src=BP/c=0x1", inst: CMPL, srcReg: RegBP, c: 0x1, exp: []byte{0x83, 0xfd, 0x1}}, 429 {name: "CMPL/src=BP/c=-0x1", inst: CMPL, srcReg: RegBP, c: -0x1, exp: []byte{0x83, 0xfd, 0xff}}, 430 {name: "CMPL/src=BP/c=0x4db", inst: CMPL, srcReg: RegBP, c: 0x4db, exp: []byte{0x81, 0xfd, 0xdb, 0x4, 0x0, 0x0}}, 431 {name: "CMPL/src=BP/c=-0x4d2", inst: CMPL, srcReg: RegBP, c: -0x4d2, exp: []byte{0x81, 0xfd, 0x2e, 0xfb, 0xff, 0xff}}, 432 {name: "CMPL/src=BP/c=0x7fffffff", inst: CMPL, srcReg: RegBP, c: 0x7fffffff, exp: []byte{0x81, 0xfd, 0xff, 0xff, 0xff, 0x7f}}, 433 {name: "CMPL/src=BP/c=-0x80000000", inst: CMPL, srcReg: RegBP, c: -0x80000000, exp: []byte{0x81, 0xfd, 0x0, 0x0, 0x0, 0x80}}, 434 {name: "CMPL/src=BP/c=0x7fff", inst: CMPL, srcReg: RegBP, c: 0x7fff, exp: []byte{0x81, 0xfd, 0xff, 0x7f, 0x0, 0x0}}, 435 {name: "CMPL/src=BP/c=-0x8000", inst: CMPL, srcReg: RegBP, c: -0x8000, exp: []byte{0x81, 0xfd, 0x0, 0x80, 0xff, 0xff}}, 436 {name: "CMPL/src=SI/c=0x0", inst: CMPL, srcReg: RegSI, c: 0x0, exp: []byte{0x83, 0xfe, 0x0}}, 437 {name: "CMPL/src=SI/c=0x1", inst: CMPL, srcReg: RegSI, c: 0x1, exp: []byte{0x83, 0xfe, 0x1}}, 438 {name: "CMPL/src=SI/c=-0x1", inst: CMPL, srcReg: RegSI, c: -0x1, exp: []byte{0x83, 0xfe, 0xff}}, 439 {name: "CMPL/src=SI/c=0x4db", inst: CMPL, srcReg: RegSI, c: 0x4db, exp: []byte{0x81, 0xfe, 0xdb, 0x4, 0x0, 0x0}}, 440 {name: "CMPL/src=SI/c=-0x4d2", inst: CMPL, srcReg: RegSI, c: -0x4d2, exp: []byte{0x81, 0xfe, 0x2e, 0xfb, 0xff, 0xff}}, 441 {name: "CMPL/src=SI/c=0x7fffffff", inst: CMPL, srcReg: RegSI, c: 0x7fffffff, exp: []byte{0x81, 0xfe, 0xff, 0xff, 0xff, 0x7f}}, 442 {name: "CMPL/src=SI/c=-0x80000000", inst: CMPL, srcReg: RegSI, c: -0x80000000, exp: []byte{0x81, 0xfe, 0x0, 0x0, 0x0, 0x80}}, 443 {name: "CMPL/src=SI/c=0x7fff", inst: CMPL, srcReg: RegSI, c: 0x7fff, exp: []byte{0x81, 0xfe, 0xff, 0x7f, 0x0, 0x0}}, 444 {name: "CMPL/src=SI/c=-0x8000", inst: CMPL, srcReg: RegSI, c: -0x8000, exp: []byte{0x81, 0xfe, 0x0, 0x80, 0xff, 0xff}}, 445 {name: "CMPL/src=DI/c=0x0", inst: CMPL, srcReg: RegDI, c: 0x0, exp: []byte{0x83, 0xff, 0x0}}, 446 {name: "CMPL/src=DI/c=0x1", inst: CMPL, srcReg: RegDI, c: 0x1, exp: []byte{0x83, 0xff, 0x1}}, 447 {name: "CMPL/src=DI/c=-0x1", inst: CMPL, srcReg: RegDI, c: -0x1, exp: []byte{0x83, 0xff, 0xff}}, 448 {name: "CMPL/src=DI/c=0x4db", inst: CMPL, srcReg: RegDI, c: 0x4db, exp: []byte{0x81, 0xff, 0xdb, 0x4, 0x0, 0x0}}, 449 {name: "CMPL/src=DI/c=-0x4d2", inst: CMPL, srcReg: RegDI, c: -0x4d2, exp: []byte{0x81, 0xff, 0x2e, 0xfb, 0xff, 0xff}}, 450 {name: "CMPL/src=DI/c=0x7fffffff", inst: CMPL, srcReg: RegDI, c: 0x7fffffff, exp: []byte{0x81, 0xff, 0xff, 0xff, 0xff, 0x7f}}, 451 {name: "CMPL/src=DI/c=-0x80000000", inst: CMPL, srcReg: RegDI, c: -0x80000000, exp: []byte{0x81, 0xff, 0x0, 0x0, 0x0, 0x80}}, 452 {name: "CMPL/src=DI/c=0x7fff", inst: CMPL, srcReg: RegDI, c: 0x7fff, exp: []byte{0x81, 0xff, 0xff, 0x7f, 0x0, 0x0}}, 453 {name: "CMPL/src=DI/c=-0x8000", inst: CMPL, srcReg: RegDI, c: -0x8000, exp: []byte{0x81, 0xff, 0x0, 0x80, 0xff, 0xff}}, 454 {name: "CMPL/src=R8/c=0x0", inst: CMPL, srcReg: RegR8, c: 0x0, exp: []byte{0x41, 0x83, 0xf8, 0x0}}, 455 {name: "CMPL/src=R8/c=0x1", inst: CMPL, srcReg: RegR8, c: 0x1, exp: []byte{0x41, 0x83, 0xf8, 0x1}}, 456 {name: "CMPL/src=R8/c=-0x1", inst: CMPL, srcReg: RegR8, c: -0x1, exp: []byte{0x41, 0x83, 0xf8, 0xff}}, 457 {name: "CMPL/src=R8/c=0x4db", inst: CMPL, srcReg: RegR8, c: 0x4db, exp: []byte{0x41, 0x81, 0xf8, 0xdb, 0x4, 0x0, 0x0}}, 458 {name: "CMPL/src=R8/c=-0x4d2", inst: CMPL, srcReg: RegR8, c: -0x4d2, exp: []byte{0x41, 0x81, 0xf8, 0x2e, 0xfb, 0xff, 0xff}}, 459 {name: "CMPL/src=R8/c=0x7fffffff", inst: CMPL, srcReg: RegR8, c: 0x7fffffff, exp: []byte{0x41, 0x81, 0xf8, 0xff, 0xff, 0xff, 0x7f}}, 460 {name: "CMPL/src=R8/c=-0x80000000", inst: CMPL, srcReg: RegR8, c: -0x80000000, exp: []byte{0x41, 0x81, 0xf8, 0x0, 0x0, 0x0, 0x80}}, 461 {name: "CMPL/src=R8/c=0x7fff", inst: CMPL, srcReg: RegR8, c: 0x7fff, exp: []byte{0x41, 0x81, 0xf8, 0xff, 0x7f, 0x0, 0x0}}, 462 {name: "CMPL/src=R8/c=-0x8000", inst: CMPL, srcReg: RegR8, c: -0x8000, exp: []byte{0x41, 0x81, 0xf8, 0x0, 0x80, 0xff, 0xff}}, 463 {name: "CMPL/src=R9/c=0x0", inst: CMPL, srcReg: RegR9, c: 0x0, exp: []byte{0x41, 0x83, 0xf9, 0x0}}, 464 {name: "CMPL/src=R9/c=0x1", inst: CMPL, srcReg: RegR9, c: 0x1, exp: []byte{0x41, 0x83, 0xf9, 0x1}}, 465 {name: "CMPL/src=R9/c=-0x1", inst: CMPL, srcReg: RegR9, c: -0x1, exp: []byte{0x41, 0x83, 0xf9, 0xff}}, 466 {name: "CMPL/src=R9/c=0x4db", inst: CMPL, srcReg: RegR9, c: 0x4db, exp: []byte{0x41, 0x81, 0xf9, 0xdb, 0x4, 0x0, 0x0}}, 467 {name: "CMPL/src=R9/c=-0x4d2", inst: CMPL, srcReg: RegR9, c: -0x4d2, exp: []byte{0x41, 0x81, 0xf9, 0x2e, 0xfb, 0xff, 0xff}}, 468 {name: "CMPL/src=R9/c=0x7fffffff", inst: CMPL, srcReg: RegR9, c: 0x7fffffff, exp: []byte{0x41, 0x81, 0xf9, 0xff, 0xff, 0xff, 0x7f}}, 469 {name: "CMPL/src=R9/c=-0x80000000", inst: CMPL, srcReg: RegR9, c: -0x80000000, exp: []byte{0x41, 0x81, 0xf9, 0x0, 0x0, 0x0, 0x80}}, 470 {name: "CMPL/src=R9/c=0x7fff", inst: CMPL, srcReg: RegR9, c: 0x7fff, exp: []byte{0x41, 0x81, 0xf9, 0xff, 0x7f, 0x0, 0x0}}, 471 {name: "CMPL/src=R9/c=-0x8000", inst: CMPL, srcReg: RegR9, c: -0x8000, exp: []byte{0x41, 0x81, 0xf9, 0x0, 0x80, 0xff, 0xff}}, 472 {name: "CMPL/src=R13/c=0x0", inst: CMPL, srcReg: RegR13, c: 0x0, exp: []byte{0x41, 0x83, 0xfd, 0x0}}, 473 {name: "CMPL/src=R13/c=0x1", inst: CMPL, srcReg: RegR13, c: 0x1, exp: []byte{0x41, 0x83, 0xfd, 0x1}}, 474 {name: "CMPL/src=R13/c=-0x1", inst: CMPL, srcReg: RegR13, c: -0x1, exp: []byte{0x41, 0x83, 0xfd, 0xff}}, 475 {name: "CMPL/src=R13/c=0x4db", inst: CMPL, srcReg: RegR13, c: 0x4db, exp: []byte{0x41, 0x81, 0xfd, 0xdb, 0x4, 0x0, 0x0}}, 476 {name: "CMPL/src=R13/c=-0x4d2", inst: CMPL, srcReg: RegR13, c: -0x4d2, exp: []byte{0x41, 0x81, 0xfd, 0x2e, 0xfb, 0xff, 0xff}}, 477 {name: "CMPL/src=R13/c=0x7fffffff", inst: CMPL, srcReg: RegR13, c: 0x7fffffff, exp: []byte{0x41, 0x81, 0xfd, 0xff, 0xff, 0xff, 0x7f}}, 478 {name: "CMPL/src=R13/c=-0x80000000", inst: CMPL, srcReg: RegR13, c: -0x80000000, exp: []byte{0x41, 0x81, 0xfd, 0x0, 0x0, 0x0, 0x80}}, 479 {name: "CMPL/src=R13/c=0x7fff", inst: CMPL, srcReg: RegR13, c: 0x7fff, exp: []byte{0x41, 0x81, 0xfd, 0xff, 0x7f, 0x0, 0x0}}, 480 {name: "CMPL/src=R13/c=-0x8000", inst: CMPL, srcReg: RegR13, c: -0x8000, exp: []byte{0x41, 0x81, 0xfd, 0x0, 0x80, 0xff, 0xff}}, 481 {name: "CMPL/src=R14/c=0x0", inst: CMPL, srcReg: RegR14, c: 0x0, exp: []byte{0x41, 0x83, 0xfe, 0x0}}, 482 {name: "CMPL/src=R14/c=0x1", inst: CMPL, srcReg: RegR14, c: 0x1, exp: []byte{0x41, 0x83, 0xfe, 0x1}}, 483 {name: "CMPL/src=R14/c=-0x1", inst: CMPL, srcReg: RegR14, c: -0x1, exp: []byte{0x41, 0x83, 0xfe, 0xff}}, 484 {name: "CMPL/src=R14/c=0x4db", inst: CMPL, srcReg: RegR14, c: 0x4db, exp: []byte{0x41, 0x81, 0xfe, 0xdb, 0x4, 0x0, 0x0}}, 485 {name: "CMPL/src=R14/c=-0x4d2", inst: CMPL, srcReg: RegR14, c: -0x4d2, exp: []byte{0x41, 0x81, 0xfe, 0x2e, 0xfb, 0xff, 0xff}}, 486 {name: "CMPL/src=R14/c=0x7fffffff", inst: CMPL, srcReg: RegR14, c: 0x7fffffff, exp: []byte{0x41, 0x81, 0xfe, 0xff, 0xff, 0xff, 0x7f}}, 487 {name: "CMPL/src=R14/c=-0x80000000", inst: CMPL, srcReg: RegR14, c: -0x80000000, exp: []byte{0x41, 0x81, 0xfe, 0x0, 0x0, 0x0, 0x80}}, 488 {name: "CMPL/src=R14/c=0x7fff", inst: CMPL, srcReg: RegR14, c: 0x7fff, exp: []byte{0x41, 0x81, 0xfe, 0xff, 0x7f, 0x0, 0x0}}, 489 {name: "CMPL/src=R14/c=-0x8000", inst: CMPL, srcReg: RegR14, c: -0x8000, exp: []byte{0x41, 0x81, 0xfe, 0x0, 0x80, 0xff, 0xff}}, 490 {name: "CMPL/src=R15/c=0x0", inst: CMPL, srcReg: RegR15, c: 0x0, exp: []byte{0x41, 0x83, 0xff, 0x0}}, 491 {name: "CMPL/src=R15/c=0x1", inst: CMPL, srcReg: RegR15, c: 0x1, exp: []byte{0x41, 0x83, 0xff, 0x1}}, 492 {name: "CMPL/src=R15/c=-0x1", inst: CMPL, srcReg: RegR15, c: -0x1, exp: []byte{0x41, 0x83, 0xff, 0xff}}, 493 {name: "CMPL/src=R15/c=0x4db", inst: CMPL, srcReg: RegR15, c: 0x4db, exp: []byte{0x41, 0x81, 0xff, 0xdb, 0x4, 0x0, 0x0}}, 494 {name: "CMPL/src=R15/c=-0x4d2", inst: CMPL, srcReg: RegR15, c: -0x4d2, exp: []byte{0x41, 0x81, 0xff, 0x2e, 0xfb, 0xff, 0xff}}, 495 {name: "CMPL/src=R15/c=0x7fffffff", inst: CMPL, srcReg: RegR15, c: 0x7fffffff, exp: []byte{0x41, 0x81, 0xff, 0xff, 0xff, 0xff, 0x7f}}, 496 {name: "CMPL/src=R15/c=-0x80000000", inst: CMPL, srcReg: RegR15, c: -0x80000000, exp: []byte{0x41, 0x81, 0xff, 0x0, 0x0, 0x0, 0x80}}, 497 {name: "CMPL/src=R15/c=0x7fff", inst: CMPL, srcReg: RegR15, c: 0x7fff, exp: []byte{0x41, 0x81, 0xff, 0xff, 0x7f, 0x0, 0x0}}, 498 {name: "CMPL/src=R15/c=-0x8000", inst: CMPL, srcReg: RegR15, c: -0x8000, exp: []byte{0x41, 0x81, 0xff, 0x0, 0x80, 0xff, 0xff}}, 499 {name: "CMPQ/src=AX/c=0x0", inst: CMPQ, srcReg: RegAX, c: 0x0, exp: []byte{0x48, 0x83, 0xf8, 0x0}}, 500 {name: "CMPQ/src=AX/c=0x1", inst: CMPQ, srcReg: RegAX, c: 0x1, exp: []byte{0x48, 0x83, 0xf8, 0x1}}, 501 {name: "CMPQ/src=AX/c=-0x1", inst: CMPQ, srcReg: RegAX, c: -0x1, exp: []byte{0x48, 0x83, 0xf8, 0xff}}, 502 {name: "CMPQ/src=AX/c=0x4db", inst: CMPQ, srcReg: RegAX, c: 0x4db, exp: []byte{0x48, 0x3d, 0xdb, 0x4, 0x0, 0x0}}, 503 {name: "CMPQ/src=AX/c=-0x4d2", inst: CMPQ, srcReg: RegAX, c: -0x4d2, exp: []byte{0x48, 0x3d, 0x2e, 0xfb, 0xff, 0xff}}, 504 {name: "CMPQ/src=AX/c=0x7fffffff", inst: CMPQ, srcReg: RegAX, c: 0x7fffffff, exp: []byte{0x48, 0x3d, 0xff, 0xff, 0xff, 0x7f}}, 505 {name: "CMPQ/src=AX/c=-0x80000000", inst: CMPQ, srcReg: RegAX, c: -0x80000000, exp: []byte{0x48, 0x3d, 0x0, 0x0, 0x0, 0x80}}, 506 {name: "CMPQ/src=AX/c=0x7fff", inst: CMPQ, srcReg: RegAX, c: 0x7fff, exp: []byte{0x48, 0x3d, 0xff, 0x7f, 0x0, 0x0}}, 507 {name: "CMPQ/src=AX/c=-0x8000", inst: CMPQ, srcReg: RegAX, c: -0x8000, exp: []byte{0x48, 0x3d, 0x0, 0x80, 0xff, 0xff}}, 508 {name: "CMPQ/src=BX/c=0x0", inst: CMPQ, srcReg: RegBX, c: 0x0, exp: []byte{0x48, 0x83, 0xfb, 0x0}}, 509 {name: "CMPQ/src=BX/c=0x1", inst: CMPQ, srcReg: RegBX, c: 0x1, exp: []byte{0x48, 0x83, 0xfb, 0x1}}, 510 {name: "CMPQ/src=BX/c=-0x1", inst: CMPQ, srcReg: RegBX, c: -0x1, exp: []byte{0x48, 0x83, 0xfb, 0xff}}, 511 {name: "CMPQ/src=BX/c=0x4db", inst: CMPQ, srcReg: RegBX, c: 0x4db, exp: []byte{0x48, 0x81, 0xfb, 0xdb, 0x4, 0x0, 0x0}}, 512 {name: "CMPQ/src=BX/c=-0x4d2", inst: CMPQ, srcReg: RegBX, c: -0x4d2, exp: []byte{0x48, 0x81, 0xfb, 0x2e, 0xfb, 0xff, 0xff}}, 513 {name: "CMPQ/src=BX/c=0x7fffffff", inst: CMPQ, srcReg: RegBX, c: 0x7fffffff, exp: []byte{0x48, 0x81, 0xfb, 0xff, 0xff, 0xff, 0x7f}}, 514 {name: "CMPQ/src=BX/c=-0x80000000", inst: CMPQ, srcReg: RegBX, c: -0x80000000, exp: []byte{0x48, 0x81, 0xfb, 0x0, 0x0, 0x0, 0x80}}, 515 {name: "CMPQ/src=BX/c=0x7fff", inst: CMPQ, srcReg: RegBX, c: 0x7fff, exp: []byte{0x48, 0x81, 0xfb, 0xff, 0x7f, 0x0, 0x0}}, 516 {name: "CMPQ/src=BX/c=-0x8000", inst: CMPQ, srcReg: RegBX, c: -0x8000, exp: []byte{0x48, 0x81, 0xfb, 0x0, 0x80, 0xff, 0xff}}, 517 {name: "CMPQ/src=SP/c=0x0", inst: CMPQ, srcReg: RegSP, c: 0x0, exp: []byte{0x48, 0x83, 0xfc, 0x0}}, 518 {name: "CMPQ/src=SP/c=0x1", inst: CMPQ, srcReg: RegSP, c: 0x1, exp: []byte{0x48, 0x83, 0xfc, 0x1}}, 519 {name: "CMPQ/src=SP/c=-0x1", inst: CMPQ, srcReg: RegSP, c: -0x1, exp: []byte{0x48, 0x83, 0xfc, 0xff}}, 520 {name: "CMPQ/src=SP/c=0x4db", inst: CMPQ, srcReg: RegSP, c: 0x4db, exp: []byte{0x48, 0x81, 0xfc, 0xdb, 0x4, 0x0, 0x0}}, 521 {name: "CMPQ/src=SP/c=-0x4d2", inst: CMPQ, srcReg: RegSP, c: -0x4d2, exp: []byte{0x48, 0x81, 0xfc, 0x2e, 0xfb, 0xff, 0xff}}, 522 {name: "CMPQ/src=SP/c=0x7fffffff", inst: CMPQ, srcReg: RegSP, c: 0x7fffffff, exp: []byte{0x48, 0x81, 0xfc, 0xff, 0xff, 0xff, 0x7f}}, 523 {name: "CMPQ/src=SP/c=-0x80000000", inst: CMPQ, srcReg: RegSP, c: -0x80000000, exp: []byte{0x48, 0x81, 0xfc, 0x0, 0x0, 0x0, 0x80}}, 524 {name: "CMPQ/src=SP/c=0x7fff", inst: CMPQ, srcReg: RegSP, c: 0x7fff, exp: []byte{0x48, 0x81, 0xfc, 0xff, 0x7f, 0x0, 0x0}}, 525 {name: "CMPQ/src=SP/c=-0x8000", inst: CMPQ, srcReg: RegSP, c: -0x8000, exp: []byte{0x48, 0x81, 0xfc, 0x0, 0x80, 0xff, 0xff}}, 526 {name: "CMPQ/src=BP/c=0x0", inst: CMPQ, srcReg: RegBP, c: 0x0, exp: []byte{0x48, 0x83, 0xfd, 0x0}}, 527 {name: "CMPQ/src=BP/c=0x1", inst: CMPQ, srcReg: RegBP, c: 0x1, exp: []byte{0x48, 0x83, 0xfd, 0x1}}, 528 {name: "CMPQ/src=BP/c=-0x1", inst: CMPQ, srcReg: RegBP, c: -0x1, exp: []byte{0x48, 0x83, 0xfd, 0xff}}, 529 {name: "CMPQ/src=BP/c=0x4db", inst: CMPQ, srcReg: RegBP, c: 0x4db, exp: []byte{0x48, 0x81, 0xfd, 0xdb, 0x4, 0x0, 0x0}}, 530 {name: "CMPQ/src=BP/c=-0x4d2", inst: CMPQ, srcReg: RegBP, c: -0x4d2, exp: []byte{0x48, 0x81, 0xfd, 0x2e, 0xfb, 0xff, 0xff}}, 531 {name: "CMPQ/src=BP/c=0x7fffffff", inst: CMPQ, srcReg: RegBP, c: 0x7fffffff, exp: []byte{0x48, 0x81, 0xfd, 0xff, 0xff, 0xff, 0x7f}}, 532 {name: "CMPQ/src=BP/c=-0x80000000", inst: CMPQ, srcReg: RegBP, c: -0x80000000, exp: []byte{0x48, 0x81, 0xfd, 0x0, 0x0, 0x0, 0x80}}, 533 {name: "CMPQ/src=BP/c=0x7fff", inst: CMPQ, srcReg: RegBP, c: 0x7fff, exp: []byte{0x48, 0x81, 0xfd, 0xff, 0x7f, 0x0, 0x0}}, 534 {name: "CMPQ/src=BP/c=-0x8000", inst: CMPQ, srcReg: RegBP, c: -0x8000, exp: []byte{0x48, 0x81, 0xfd, 0x0, 0x80, 0xff, 0xff}}, 535 {name: "CMPQ/src=SI/c=0x0", inst: CMPQ, srcReg: RegSI, c: 0x0, exp: []byte{0x48, 0x83, 0xfe, 0x0}}, 536 {name: "CMPQ/src=SI/c=0x1", inst: CMPQ, srcReg: RegSI, c: 0x1, exp: []byte{0x48, 0x83, 0xfe, 0x1}}, 537 {name: "CMPQ/src=SI/c=-0x1", inst: CMPQ, srcReg: RegSI, c: -0x1, exp: []byte{0x48, 0x83, 0xfe, 0xff}}, 538 {name: "CMPQ/src=SI/c=0x4db", inst: CMPQ, srcReg: RegSI, c: 0x4db, exp: []byte{0x48, 0x81, 0xfe, 0xdb, 0x4, 0x0, 0x0}}, 539 {name: "CMPQ/src=SI/c=-0x4d2", inst: CMPQ, srcReg: RegSI, c: -0x4d2, exp: []byte{0x48, 0x81, 0xfe, 0x2e, 0xfb, 0xff, 0xff}}, 540 {name: "CMPQ/src=SI/c=0x7fffffff", inst: CMPQ, srcReg: RegSI, c: 0x7fffffff, exp: []byte{0x48, 0x81, 0xfe, 0xff, 0xff, 0xff, 0x7f}}, 541 {name: "CMPQ/src=SI/c=-0x80000000", inst: CMPQ, srcReg: RegSI, c: -0x80000000, exp: []byte{0x48, 0x81, 0xfe, 0x0, 0x0, 0x0, 0x80}}, 542 {name: "CMPQ/src=SI/c=0x7fff", inst: CMPQ, srcReg: RegSI, c: 0x7fff, exp: []byte{0x48, 0x81, 0xfe, 0xff, 0x7f, 0x0, 0x0}}, 543 {name: "CMPQ/src=SI/c=-0x8000", inst: CMPQ, srcReg: RegSI, c: -0x8000, exp: []byte{0x48, 0x81, 0xfe, 0x0, 0x80, 0xff, 0xff}}, 544 {name: "CMPQ/src=DI/c=0x0", inst: CMPQ, srcReg: RegDI, c: 0x0, exp: []byte{0x48, 0x83, 0xff, 0x0}}, 545 {name: "CMPQ/src=DI/c=0x1", inst: CMPQ, srcReg: RegDI, c: 0x1, exp: []byte{0x48, 0x83, 0xff, 0x1}}, 546 {name: "CMPQ/src=DI/c=-0x1", inst: CMPQ, srcReg: RegDI, c: -0x1, exp: []byte{0x48, 0x83, 0xff, 0xff}}, 547 {name: "CMPQ/src=DI/c=0x4db", inst: CMPQ, srcReg: RegDI, c: 0x4db, exp: []byte{0x48, 0x81, 0xff, 0xdb, 0x4, 0x0, 0x0}}, 548 {name: "CMPQ/src=DI/c=-0x4d2", inst: CMPQ, srcReg: RegDI, c: -0x4d2, exp: []byte{0x48, 0x81, 0xff, 0x2e, 0xfb, 0xff, 0xff}}, 549 {name: "CMPQ/src=DI/c=0x7fffffff", inst: CMPQ, srcReg: RegDI, c: 0x7fffffff, exp: []byte{0x48, 0x81, 0xff, 0xff, 0xff, 0xff, 0x7f}}, 550 {name: "CMPQ/src=DI/c=-0x80000000", inst: CMPQ, srcReg: RegDI, c: -0x80000000, exp: []byte{0x48, 0x81, 0xff, 0x0, 0x0, 0x0, 0x80}}, 551 {name: "CMPQ/src=DI/c=0x7fff", inst: CMPQ, srcReg: RegDI, c: 0x7fff, exp: []byte{0x48, 0x81, 0xff, 0xff, 0x7f, 0x0, 0x0}}, 552 {name: "CMPQ/src=DI/c=-0x8000", inst: CMPQ, srcReg: RegDI, c: -0x8000, exp: []byte{0x48, 0x81, 0xff, 0x0, 0x80, 0xff, 0xff}}, 553 {name: "CMPQ/src=R8/c=0x0", inst: CMPQ, srcReg: RegR8, c: 0x0, exp: []byte{0x49, 0x83, 0xf8, 0x0}}, 554 {name: "CMPQ/src=R8/c=0x1", inst: CMPQ, srcReg: RegR8, c: 0x1, exp: []byte{0x49, 0x83, 0xf8, 0x1}}, 555 {name: "CMPQ/src=R8/c=-0x1", inst: CMPQ, srcReg: RegR8, c: -0x1, exp: []byte{0x49, 0x83, 0xf8, 0xff}}, 556 {name: "CMPQ/src=R8/c=0x4db", inst: CMPQ, srcReg: RegR8, c: 0x4db, exp: []byte{0x49, 0x81, 0xf8, 0xdb, 0x4, 0x0, 0x0}}, 557 {name: "CMPQ/src=R8/c=-0x4d2", inst: CMPQ, srcReg: RegR8, c: -0x4d2, exp: []byte{0x49, 0x81, 0xf8, 0x2e, 0xfb, 0xff, 0xff}}, 558 {name: "CMPQ/src=R8/c=0x7fffffff", inst: CMPQ, srcReg: RegR8, c: 0x7fffffff, exp: []byte{0x49, 0x81, 0xf8, 0xff, 0xff, 0xff, 0x7f}}, 559 {name: "CMPQ/src=R8/c=-0x80000000", inst: CMPQ, srcReg: RegR8, c: -0x80000000, exp: []byte{0x49, 0x81, 0xf8, 0x0, 0x0, 0x0, 0x80}}, 560 {name: "CMPQ/src=R8/c=0x7fff", inst: CMPQ, srcReg: RegR8, c: 0x7fff, exp: []byte{0x49, 0x81, 0xf8, 0xff, 0x7f, 0x0, 0x0}}, 561 {name: "CMPQ/src=R8/c=-0x8000", inst: CMPQ, srcReg: RegR8, c: -0x8000, exp: []byte{0x49, 0x81, 0xf8, 0x0, 0x80, 0xff, 0xff}}, 562 {name: "CMPQ/src=R9/c=0x0", inst: CMPQ, srcReg: RegR9, c: 0x0, exp: []byte{0x49, 0x83, 0xf9, 0x0}}, 563 {name: "CMPQ/src=R9/c=0x1", inst: CMPQ, srcReg: RegR9, c: 0x1, exp: []byte{0x49, 0x83, 0xf9, 0x1}}, 564 {name: "CMPQ/src=R9/c=-0x1", inst: CMPQ, srcReg: RegR9, c: -0x1, exp: []byte{0x49, 0x83, 0xf9, 0xff}}, 565 {name: "CMPQ/src=R9/c=0x4db", inst: CMPQ, srcReg: RegR9, c: 0x4db, exp: []byte{0x49, 0x81, 0xf9, 0xdb, 0x4, 0x0, 0x0}}, 566 {name: "CMPQ/src=R9/c=-0x4d2", inst: CMPQ, srcReg: RegR9, c: -0x4d2, exp: []byte{0x49, 0x81, 0xf9, 0x2e, 0xfb, 0xff, 0xff}}, 567 {name: "CMPQ/src=R9/c=0x7fffffff", inst: CMPQ, srcReg: RegR9, c: 0x7fffffff, exp: []byte{0x49, 0x81, 0xf9, 0xff, 0xff, 0xff, 0x7f}}, 568 {name: "CMPQ/src=R9/c=-0x80000000", inst: CMPQ, srcReg: RegR9, c: -0x80000000, exp: []byte{0x49, 0x81, 0xf9, 0x0, 0x0, 0x0, 0x80}}, 569 {name: "CMPQ/src=R9/c=0x7fff", inst: CMPQ, srcReg: RegR9, c: 0x7fff, exp: []byte{0x49, 0x81, 0xf9, 0xff, 0x7f, 0x0, 0x0}}, 570 {name: "CMPQ/src=R9/c=-0x8000", inst: CMPQ, srcReg: RegR9, c: -0x8000, exp: []byte{0x49, 0x81, 0xf9, 0x0, 0x80, 0xff, 0xff}}, 571 {name: "CMPQ/src=R13/c=0x0", inst: CMPQ, srcReg: RegR13, c: 0x0, exp: []byte{0x49, 0x83, 0xfd, 0x0}}, 572 {name: "CMPQ/src=R13/c=0x1", inst: CMPQ, srcReg: RegR13, c: 0x1, exp: []byte{0x49, 0x83, 0xfd, 0x1}}, 573 {name: "CMPQ/src=R13/c=-0x1", inst: CMPQ, srcReg: RegR13, c: -0x1, exp: []byte{0x49, 0x83, 0xfd, 0xff}}, 574 {name: "CMPQ/src=R13/c=0x4db", inst: CMPQ, srcReg: RegR13, c: 0x4db, exp: []byte{0x49, 0x81, 0xfd, 0xdb, 0x4, 0x0, 0x0}}, 575 {name: "CMPQ/src=R13/c=-0x4d2", inst: CMPQ, srcReg: RegR13, c: -0x4d2, exp: []byte{0x49, 0x81, 0xfd, 0x2e, 0xfb, 0xff, 0xff}}, 576 {name: "CMPQ/src=R13/c=0x7fffffff", inst: CMPQ, srcReg: RegR13, c: 0x7fffffff, exp: []byte{0x49, 0x81, 0xfd, 0xff, 0xff, 0xff, 0x7f}}, 577 {name: "CMPQ/src=R13/c=-0x80000000", inst: CMPQ, srcReg: RegR13, c: -0x80000000, exp: []byte{0x49, 0x81, 0xfd, 0x0, 0x0, 0x0, 0x80}}, 578 {name: "CMPQ/src=R13/c=0x7fff", inst: CMPQ, srcReg: RegR13, c: 0x7fff, exp: []byte{0x49, 0x81, 0xfd, 0xff, 0x7f, 0x0, 0x0}}, 579 {name: "CMPQ/src=R13/c=-0x8000", inst: CMPQ, srcReg: RegR13, c: -0x8000, exp: []byte{0x49, 0x81, 0xfd, 0x0, 0x80, 0xff, 0xff}}, 580 {name: "CMPQ/src=R14/c=0x0", inst: CMPQ, srcReg: RegR14, c: 0x0, exp: []byte{0x49, 0x83, 0xfe, 0x0}}, 581 {name: "CMPQ/src=R14/c=0x1", inst: CMPQ, srcReg: RegR14, c: 0x1, exp: []byte{0x49, 0x83, 0xfe, 0x1}}, 582 {name: "CMPQ/src=R14/c=-0x1", inst: CMPQ, srcReg: RegR14, c: -0x1, exp: []byte{0x49, 0x83, 0xfe, 0xff}}, 583 {name: "CMPQ/src=R14/c=0x4db", inst: CMPQ, srcReg: RegR14, c: 0x4db, exp: []byte{0x49, 0x81, 0xfe, 0xdb, 0x4, 0x0, 0x0}}, 584 {name: "CMPQ/src=R14/c=-0x4d2", inst: CMPQ, srcReg: RegR14, c: -0x4d2, exp: []byte{0x49, 0x81, 0xfe, 0x2e, 0xfb, 0xff, 0xff}}, 585 {name: "CMPQ/src=R14/c=0x7fffffff", inst: CMPQ, srcReg: RegR14, c: 0x7fffffff, exp: []byte{0x49, 0x81, 0xfe, 0xff, 0xff, 0xff, 0x7f}}, 586 {name: "CMPQ/src=R14/c=-0x80000000", inst: CMPQ, srcReg: RegR14, c: -0x80000000, exp: []byte{0x49, 0x81, 0xfe, 0x0, 0x0, 0x0, 0x80}}, 587 {name: "CMPQ/src=R14/c=0x7fff", inst: CMPQ, srcReg: RegR14, c: 0x7fff, exp: []byte{0x49, 0x81, 0xfe, 0xff, 0x7f, 0x0, 0x0}}, 588 {name: "CMPQ/src=R14/c=-0x8000", inst: CMPQ, srcReg: RegR14, c: -0x8000, exp: []byte{0x49, 0x81, 0xfe, 0x0, 0x80, 0xff, 0xff}}, 589 {name: "CMPQ/src=R15/c=0x0", inst: CMPQ, srcReg: RegR15, c: 0x0, exp: []byte{0x49, 0x83, 0xff, 0x0}}, 590 {name: "CMPQ/src=R15/c=0x1", inst: CMPQ, srcReg: RegR15, c: 0x1, exp: []byte{0x49, 0x83, 0xff, 0x1}}, 591 {name: "CMPQ/src=R15/c=-0x1", inst: CMPQ, srcReg: RegR15, c: -0x1, exp: []byte{0x49, 0x83, 0xff, 0xff}}, 592 {name: "CMPQ/src=R15/c=0x4db", inst: CMPQ, srcReg: RegR15, c: 0x4db, exp: []byte{0x49, 0x81, 0xff, 0xdb, 0x4, 0x0, 0x0}}, 593 {name: "CMPQ/src=R15/c=-0x4d2", inst: CMPQ, srcReg: RegR15, c: -0x4d2, exp: []byte{0x49, 0x81, 0xff, 0x2e, 0xfb, 0xff, 0xff}}, 594 {name: "CMPQ/src=R15/c=0x7fffffff", inst: CMPQ, srcReg: RegR15, c: 0x7fffffff, exp: []byte{0x49, 0x81, 0xff, 0xff, 0xff, 0xff, 0x7f}}, 595 {name: "CMPQ/src=R15/c=-0x80000000", inst: CMPQ, srcReg: RegR15, c: -0x80000000, exp: []byte{0x49, 0x81, 0xff, 0x0, 0x0, 0x0, 0x80}}, 596 {name: "CMPQ/src=R15/c=0x7fff", inst: CMPQ, srcReg: RegR15, c: 0x7fff, exp: []byte{0x49, 0x81, 0xff, 0xff, 0x7f, 0x0, 0x0}}, 597 {name: "CMPQ/src=R15/c=-0x8000", inst: CMPQ, srcReg: RegR15, c: -0x8000, exp: []byte{0x49, 0x81, 0xff, 0x0, 0x80, 0xff, 0xff}}, 598 } 599 600 code := asm.CodeSegment{} 601 defer func() { require.NoError(t, code.Unmap()) }() 602 603 for _, tc := range tests { 604 a := NewAssembler() 605 buf := code.NextCodeSection() 606 err := a.encodeRegisterToConst(buf, &nodeImpl{ 607 instruction: tc.inst, 608 types: operandTypesRegisterToConst, srcReg: tc.srcReg, dstConst: tc.c, 609 }) 610 require.NoError(t, err, tc.name) 611 require.Equal(t, tc.exp, buf.Bytes(), tc.name) 612 } 613 } 614 615 func TestNodeImpl_GetRegisterToRegisterModRM(t *testing.T) { 616 tests := []struct { 617 name string 618 srcReg, dstReg asm.Register 619 srcOnModRMReg bool 620 expRexPrefix, expModRM byte 621 }{ 622 {name: "src=AX/dst=AX/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xc0}, 623 {name: "src=AX/dst=BX/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xc3}, 624 {name: "src=AX/dst=SP/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xc4}, 625 {name: "src=AX/dst=BP/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xc5}, 626 {name: "src=AX/dst=SI/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xc6}, 627 {name: "src=AX/dst=DI/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xc7}, 628 {name: "src=AX/dst=R8/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xc0}, 629 {name: "src=AX/dst=R9/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xc1}, 630 {name: "src=AX/dst=R13/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xc5}, 631 {name: "src=AX/dst=R14/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xc6}, 632 {name: "src=AX/dst=R15/srcOnModRMReg=true", srcReg: RegAX, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xc7}, 633 {name: "src=BX/dst=AX/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xd8}, 634 {name: "src=BX/dst=BX/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xdb}, 635 {name: "src=BX/dst=SP/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xdc}, 636 {name: "src=BX/dst=BP/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xdd}, 637 {name: "src=BX/dst=SI/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xde}, 638 {name: "src=BX/dst=DI/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xdf}, 639 {name: "src=BX/dst=R8/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xd8}, 640 {name: "src=BX/dst=R9/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xd9}, 641 {name: "src=BX/dst=R13/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xdd}, 642 {name: "src=BX/dst=R14/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xde}, 643 {name: "src=BX/dst=R15/srcOnModRMReg=true", srcReg: RegBX, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xdf}, 644 {name: "src=SP/dst=AX/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xe0}, 645 {name: "src=SP/dst=BX/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xe3}, 646 {name: "src=SP/dst=SP/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xe4}, 647 {name: "src=SP/dst=BP/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xe5}, 648 {name: "src=SP/dst=SI/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xe6}, 649 {name: "src=SP/dst=DI/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xe7}, 650 {name: "src=SP/dst=R8/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xe0}, 651 {name: "src=SP/dst=R9/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xe1}, 652 {name: "src=SP/dst=R13/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xe5}, 653 {name: "src=SP/dst=R14/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xe6}, 654 {name: "src=SP/dst=R15/srcOnModRMReg=true", srcReg: RegSP, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xe7}, 655 {name: "src=BP/dst=AX/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xe8}, 656 {name: "src=BP/dst=BX/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xeb}, 657 {name: "src=BP/dst=SP/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xec}, 658 {name: "src=BP/dst=BP/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xed}, 659 {name: "src=BP/dst=SI/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xee}, 660 {name: "src=BP/dst=DI/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xef}, 661 {name: "src=BP/dst=R8/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xe8}, 662 {name: "src=BP/dst=R9/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xe9}, 663 {name: "src=BP/dst=R13/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xed}, 664 {name: "src=BP/dst=R14/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xee}, 665 {name: "src=BP/dst=R15/srcOnModRMReg=true", srcReg: RegBP, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xef}, 666 {name: "src=SI/dst=AX/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xf0}, 667 {name: "src=SI/dst=BX/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xf3}, 668 {name: "src=SI/dst=SP/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xf4}, 669 {name: "src=SI/dst=BP/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xf5}, 670 {name: "src=SI/dst=SI/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xf6}, 671 {name: "src=SI/dst=DI/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xf7}, 672 {name: "src=SI/dst=R8/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xf0}, 673 {name: "src=SI/dst=R9/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xf1}, 674 {name: "src=SI/dst=R13/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xf5}, 675 {name: "src=SI/dst=R14/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xf6}, 676 {name: "src=SI/dst=R15/srcOnModRMReg=true", srcReg: RegSI, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xf7}, 677 {name: "src=DI/dst=AX/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xf8}, 678 {name: "src=DI/dst=BX/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xfb}, 679 {name: "src=DI/dst=SP/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xfc}, 680 {name: "src=DI/dst=BP/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xfd}, 681 {name: "src=DI/dst=SI/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xfe}, 682 {name: "src=DI/dst=DI/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x0, expModRM: 0xff}, 683 {name: "src=DI/dst=R8/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xf8}, 684 {name: "src=DI/dst=R9/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xf9}, 685 {name: "src=DI/dst=R13/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xfd}, 686 {name: "src=DI/dst=R14/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xfe}, 687 {name: "src=DI/dst=R15/srcOnModRMReg=true", srcReg: RegDI, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x41, expModRM: 0xff}, 688 {name: "src=R8/dst=AX/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xc0}, 689 {name: "src=R8/dst=BX/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xc3}, 690 {name: "src=R8/dst=SP/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xc4}, 691 {name: "src=R8/dst=BP/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xc5}, 692 {name: "src=R8/dst=SI/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xc6}, 693 {name: "src=R8/dst=DI/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xc7}, 694 {name: "src=R8/dst=R8/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xc0}, 695 {name: "src=R8/dst=R9/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xc1}, 696 {name: "src=R8/dst=R13/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xc5}, 697 {name: "src=R8/dst=R14/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xc6}, 698 {name: "src=R8/dst=R15/srcOnModRMReg=true", srcReg: RegR8, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xc7}, 699 {name: "src=R9/dst=AX/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xc8}, 700 {name: "src=R9/dst=BX/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xcb}, 701 {name: "src=R9/dst=SP/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xcc}, 702 {name: "src=R9/dst=BP/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xcd}, 703 {name: "src=R9/dst=SI/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xce}, 704 {name: "src=R9/dst=DI/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xcf}, 705 {name: "src=R9/dst=R8/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xc8}, 706 {name: "src=R9/dst=R9/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xc9}, 707 {name: "src=R9/dst=R13/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xcd}, 708 {name: "src=R9/dst=R14/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xce}, 709 {name: "src=R9/dst=R15/srcOnModRMReg=true", srcReg: RegR9, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xcf}, 710 {name: "src=R13/dst=AX/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xe8}, 711 {name: "src=R13/dst=BX/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xeb}, 712 {name: "src=R13/dst=SP/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xec}, 713 {name: "src=R13/dst=BP/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xed}, 714 {name: "src=R13/dst=SI/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xee}, 715 {name: "src=R13/dst=DI/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xef}, 716 {name: "src=R13/dst=R8/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xe8}, 717 {name: "src=R13/dst=R9/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xe9}, 718 {name: "src=R13/dst=R13/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xed}, 719 {name: "src=R13/dst=R14/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xee}, 720 {name: "src=R13/dst=R15/srcOnModRMReg=true", srcReg: RegR13, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xef}, 721 {name: "src=R14/dst=AX/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xf0}, 722 {name: "src=R14/dst=BX/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xf3}, 723 {name: "src=R14/dst=SP/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xf4}, 724 {name: "src=R14/dst=BP/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xf5}, 725 {name: "src=R14/dst=SI/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xf6}, 726 {name: "src=R14/dst=DI/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xf7}, 727 {name: "src=R14/dst=R8/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xf0}, 728 {name: "src=R14/dst=R9/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xf1}, 729 {name: "src=R14/dst=R13/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xf5}, 730 {name: "src=R14/dst=R14/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xf6}, 731 {name: "src=R14/dst=R15/srcOnModRMReg=true", srcReg: RegR14, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xf7}, 732 {name: "src=R15/dst=AX/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegAX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xf8}, 733 {name: "src=R15/dst=BX/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegBX, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xfb}, 734 {name: "src=R15/dst=SP/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegSP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xfc}, 735 {name: "src=R15/dst=BP/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegBP, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xfd}, 736 {name: "src=R15/dst=SI/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegSI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xfe}, 737 {name: "src=R15/dst=DI/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegDI, srcOnModRMReg: true, expRexPrefix: 0x44, expModRM: 0xff}, 738 {name: "src=R15/dst=R8/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegR8, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xf8}, 739 {name: "src=R15/dst=R9/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegR9, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xf9}, 740 {name: "src=R15/dst=R13/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegR13, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xfd}, 741 {name: "src=R15/dst=R14/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegR14, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xfe}, 742 {name: "src=R15/dst=R15/srcOnModRMReg=true", srcReg: RegR15, dstReg: RegR15, srcOnModRMReg: true, expRexPrefix: 0x45, expModRM: 0xff}, 743 {name: "src=AX/dst=AX/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc0}, 744 {name: "src=AX/dst=BX/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd8}, 745 {name: "src=AX/dst=SP/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe0}, 746 {name: "src=AX/dst=BP/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe8}, 747 {name: "src=AX/dst=SI/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf0}, 748 {name: "src=AX/dst=DI/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf8}, 749 {name: "src=AX/dst=R8/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc0}, 750 {name: "src=AX/dst=R9/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc8}, 751 {name: "src=AX/dst=R13/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe8}, 752 {name: "src=AX/dst=R14/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf0}, 753 {name: "src=AX/dst=R15/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf8}, 754 {name: "src=BX/dst=AX/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc3}, 755 {name: "src=BX/dst=BX/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdb}, 756 {name: "src=BX/dst=SP/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe3}, 757 {name: "src=BX/dst=BP/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xeb}, 758 {name: "src=BX/dst=SI/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf3}, 759 {name: "src=BX/dst=DI/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfb}, 760 {name: "src=BX/dst=R8/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc3}, 761 {name: "src=BX/dst=R9/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcb}, 762 {name: "src=BX/dst=R13/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xeb}, 763 {name: "src=BX/dst=R14/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf3}, 764 {name: "src=BX/dst=R15/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfb}, 765 {name: "src=SP/dst=AX/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc4}, 766 {name: "src=SP/dst=BX/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdc}, 767 {name: "src=SP/dst=SP/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe4}, 768 {name: "src=SP/dst=BP/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xec}, 769 {name: "src=SP/dst=SI/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf4}, 770 {name: "src=SP/dst=DI/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfc}, 771 {name: "src=SP/dst=R8/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc4}, 772 {name: "src=SP/dst=R9/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcc}, 773 {name: "src=SP/dst=R13/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xec}, 774 {name: "src=SP/dst=R14/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf4}, 775 {name: "src=SP/dst=R15/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfc}, 776 {name: "src=BP/dst=AX/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc5}, 777 {name: "src=BP/dst=BX/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdd}, 778 {name: "src=BP/dst=SP/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe5}, 779 {name: "src=BP/dst=BP/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xed}, 780 {name: "src=BP/dst=SI/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf5}, 781 {name: "src=BP/dst=DI/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfd}, 782 {name: "src=BP/dst=R8/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc5}, 783 {name: "src=BP/dst=R9/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcd}, 784 {name: "src=BP/dst=R13/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xed}, 785 {name: "src=BP/dst=R14/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf5}, 786 {name: "src=BP/dst=R15/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfd}, 787 {name: "src=SI/dst=AX/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc6}, 788 {name: "src=SI/dst=BX/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xde}, 789 {name: "src=SI/dst=SP/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe6}, 790 {name: "src=SI/dst=BP/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xee}, 791 {name: "src=SI/dst=SI/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf6}, 792 {name: "src=SI/dst=DI/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfe}, 793 {name: "src=SI/dst=R8/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc6}, 794 {name: "src=SI/dst=R9/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xce}, 795 {name: "src=SI/dst=R13/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xee}, 796 {name: "src=SI/dst=R14/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf6}, 797 {name: "src=SI/dst=R15/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfe}, 798 {name: "src=DI/dst=AX/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc7}, 799 {name: "src=DI/dst=BX/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdf}, 800 {name: "src=DI/dst=SP/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe7}, 801 {name: "src=DI/dst=BP/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xef}, 802 {name: "src=DI/dst=SI/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf7}, 803 {name: "src=DI/dst=DI/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xff}, 804 {name: "src=DI/dst=R8/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc7}, 805 {name: "src=DI/dst=R9/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcf}, 806 {name: "src=DI/dst=R13/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xef}, 807 {name: "src=DI/dst=R14/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf7}, 808 {name: "src=DI/dst=R15/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xff}, 809 {name: "src=R8/dst=AX/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc0}, 810 {name: "src=R8/dst=BX/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd8}, 811 {name: "src=R8/dst=SP/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe0}, 812 {name: "src=R8/dst=BP/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe8}, 813 {name: "src=R8/dst=SI/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf0}, 814 {name: "src=R8/dst=DI/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf8}, 815 {name: "src=R8/dst=R8/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc0}, 816 {name: "src=R8/dst=R9/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc8}, 817 {name: "src=R8/dst=R13/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe8}, 818 {name: "src=R8/dst=R14/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf0}, 819 {name: "src=R8/dst=R15/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf8}, 820 {name: "src=R9/dst=AX/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc1}, 821 {name: "src=R9/dst=BX/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd9}, 822 {name: "src=R9/dst=SP/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe1}, 823 {name: "src=R9/dst=BP/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe9}, 824 {name: "src=R9/dst=SI/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf1}, 825 {name: "src=R9/dst=DI/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf9}, 826 {name: "src=R9/dst=R8/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc1}, 827 {name: "src=R9/dst=R9/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc9}, 828 {name: "src=R9/dst=R13/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe9}, 829 {name: "src=R9/dst=R14/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf1}, 830 {name: "src=R9/dst=R15/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf9}, 831 {name: "src=R13/dst=AX/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc5}, 832 {name: "src=R13/dst=BX/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdd}, 833 {name: "src=R13/dst=SP/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe5}, 834 {name: "src=R13/dst=BP/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xed}, 835 {name: "src=R13/dst=SI/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf5}, 836 {name: "src=R13/dst=DI/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfd}, 837 {name: "src=R13/dst=R8/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc5}, 838 {name: "src=R13/dst=R9/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcd}, 839 {name: "src=R13/dst=R13/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xed}, 840 {name: "src=R13/dst=R14/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf5}, 841 {name: "src=R13/dst=R15/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfd}, 842 {name: "src=R14/dst=AX/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc6}, 843 {name: "src=R14/dst=BX/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xde}, 844 {name: "src=R14/dst=SP/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe6}, 845 {name: "src=R14/dst=BP/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xee}, 846 {name: "src=R14/dst=SI/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf6}, 847 {name: "src=R14/dst=DI/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfe}, 848 {name: "src=R14/dst=R8/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc6}, 849 {name: "src=R14/dst=R9/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xce}, 850 {name: "src=R14/dst=R13/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xee}, 851 {name: "src=R14/dst=R14/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf6}, 852 {name: "src=R14/dst=R15/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfe}, 853 {name: "src=R15/dst=AX/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc7}, 854 {name: "src=R15/dst=BX/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdf}, 855 {name: "src=R15/dst=SP/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe7}, 856 {name: "src=R15/dst=BP/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xef}, 857 {name: "src=R15/dst=SI/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf7}, 858 {name: "src=R15/dst=DI/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xff}, 859 {name: "src=R15/dst=R8/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc7}, 860 {name: "src=R15/dst=R9/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcf}, 861 {name: "src=R15/dst=R13/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xef}, 862 {name: "src=R15/dst=R14/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf7}, 863 {name: "src=R15/dst=R15/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xff}, 864 {name: "src=X0/dst=X0/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc0}, 865 {name: "src=X0/dst=X1/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc8}, 866 {name: "src=X0/dst=X2/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd0}, 867 {name: "src=X0/dst=X3/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd8}, 868 {name: "src=X0/dst=X4/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe0}, 869 {name: "src=X0/dst=X5/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe8}, 870 {name: "src=X0/dst=X6/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf0}, 871 {name: "src=X0/dst=X7/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf8}, 872 {name: "src=X0/dst=X8/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc0}, 873 {name: "src=X0/dst=X9/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc8}, 874 {name: "src=X0/dst=X10/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd0}, 875 {name: "src=X0/dst=X11/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd8}, 876 {name: "src=X0/dst=X12/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe0}, 877 {name: "src=X0/dst=X13/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe8}, 878 {name: "src=X0/dst=X14/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf0}, 879 {name: "src=X0/dst=X15/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf8}, 880 {name: "src=X1/dst=X0/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc1}, 881 {name: "src=X1/dst=X1/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc9}, 882 {name: "src=X1/dst=X2/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd1}, 883 {name: "src=X1/dst=X3/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd9}, 884 {name: "src=X1/dst=X4/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe1}, 885 {name: "src=X1/dst=X5/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe9}, 886 {name: "src=X1/dst=X6/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf1}, 887 {name: "src=X1/dst=X7/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf9}, 888 {name: "src=X1/dst=X8/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc1}, 889 {name: "src=X1/dst=X9/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc9}, 890 {name: "src=X1/dst=X10/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd1}, 891 {name: "src=X1/dst=X11/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd9}, 892 {name: "src=X1/dst=X12/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe1}, 893 {name: "src=X1/dst=X13/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe9}, 894 {name: "src=X1/dst=X14/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf1}, 895 {name: "src=X1/dst=X15/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf9}, 896 {name: "src=X2/dst=X0/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc2}, 897 {name: "src=X2/dst=X1/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xca}, 898 {name: "src=X2/dst=X2/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd2}, 899 {name: "src=X2/dst=X3/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xda}, 900 {name: "src=X2/dst=X4/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe2}, 901 {name: "src=X2/dst=X5/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xea}, 902 {name: "src=X2/dst=X6/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf2}, 903 {name: "src=X2/dst=X7/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfa}, 904 {name: "src=X2/dst=X8/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc2}, 905 {name: "src=X2/dst=X9/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xca}, 906 {name: "src=X2/dst=X10/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd2}, 907 {name: "src=X2/dst=X11/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xda}, 908 {name: "src=X2/dst=X12/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe2}, 909 {name: "src=X2/dst=X13/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xea}, 910 {name: "src=X2/dst=X14/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf2}, 911 {name: "src=X2/dst=X15/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfa}, 912 {name: "src=X3/dst=X0/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc3}, 913 {name: "src=X3/dst=X1/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xcb}, 914 {name: "src=X3/dst=X2/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd3}, 915 {name: "src=X3/dst=X3/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdb}, 916 {name: "src=X3/dst=X4/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe3}, 917 {name: "src=X3/dst=X5/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xeb}, 918 {name: "src=X3/dst=X6/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf3}, 919 {name: "src=X3/dst=X7/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfb}, 920 {name: "src=X3/dst=X8/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc3}, 921 {name: "src=X3/dst=X9/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcb}, 922 {name: "src=X3/dst=X10/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd3}, 923 {name: "src=X3/dst=X11/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xdb}, 924 {name: "src=X3/dst=X12/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe3}, 925 {name: "src=X3/dst=X13/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xeb}, 926 {name: "src=X3/dst=X14/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf3}, 927 {name: "src=X3/dst=X15/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfb}, 928 {name: "src=X4/dst=X0/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc4}, 929 {name: "src=X4/dst=X1/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xcc}, 930 {name: "src=X4/dst=X2/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd4}, 931 {name: "src=X4/dst=X3/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdc}, 932 {name: "src=X4/dst=X4/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe4}, 933 {name: "src=X4/dst=X5/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xec}, 934 {name: "src=X4/dst=X6/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf4}, 935 {name: "src=X4/dst=X7/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfc}, 936 {name: "src=X4/dst=X8/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc4}, 937 {name: "src=X4/dst=X9/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcc}, 938 {name: "src=X4/dst=X10/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd4}, 939 {name: "src=X4/dst=X11/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xdc}, 940 {name: "src=X4/dst=X12/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe4}, 941 {name: "src=X4/dst=X13/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xec}, 942 {name: "src=X4/dst=X14/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf4}, 943 {name: "src=X4/dst=X15/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfc}, 944 {name: "src=X5/dst=X0/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc5}, 945 {name: "src=X5/dst=X1/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xcd}, 946 {name: "src=X5/dst=X2/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd5}, 947 {name: "src=X5/dst=X3/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdd}, 948 {name: "src=X5/dst=X4/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe5}, 949 {name: "src=X5/dst=X5/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xed}, 950 {name: "src=X5/dst=X6/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf5}, 951 {name: "src=X5/dst=X7/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfd}, 952 {name: "src=X5/dst=X8/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc5}, 953 {name: "src=X5/dst=X9/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcd}, 954 {name: "src=X5/dst=X10/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd5}, 955 {name: "src=X5/dst=X11/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xdd}, 956 {name: "src=X5/dst=X12/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe5}, 957 {name: "src=X5/dst=X13/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xed}, 958 {name: "src=X5/dst=X14/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf5}, 959 {name: "src=X5/dst=X15/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfd}, 960 {name: "src=X6/dst=X0/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc6}, 961 {name: "src=X6/dst=X1/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xce}, 962 {name: "src=X6/dst=X2/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd6}, 963 {name: "src=X6/dst=X3/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xde}, 964 {name: "src=X6/dst=X4/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe6}, 965 {name: "src=X6/dst=X5/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xee}, 966 {name: "src=X6/dst=X6/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf6}, 967 {name: "src=X6/dst=X7/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfe}, 968 {name: "src=X6/dst=X8/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc6}, 969 {name: "src=X6/dst=X9/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xce}, 970 {name: "src=X6/dst=X10/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd6}, 971 {name: "src=X6/dst=X11/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xde}, 972 {name: "src=X6/dst=X12/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe6}, 973 {name: "src=X6/dst=X13/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xee}, 974 {name: "src=X6/dst=X14/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf6}, 975 {name: "src=X6/dst=X15/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfe}, 976 {name: "src=X7/dst=X0/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc7}, 977 {name: "src=X7/dst=X1/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xcf}, 978 {name: "src=X7/dst=X2/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd7}, 979 {name: "src=X7/dst=X3/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdf}, 980 {name: "src=X7/dst=X4/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe7}, 981 {name: "src=X7/dst=X5/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xef}, 982 {name: "src=X7/dst=X6/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf7}, 983 {name: "src=X7/dst=X7/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xff}, 984 {name: "src=X7/dst=X8/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc7}, 985 {name: "src=X7/dst=X9/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcf}, 986 {name: "src=X7/dst=X10/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd7}, 987 {name: "src=X7/dst=X11/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xdf}, 988 {name: "src=X7/dst=X12/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe7}, 989 {name: "src=X7/dst=X13/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xef}, 990 {name: "src=X7/dst=X14/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf7}, 991 {name: "src=X7/dst=X15/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xff}, 992 {name: "src=X8/dst=X0/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc0}, 993 {name: "src=X8/dst=X1/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc8}, 994 {name: "src=X8/dst=X2/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd0}, 995 {name: "src=X8/dst=X3/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd8}, 996 {name: "src=X8/dst=X4/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe0}, 997 {name: "src=X8/dst=X5/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe8}, 998 {name: "src=X8/dst=X6/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf0}, 999 {name: "src=X8/dst=X7/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf8}, 1000 {name: "src=X8/dst=X8/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc0}, 1001 {name: "src=X8/dst=X9/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc8}, 1002 {name: "src=X8/dst=X10/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd0}, 1003 {name: "src=X8/dst=X11/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd8}, 1004 {name: "src=X8/dst=X12/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe0}, 1005 {name: "src=X8/dst=X13/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe8}, 1006 {name: "src=X8/dst=X14/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf0}, 1007 {name: "src=X8/dst=X15/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf8}, 1008 {name: "src=X9/dst=X0/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc1}, 1009 {name: "src=X9/dst=X1/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc9}, 1010 {name: "src=X9/dst=X2/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd1}, 1011 {name: "src=X9/dst=X3/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd9}, 1012 {name: "src=X9/dst=X4/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe1}, 1013 {name: "src=X9/dst=X5/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe9}, 1014 {name: "src=X9/dst=X6/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf1}, 1015 {name: "src=X9/dst=X7/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf9}, 1016 {name: "src=X9/dst=X8/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc1}, 1017 {name: "src=X9/dst=X9/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc9}, 1018 {name: "src=X9/dst=X10/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd1}, 1019 {name: "src=X9/dst=X11/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd9}, 1020 {name: "src=X9/dst=X12/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe1}, 1021 {name: "src=X9/dst=X13/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe9}, 1022 {name: "src=X9/dst=X14/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf1}, 1023 {name: "src=X9/dst=X15/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf9}, 1024 {name: "src=X10/dst=X0/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc2}, 1025 {name: "src=X10/dst=X1/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xca}, 1026 {name: "src=X10/dst=X2/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd2}, 1027 {name: "src=X10/dst=X3/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xda}, 1028 {name: "src=X10/dst=X4/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe2}, 1029 {name: "src=X10/dst=X5/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xea}, 1030 {name: "src=X10/dst=X6/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf2}, 1031 {name: "src=X10/dst=X7/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfa}, 1032 {name: "src=X10/dst=X8/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc2}, 1033 {name: "src=X10/dst=X9/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xca}, 1034 {name: "src=X10/dst=X10/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd2}, 1035 {name: "src=X10/dst=X11/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xda}, 1036 {name: "src=X10/dst=X12/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe2}, 1037 {name: "src=X10/dst=X13/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xea}, 1038 {name: "src=X10/dst=X14/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf2}, 1039 {name: "src=X10/dst=X15/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfa}, 1040 {name: "src=X11/dst=X0/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc3}, 1041 {name: "src=X11/dst=X1/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xcb}, 1042 {name: "src=X11/dst=X2/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd3}, 1043 {name: "src=X11/dst=X3/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdb}, 1044 {name: "src=X11/dst=X4/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe3}, 1045 {name: "src=X11/dst=X5/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xeb}, 1046 {name: "src=X11/dst=X6/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf3}, 1047 {name: "src=X11/dst=X7/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfb}, 1048 {name: "src=X11/dst=X8/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc3}, 1049 {name: "src=X11/dst=X9/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcb}, 1050 {name: "src=X11/dst=X10/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd3}, 1051 {name: "src=X11/dst=X11/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xdb}, 1052 {name: "src=X11/dst=X12/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe3}, 1053 {name: "src=X11/dst=X13/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xeb}, 1054 {name: "src=X11/dst=X14/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf3}, 1055 {name: "src=X11/dst=X15/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfb}, 1056 {name: "src=X12/dst=X0/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc4}, 1057 {name: "src=X12/dst=X1/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xcc}, 1058 {name: "src=X12/dst=X2/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd4}, 1059 {name: "src=X12/dst=X3/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdc}, 1060 {name: "src=X12/dst=X4/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe4}, 1061 {name: "src=X12/dst=X5/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xec}, 1062 {name: "src=X12/dst=X6/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf4}, 1063 {name: "src=X12/dst=X7/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfc}, 1064 {name: "src=X12/dst=X8/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc4}, 1065 {name: "src=X12/dst=X9/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcc}, 1066 {name: "src=X12/dst=X10/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd4}, 1067 {name: "src=X12/dst=X11/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xdc}, 1068 {name: "src=X12/dst=X12/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe4}, 1069 {name: "src=X12/dst=X13/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xec}, 1070 {name: "src=X12/dst=X14/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf4}, 1071 {name: "src=X12/dst=X15/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfc}, 1072 {name: "src=X13/dst=X0/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc5}, 1073 {name: "src=X13/dst=X1/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xcd}, 1074 {name: "src=X13/dst=X2/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd5}, 1075 {name: "src=X13/dst=X3/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdd}, 1076 {name: "src=X13/dst=X4/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe5}, 1077 {name: "src=X13/dst=X5/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xed}, 1078 {name: "src=X13/dst=X6/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf5}, 1079 {name: "src=X13/dst=X7/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfd}, 1080 {name: "src=X13/dst=X8/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc5}, 1081 {name: "src=X13/dst=X9/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcd}, 1082 {name: "src=X13/dst=X10/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd5}, 1083 {name: "src=X13/dst=X11/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xdd}, 1084 {name: "src=X13/dst=X12/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe5}, 1085 {name: "src=X13/dst=X13/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xed}, 1086 {name: "src=X13/dst=X14/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf5}, 1087 {name: "src=X13/dst=X15/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfd}, 1088 {name: "src=X14/dst=X0/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc6}, 1089 {name: "src=X14/dst=X1/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xce}, 1090 {name: "src=X14/dst=X2/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd6}, 1091 {name: "src=X14/dst=X3/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xde}, 1092 {name: "src=X14/dst=X4/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe6}, 1093 {name: "src=X14/dst=X5/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xee}, 1094 {name: "src=X14/dst=X6/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf6}, 1095 {name: "src=X14/dst=X7/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfe}, 1096 {name: "src=X14/dst=X8/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc6}, 1097 {name: "src=X14/dst=X9/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xce}, 1098 {name: "src=X14/dst=X10/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd6}, 1099 {name: "src=X14/dst=X11/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xde}, 1100 {name: "src=X14/dst=X12/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe6}, 1101 {name: "src=X14/dst=X13/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xee}, 1102 {name: "src=X14/dst=X14/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf6}, 1103 {name: "src=X14/dst=X15/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfe}, 1104 {name: "src=X15/dst=X0/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc7}, 1105 {name: "src=X15/dst=X1/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xcf}, 1106 {name: "src=X15/dst=X2/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd7}, 1107 {name: "src=X15/dst=X3/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdf}, 1108 {name: "src=X15/dst=X4/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe7}, 1109 {name: "src=X15/dst=X5/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xef}, 1110 {name: "src=X15/dst=X6/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf7}, 1111 {name: "src=X15/dst=X7/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xff}, 1112 {name: "src=X15/dst=X8/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc7}, 1113 {name: "src=X15/dst=X9/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcf}, 1114 {name: "src=X15/dst=X10/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd7}, 1115 {name: "src=X15/dst=X11/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xdf}, 1116 {name: "src=X15/dst=X12/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe7}, 1117 {name: "src=X15/dst=X13/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xef}, 1118 {name: "src=X15/dst=X14/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf7}, 1119 {name: "src=X15/dst=X15/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xff}, 1120 {name: "src=X0/dst=AX/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc0}, 1121 {name: "src=X0/dst=BX/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd8}, 1122 {name: "src=X0/dst=SP/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe0}, 1123 {name: "src=X0/dst=BP/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe8}, 1124 {name: "src=X0/dst=SI/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf0}, 1125 {name: "src=X0/dst=DI/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf8}, 1126 {name: "src=X0/dst=R8/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc0}, 1127 {name: "src=X0/dst=R9/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc8}, 1128 {name: "src=X0/dst=R13/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe8}, 1129 {name: "src=X0/dst=R14/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf0}, 1130 {name: "src=X0/dst=R15/srcOnModRMReg=false", srcReg: RegX0, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf8}, 1131 {name: "src=X1/dst=AX/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc1}, 1132 {name: "src=X1/dst=BX/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd9}, 1133 {name: "src=X1/dst=SP/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe1}, 1134 {name: "src=X1/dst=BP/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe9}, 1135 {name: "src=X1/dst=SI/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf1}, 1136 {name: "src=X1/dst=DI/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf9}, 1137 {name: "src=X1/dst=R8/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc1}, 1138 {name: "src=X1/dst=R9/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc9}, 1139 {name: "src=X1/dst=R13/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe9}, 1140 {name: "src=X1/dst=R14/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf1}, 1141 {name: "src=X1/dst=R15/srcOnModRMReg=false", srcReg: RegX1, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf9}, 1142 {name: "src=X2/dst=AX/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc2}, 1143 {name: "src=X2/dst=BX/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xda}, 1144 {name: "src=X2/dst=SP/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe2}, 1145 {name: "src=X2/dst=BP/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xea}, 1146 {name: "src=X2/dst=SI/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf2}, 1147 {name: "src=X2/dst=DI/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfa}, 1148 {name: "src=X2/dst=R8/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc2}, 1149 {name: "src=X2/dst=R9/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xca}, 1150 {name: "src=X2/dst=R13/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xea}, 1151 {name: "src=X2/dst=R14/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf2}, 1152 {name: "src=X2/dst=R15/srcOnModRMReg=false", srcReg: RegX2, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfa}, 1153 {name: "src=X3/dst=AX/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc3}, 1154 {name: "src=X3/dst=BX/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdb}, 1155 {name: "src=X3/dst=SP/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe3}, 1156 {name: "src=X3/dst=BP/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xeb}, 1157 {name: "src=X3/dst=SI/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf3}, 1158 {name: "src=X3/dst=DI/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfb}, 1159 {name: "src=X3/dst=R8/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc3}, 1160 {name: "src=X3/dst=R9/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcb}, 1161 {name: "src=X3/dst=R13/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xeb}, 1162 {name: "src=X3/dst=R14/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf3}, 1163 {name: "src=X3/dst=R15/srcOnModRMReg=false", srcReg: RegX3, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfb}, 1164 {name: "src=X4/dst=AX/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc4}, 1165 {name: "src=X4/dst=BX/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdc}, 1166 {name: "src=X4/dst=SP/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe4}, 1167 {name: "src=X4/dst=BP/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xec}, 1168 {name: "src=X4/dst=SI/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf4}, 1169 {name: "src=X4/dst=DI/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfc}, 1170 {name: "src=X4/dst=R8/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc4}, 1171 {name: "src=X4/dst=R9/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcc}, 1172 {name: "src=X4/dst=R13/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xec}, 1173 {name: "src=X4/dst=R14/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf4}, 1174 {name: "src=X4/dst=R15/srcOnModRMReg=false", srcReg: RegX4, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfc}, 1175 {name: "src=X5/dst=AX/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc5}, 1176 {name: "src=X5/dst=BX/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdd}, 1177 {name: "src=X5/dst=SP/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe5}, 1178 {name: "src=X5/dst=BP/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xed}, 1179 {name: "src=X5/dst=SI/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf5}, 1180 {name: "src=X5/dst=DI/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfd}, 1181 {name: "src=X5/dst=R8/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc5}, 1182 {name: "src=X5/dst=R9/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcd}, 1183 {name: "src=X5/dst=R13/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xed}, 1184 {name: "src=X5/dst=R14/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf5}, 1185 {name: "src=X5/dst=R15/srcOnModRMReg=false", srcReg: RegX5, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfd}, 1186 {name: "src=X6/dst=AX/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc6}, 1187 {name: "src=X6/dst=BX/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xde}, 1188 {name: "src=X6/dst=SP/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe6}, 1189 {name: "src=X6/dst=BP/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xee}, 1190 {name: "src=X6/dst=SI/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf6}, 1191 {name: "src=X6/dst=DI/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfe}, 1192 {name: "src=X6/dst=R8/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc6}, 1193 {name: "src=X6/dst=R9/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xce}, 1194 {name: "src=X6/dst=R13/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xee}, 1195 {name: "src=X6/dst=R14/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf6}, 1196 {name: "src=X6/dst=R15/srcOnModRMReg=false", srcReg: RegX6, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfe}, 1197 {name: "src=X7/dst=AX/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc7}, 1198 {name: "src=X7/dst=BX/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdf}, 1199 {name: "src=X7/dst=SP/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe7}, 1200 {name: "src=X7/dst=BP/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xef}, 1201 {name: "src=X7/dst=SI/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf7}, 1202 {name: "src=X7/dst=DI/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xff}, 1203 {name: "src=X7/dst=R8/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc7}, 1204 {name: "src=X7/dst=R9/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcf}, 1205 {name: "src=X7/dst=R13/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xef}, 1206 {name: "src=X7/dst=R14/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf7}, 1207 {name: "src=X7/dst=R15/srcOnModRMReg=false", srcReg: RegX7, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xff}, 1208 {name: "src=X8/dst=AX/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc0}, 1209 {name: "src=X8/dst=BX/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd8}, 1210 {name: "src=X8/dst=SP/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe0}, 1211 {name: "src=X8/dst=BP/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe8}, 1212 {name: "src=X8/dst=SI/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf0}, 1213 {name: "src=X8/dst=DI/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf8}, 1214 {name: "src=X8/dst=R8/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc0}, 1215 {name: "src=X8/dst=R9/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc8}, 1216 {name: "src=X8/dst=R13/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe8}, 1217 {name: "src=X8/dst=R14/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf0}, 1218 {name: "src=X8/dst=R15/srcOnModRMReg=false", srcReg: RegX8, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf8}, 1219 {name: "src=X9/dst=AX/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc1}, 1220 {name: "src=X9/dst=BX/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd9}, 1221 {name: "src=X9/dst=SP/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe1}, 1222 {name: "src=X9/dst=BP/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe9}, 1223 {name: "src=X9/dst=SI/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf1}, 1224 {name: "src=X9/dst=DI/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf9}, 1225 {name: "src=X9/dst=R8/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc1}, 1226 {name: "src=X9/dst=R9/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc9}, 1227 {name: "src=X9/dst=R13/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe9}, 1228 {name: "src=X9/dst=R14/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf1}, 1229 {name: "src=X9/dst=R15/srcOnModRMReg=false", srcReg: RegX9, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf9}, 1230 {name: "src=X10/dst=AX/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc2}, 1231 {name: "src=X10/dst=BX/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xda}, 1232 {name: "src=X10/dst=SP/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe2}, 1233 {name: "src=X10/dst=BP/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xea}, 1234 {name: "src=X10/dst=SI/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf2}, 1235 {name: "src=X10/dst=DI/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfa}, 1236 {name: "src=X10/dst=R8/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc2}, 1237 {name: "src=X10/dst=R9/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xca}, 1238 {name: "src=X10/dst=R13/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xea}, 1239 {name: "src=X10/dst=R14/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf2}, 1240 {name: "src=X10/dst=R15/srcOnModRMReg=false", srcReg: RegX10, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfa}, 1241 {name: "src=X11/dst=AX/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc3}, 1242 {name: "src=X11/dst=BX/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdb}, 1243 {name: "src=X11/dst=SP/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe3}, 1244 {name: "src=X11/dst=BP/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xeb}, 1245 {name: "src=X11/dst=SI/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf3}, 1246 {name: "src=X11/dst=DI/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfb}, 1247 {name: "src=X11/dst=R8/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc3}, 1248 {name: "src=X11/dst=R9/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcb}, 1249 {name: "src=X11/dst=R13/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xeb}, 1250 {name: "src=X11/dst=R14/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf3}, 1251 {name: "src=X11/dst=R15/srcOnModRMReg=false", srcReg: RegX11, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfb}, 1252 {name: "src=X12/dst=AX/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc4}, 1253 {name: "src=X12/dst=BX/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdc}, 1254 {name: "src=X12/dst=SP/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe4}, 1255 {name: "src=X12/dst=BP/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xec}, 1256 {name: "src=X12/dst=SI/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf4}, 1257 {name: "src=X12/dst=DI/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfc}, 1258 {name: "src=X12/dst=R8/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc4}, 1259 {name: "src=X12/dst=R9/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcc}, 1260 {name: "src=X12/dst=R13/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xec}, 1261 {name: "src=X12/dst=R14/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf4}, 1262 {name: "src=X12/dst=R15/srcOnModRMReg=false", srcReg: RegX12, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfc}, 1263 {name: "src=X13/dst=AX/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc5}, 1264 {name: "src=X13/dst=BX/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdd}, 1265 {name: "src=X13/dst=SP/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe5}, 1266 {name: "src=X13/dst=BP/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xed}, 1267 {name: "src=X13/dst=SI/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf5}, 1268 {name: "src=X13/dst=DI/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfd}, 1269 {name: "src=X13/dst=R8/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc5}, 1270 {name: "src=X13/dst=R9/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcd}, 1271 {name: "src=X13/dst=R13/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xed}, 1272 {name: "src=X13/dst=R14/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf5}, 1273 {name: "src=X13/dst=R15/srcOnModRMReg=false", srcReg: RegX13, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfd}, 1274 {name: "src=X14/dst=AX/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc6}, 1275 {name: "src=X14/dst=BX/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xde}, 1276 {name: "src=X14/dst=SP/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe6}, 1277 {name: "src=X14/dst=BP/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xee}, 1278 {name: "src=X14/dst=SI/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf6}, 1279 {name: "src=X14/dst=DI/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfe}, 1280 {name: "src=X14/dst=R8/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc6}, 1281 {name: "src=X14/dst=R9/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xce}, 1282 {name: "src=X14/dst=R13/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xee}, 1283 {name: "src=X14/dst=R14/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf6}, 1284 {name: "src=X14/dst=R15/srcOnModRMReg=false", srcReg: RegX14, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfe}, 1285 {name: "src=X15/dst=AX/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegAX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc7}, 1286 {name: "src=X15/dst=BX/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegBX, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdf}, 1287 {name: "src=X15/dst=SP/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegSP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe7}, 1288 {name: "src=X15/dst=BP/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegBP, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xef}, 1289 {name: "src=X15/dst=SI/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegSI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf7}, 1290 {name: "src=X15/dst=DI/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegDI, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xff}, 1291 {name: "src=X15/dst=R8/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegR8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc7}, 1292 {name: "src=X15/dst=R9/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegR9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcf}, 1293 {name: "src=X15/dst=R13/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegR13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xef}, 1294 {name: "src=X15/dst=R14/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegR14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf7}, 1295 {name: "src=X15/dst=R15/srcOnModRMReg=false", srcReg: RegX15, dstReg: RegR15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xff}, 1296 {name: "src=AX/dst=X0/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc0}, 1297 {name: "src=AX/dst=X1/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc8}, 1298 {name: "src=AX/dst=X2/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd0}, 1299 {name: "src=AX/dst=X3/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd8}, 1300 {name: "src=AX/dst=X4/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe0}, 1301 {name: "src=AX/dst=X5/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe8}, 1302 {name: "src=AX/dst=X6/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf0}, 1303 {name: "src=AX/dst=X7/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf8}, 1304 {name: "src=AX/dst=X8/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc0}, 1305 {name: "src=AX/dst=X9/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc8}, 1306 {name: "src=AX/dst=X10/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd0}, 1307 {name: "src=AX/dst=X11/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd8}, 1308 {name: "src=AX/dst=X12/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe0}, 1309 {name: "src=AX/dst=X13/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe8}, 1310 {name: "src=AX/dst=X14/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf0}, 1311 {name: "src=AX/dst=X15/srcOnModRMReg=false", srcReg: RegAX, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf8}, 1312 {name: "src=BX/dst=X0/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc3}, 1313 {name: "src=BX/dst=X1/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xcb}, 1314 {name: "src=BX/dst=X2/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd3}, 1315 {name: "src=BX/dst=X3/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdb}, 1316 {name: "src=BX/dst=X4/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe3}, 1317 {name: "src=BX/dst=X5/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xeb}, 1318 {name: "src=BX/dst=X6/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf3}, 1319 {name: "src=BX/dst=X7/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfb}, 1320 {name: "src=BX/dst=X8/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc3}, 1321 {name: "src=BX/dst=X9/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcb}, 1322 {name: "src=BX/dst=X10/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd3}, 1323 {name: "src=BX/dst=X11/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xdb}, 1324 {name: "src=BX/dst=X12/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe3}, 1325 {name: "src=BX/dst=X13/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xeb}, 1326 {name: "src=BX/dst=X14/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf3}, 1327 {name: "src=BX/dst=X15/srcOnModRMReg=false", srcReg: RegBX, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfb}, 1328 {name: "src=SP/dst=X0/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc4}, 1329 {name: "src=SP/dst=X1/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xcc}, 1330 {name: "src=SP/dst=X2/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd4}, 1331 {name: "src=SP/dst=X3/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdc}, 1332 {name: "src=SP/dst=X4/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe4}, 1333 {name: "src=SP/dst=X5/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xec}, 1334 {name: "src=SP/dst=X6/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf4}, 1335 {name: "src=SP/dst=X7/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfc}, 1336 {name: "src=SP/dst=X8/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc4}, 1337 {name: "src=SP/dst=X9/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcc}, 1338 {name: "src=SP/dst=X10/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd4}, 1339 {name: "src=SP/dst=X11/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xdc}, 1340 {name: "src=SP/dst=X12/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe4}, 1341 {name: "src=SP/dst=X13/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xec}, 1342 {name: "src=SP/dst=X14/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf4}, 1343 {name: "src=SP/dst=X15/srcOnModRMReg=false", srcReg: RegSP, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfc}, 1344 {name: "src=BP/dst=X0/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc5}, 1345 {name: "src=BP/dst=X1/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xcd}, 1346 {name: "src=BP/dst=X2/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd5}, 1347 {name: "src=BP/dst=X3/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdd}, 1348 {name: "src=BP/dst=X4/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe5}, 1349 {name: "src=BP/dst=X5/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xed}, 1350 {name: "src=BP/dst=X6/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf5}, 1351 {name: "src=BP/dst=X7/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfd}, 1352 {name: "src=BP/dst=X8/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc5}, 1353 {name: "src=BP/dst=X9/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcd}, 1354 {name: "src=BP/dst=X10/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd5}, 1355 {name: "src=BP/dst=X11/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xdd}, 1356 {name: "src=BP/dst=X12/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe5}, 1357 {name: "src=BP/dst=X13/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xed}, 1358 {name: "src=BP/dst=X14/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf5}, 1359 {name: "src=BP/dst=X15/srcOnModRMReg=false", srcReg: RegBP, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfd}, 1360 {name: "src=SI/dst=X0/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc6}, 1361 {name: "src=SI/dst=X1/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xce}, 1362 {name: "src=SI/dst=X2/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd6}, 1363 {name: "src=SI/dst=X3/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xde}, 1364 {name: "src=SI/dst=X4/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe6}, 1365 {name: "src=SI/dst=X5/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xee}, 1366 {name: "src=SI/dst=X6/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf6}, 1367 {name: "src=SI/dst=X7/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xfe}, 1368 {name: "src=SI/dst=X8/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc6}, 1369 {name: "src=SI/dst=X9/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xce}, 1370 {name: "src=SI/dst=X10/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd6}, 1371 {name: "src=SI/dst=X11/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xde}, 1372 {name: "src=SI/dst=X12/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe6}, 1373 {name: "src=SI/dst=X13/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xee}, 1374 {name: "src=SI/dst=X14/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf6}, 1375 {name: "src=SI/dst=X15/srcOnModRMReg=false", srcReg: RegSI, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xfe}, 1376 {name: "src=DI/dst=X0/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xc7}, 1377 {name: "src=DI/dst=X1/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xcf}, 1378 {name: "src=DI/dst=X2/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xd7}, 1379 {name: "src=DI/dst=X3/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xdf}, 1380 {name: "src=DI/dst=X4/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xe7}, 1381 {name: "src=DI/dst=X5/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xef}, 1382 {name: "src=DI/dst=X6/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xf7}, 1383 {name: "src=DI/dst=X7/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x0, expModRM: 0xff}, 1384 {name: "src=DI/dst=X8/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xc7}, 1385 {name: "src=DI/dst=X9/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xcf}, 1386 {name: "src=DI/dst=X10/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xd7}, 1387 {name: "src=DI/dst=X11/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xdf}, 1388 {name: "src=DI/dst=X12/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xe7}, 1389 {name: "src=DI/dst=X13/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xef}, 1390 {name: "src=DI/dst=X14/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xf7}, 1391 {name: "src=DI/dst=X15/srcOnModRMReg=false", srcReg: RegDI, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x44, expModRM: 0xff}, 1392 {name: "src=R8/dst=X0/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc0}, 1393 {name: "src=R8/dst=X1/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc8}, 1394 {name: "src=R8/dst=X2/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd0}, 1395 {name: "src=R8/dst=X3/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd8}, 1396 {name: "src=R8/dst=X4/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe0}, 1397 {name: "src=R8/dst=X5/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe8}, 1398 {name: "src=R8/dst=X6/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf0}, 1399 {name: "src=R8/dst=X7/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf8}, 1400 {name: "src=R8/dst=X8/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc0}, 1401 {name: "src=R8/dst=X9/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc8}, 1402 {name: "src=R8/dst=X10/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd0}, 1403 {name: "src=R8/dst=X11/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd8}, 1404 {name: "src=R8/dst=X12/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe0}, 1405 {name: "src=R8/dst=X13/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe8}, 1406 {name: "src=R8/dst=X14/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf0}, 1407 {name: "src=R8/dst=X15/srcOnModRMReg=false", srcReg: RegR8, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf8}, 1408 {name: "src=R9/dst=X0/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc1}, 1409 {name: "src=R9/dst=X1/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc9}, 1410 {name: "src=R9/dst=X2/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd1}, 1411 {name: "src=R9/dst=X3/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd9}, 1412 {name: "src=R9/dst=X4/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe1}, 1413 {name: "src=R9/dst=X5/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe9}, 1414 {name: "src=R9/dst=X6/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf1}, 1415 {name: "src=R9/dst=X7/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf9}, 1416 {name: "src=R9/dst=X8/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc1}, 1417 {name: "src=R9/dst=X9/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc9}, 1418 {name: "src=R9/dst=X10/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd1}, 1419 {name: "src=R9/dst=X11/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd9}, 1420 {name: "src=R9/dst=X12/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe1}, 1421 {name: "src=R9/dst=X13/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe9}, 1422 {name: "src=R9/dst=X14/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf1}, 1423 {name: "src=R9/dst=X15/srcOnModRMReg=false", srcReg: RegR9, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf9}, 1424 {name: "src=R13/dst=X0/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc5}, 1425 {name: "src=R13/dst=X1/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xcd}, 1426 {name: "src=R13/dst=X2/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd5}, 1427 {name: "src=R13/dst=X3/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdd}, 1428 {name: "src=R13/dst=X4/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe5}, 1429 {name: "src=R13/dst=X5/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xed}, 1430 {name: "src=R13/dst=X6/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf5}, 1431 {name: "src=R13/dst=X7/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfd}, 1432 {name: "src=R13/dst=X8/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc5}, 1433 {name: "src=R13/dst=X9/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcd}, 1434 {name: "src=R13/dst=X10/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd5}, 1435 {name: "src=R13/dst=X11/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xdd}, 1436 {name: "src=R13/dst=X12/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe5}, 1437 {name: "src=R13/dst=X13/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xed}, 1438 {name: "src=R13/dst=X14/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf5}, 1439 {name: "src=R13/dst=X15/srcOnModRMReg=false", srcReg: RegR13, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfd}, 1440 {name: "src=R14/dst=X0/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc6}, 1441 {name: "src=R14/dst=X1/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xce}, 1442 {name: "src=R14/dst=X2/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd6}, 1443 {name: "src=R14/dst=X3/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xde}, 1444 {name: "src=R14/dst=X4/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe6}, 1445 {name: "src=R14/dst=X5/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xee}, 1446 {name: "src=R14/dst=X6/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf6}, 1447 {name: "src=R14/dst=X7/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xfe}, 1448 {name: "src=R14/dst=X8/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc6}, 1449 {name: "src=R14/dst=X9/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xce}, 1450 {name: "src=R14/dst=X10/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd6}, 1451 {name: "src=R14/dst=X11/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xde}, 1452 {name: "src=R14/dst=X12/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe6}, 1453 {name: "src=R14/dst=X13/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xee}, 1454 {name: "src=R14/dst=X14/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf6}, 1455 {name: "src=R14/dst=X15/srcOnModRMReg=false", srcReg: RegR14, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xfe}, 1456 {name: "src=R15/dst=X0/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX0, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xc7}, 1457 {name: "src=R15/dst=X1/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX1, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xcf}, 1458 {name: "src=R15/dst=X2/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX2, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xd7}, 1459 {name: "src=R15/dst=X3/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX3, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xdf}, 1460 {name: "src=R15/dst=X4/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX4, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xe7}, 1461 {name: "src=R15/dst=X5/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX5, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xef}, 1462 {name: "src=R15/dst=X6/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX6, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xf7}, 1463 {name: "src=R15/dst=X7/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX7, srcOnModRMReg: false, expRexPrefix: 0x41, expModRM: 0xff}, 1464 {name: "src=R15/dst=X8/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX8, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xc7}, 1465 {name: "src=R15/dst=X9/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX9, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xcf}, 1466 {name: "src=R15/dst=X10/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX10, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xd7}, 1467 {name: "src=R15/dst=X11/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX11, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xdf}, 1468 {name: "src=R15/dst=X12/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX12, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xe7}, 1469 {name: "src=R15/dst=X13/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX13, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xef}, 1470 {name: "src=R15/dst=X14/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX14, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xf7}, 1471 {name: "src=R15/dst=X15/srcOnModRMReg=false", srcReg: RegR15, dstReg: RegX15, srcOnModRMReg: false, expRexPrefix: 0x45, expModRM: 0xff}, 1472 } 1473 1474 for _, tc := range tests { 1475 n := nodeImpl{srcReg: tc.srcReg, dstReg: tc.dstReg} 1476 rexPrefix, modRM, err := n.getRegisterToRegisterModRM(tc.srcOnModRMReg) 1477 require.NoError(t, err, tc.name) 1478 require.Equal(t, tc.expRexPrefix, rexPrefix, tc.name) 1479 require.Equal(t, tc.expModRM, modRM, tc.name) 1480 } 1481 }