wa-lang.org/wazero@v1.0.2/internal/asm/amd64/impl_5_test.go (about)

     1  package amd64
     2  
     3  import (
     4  	"encoding/binary"
     5  	"math"
     6  	"testing"
     7  
     8  	"wa-lang.org/wazero/internal/asm"
     9  	"wa-lang.org/wazero/internal/testing/require"
    10  )
    11  
    12  func TestAssemblerImpl_EncodeConstToMemory(t *testing.T) {
    13  	t.Run("error", func(t *testing.T) {
    14  		tests := []struct {
    15  			n      *nodeImpl
    16  			expErr string
    17  		}{
    18  			{
    19  				n:      &nodeImpl{instruction: ADDL, types: operandTypesConstToMemory, dstReg: RegAX},
    20  				expErr: "ADDL is unsupported for from:const,to:memory type",
    21  			},
    22  			{
    23  				n: &nodeImpl{
    24  					instruction: MOVB, types: operandTypesConstToMemory,
    25  					srcConst: math.MaxInt16,
    26  					dstReg:   RegAX, dstConst: 0xff_ff,
    27  				},
    28  				expErr: "too large load target const 32767 for MOVB",
    29  			},
    30  			{
    31  				n: &nodeImpl{
    32  					instruction: MOVL, types: operandTypesConstToMemory,
    33  					srcConst: math.MaxInt64,
    34  					dstReg:   RegAX, dstConst: 0xff_ff,
    35  				},
    36  				expErr: "too large load target const 9223372036854775807 for MOVL",
    37  			},
    38  		}
    39  
    40  		for _, tc := range tests {
    41  			a := NewAssembler()
    42  			err := a.encodeConstToMemory(tc.n)
    43  			require.EqualError(t, err, tc.expErr)
    44  		}
    45  	})
    46  
    47  	tests := []struct {
    48  		name      string
    49  		inst      asm.Instruction
    50  		baseReg   asm.Register
    51  		c, offset int64
    52  		exp       []byte
    53  	}{
    54  		{name: "MOVB/c=0/base=AX/offset=0x0", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x0}},
    55  		{name: "MOVB/c=1/base=AX/offset=0x0", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x1}},
    56  		{name: "MOVB/c=-1/base=AX/offset=0x0", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0xff}},
    57  		{name: "MOVB/c=100/base=AX/offset=0x0", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x64}},
    58  		{name: "MOVB/c=-100/base=AX/offset=0x0", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x9c}},
    59  		{name: "MOVB/c=127/base=AX/offset=0x0", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x7f}},
    60  		{name: "MOVB/c=-128/base=AX/offset=0x0", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x80}},
    61  		{name: "MOVB/c=0/base=AX/offset=0x1", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x0}},
    62  		{name: "MOVB/c=1/base=AX/offset=0x1", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x1}},
    63  		{name: "MOVB/c=-1/base=AX/offset=0x1", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0xff}},
    64  		{name: "MOVB/c=100/base=AX/offset=0x1", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x64}},
    65  		{name: "MOVB/c=-100/base=AX/offset=0x1", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x9c}},
    66  		{name: "MOVB/c=127/base=AX/offset=0x1", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x7f}},
    67  		{name: "MOVB/c=-128/base=AX/offset=0x1", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x80}},
    68  		{name: "MOVB/c=0/base=AX/offset=-0x1", inst: MOVB, c: 0, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x0}},
    69  		{name: "MOVB/c=1/base=AX/offset=-0x1", inst: MOVB, c: 1, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x1}},
    70  		{name: "MOVB/c=-1/base=AX/offset=-0x1", inst: MOVB, c: -1, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0xff}},
    71  		{name: "MOVB/c=100/base=AX/offset=-0x1", inst: MOVB, c: 100, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x64}},
    72  		{name: "MOVB/c=-100/base=AX/offset=-0x1", inst: MOVB, c: -100, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x9c}},
    73  		{name: "MOVB/c=127/base=AX/offset=-0x1", inst: MOVB, c: 127, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x7f}},
    74  		{name: "MOVB/c=-128/base=AX/offset=-0x1", inst: MOVB, c: -128, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x80}},
    75  		{name: "MOVB/c=0/base=AX/offset=0x4db", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0}},
    76  		{name: "MOVB/c=1/base=AX/offset=0x4db", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1}},
    77  		{name: "MOVB/c=-1/base=AX/offset=0x4db", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff}},
    78  		{name: "MOVB/c=100/base=AX/offset=0x4db", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64}},
    79  		{name: "MOVB/c=-100/base=AX/offset=0x4db", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c}},
    80  		{name: "MOVB/c=127/base=AX/offset=0x4db", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f}},
    81  		{name: "MOVB/c=-128/base=AX/offset=0x4db", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80}},
    82  		{name: "MOVB/c=0/base=AX/offset=-0x4d2", inst: MOVB, c: 0, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0}},
    83  		{name: "MOVB/c=1/base=AX/offset=-0x4d2", inst: MOVB, c: 1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1}},
    84  		{name: "MOVB/c=-1/base=AX/offset=-0x4d2", inst: MOVB, c: -1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff}},
    85  		{name: "MOVB/c=100/base=AX/offset=-0x4d2", inst: MOVB, c: 100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64}},
    86  		{name: "MOVB/c=-100/base=AX/offset=-0x4d2", inst: MOVB, c: -100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c}},
    87  		{name: "MOVB/c=127/base=AX/offset=-0x4d2", inst: MOVB, c: 127, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f}},
    88  		{name: "MOVB/c=-128/base=AX/offset=-0x4d2", inst: MOVB, c: -128, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80}},
    89  		{name: "MOVB/c=0/base=AX/offset=0x7fffffff", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0}},
    90  		{name: "MOVB/c=1/base=AX/offset=0x7fffffff", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1}},
    91  		{name: "MOVB/c=-1/base=AX/offset=0x7fffffff", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff}},
    92  		{name: "MOVB/c=100/base=AX/offset=0x7fffffff", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64}},
    93  		{name: "MOVB/c=-100/base=AX/offset=0x7fffffff", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c}},
    94  		{name: "MOVB/c=127/base=AX/offset=0x7fffffff", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f}},
    95  		{name: "MOVB/c=-128/base=AX/offset=0x7fffffff", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80}},
    96  		{name: "MOVB/c=0/base=AX/offset=-0x80000000", inst: MOVB, c: 0, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0}},
    97  		{name: "MOVB/c=1/base=AX/offset=-0x80000000", inst: MOVB, c: 1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1}},
    98  		{name: "MOVB/c=-1/base=AX/offset=-0x80000000", inst: MOVB, c: -1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff}},
    99  		{name: "MOVB/c=100/base=AX/offset=-0x80000000", inst: MOVB, c: 100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64}},
   100  		{name: "MOVB/c=-100/base=AX/offset=-0x80000000", inst: MOVB, c: -100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c}},
   101  		{name: "MOVB/c=127/base=AX/offset=-0x80000000", inst: MOVB, c: 127, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f}},
   102  		{name: "MOVB/c=-128/base=AX/offset=-0x80000000", inst: MOVB, c: -128, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80}},
   103  		{name: "MOVB/c=0/base=AX/offset=0x7fff", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   104  		{name: "MOVB/c=1/base=AX/offset=0x7fff", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1}},
   105  		{name: "MOVB/c=-1/base=AX/offset=0x7fff", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff}},
   106  		{name: "MOVB/c=100/base=AX/offset=0x7fff", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64}},
   107  		{name: "MOVB/c=-100/base=AX/offset=0x7fff", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c}},
   108  		{name: "MOVB/c=127/base=AX/offset=0x7fff", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f}},
   109  		{name: "MOVB/c=-128/base=AX/offset=0x7fff", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80}},
   110  		{name: "MOVB/c=0/base=AX/offset=-0x8000", inst: MOVB, c: 0, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0}},
   111  		{name: "MOVB/c=1/base=AX/offset=-0x8000", inst: MOVB, c: 1, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1}},
   112  		{name: "MOVB/c=-1/base=AX/offset=-0x8000", inst: MOVB, c: -1, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff}},
   113  		{name: "MOVB/c=100/base=AX/offset=-0x8000", inst: MOVB, c: 100, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64}},
   114  		{name: "MOVB/c=-100/base=AX/offset=-0x8000", inst: MOVB, c: -100, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c}},
   115  		{name: "MOVB/c=127/base=AX/offset=-0x8000", inst: MOVB, c: 127, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f}},
   116  		{name: "MOVB/c=-128/base=AX/offset=-0x8000", inst: MOVB, c: -128, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80}},
   117  		{name: "MOVB/c=0/base=R8/offset=0x0", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x0}},
   118  		{name: "MOVB/c=1/base=R8/offset=0x0", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x1}},
   119  		{name: "MOVB/c=-1/base=R8/offset=0x0", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0xff}},
   120  		{name: "MOVB/c=100/base=R8/offset=0x0", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x64}},
   121  		{name: "MOVB/c=-100/base=R8/offset=0x0", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x9c}},
   122  		{name: "MOVB/c=127/base=R8/offset=0x0", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x7f}},
   123  		{name: "MOVB/c=-128/base=R8/offset=0x0", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x80}},
   124  		{name: "MOVB/c=0/base=R8/offset=0x1", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x0}},
   125  		{name: "MOVB/c=1/base=R8/offset=0x1", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x1}},
   126  		{name: "MOVB/c=-1/base=R8/offset=0x1", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0xff}},
   127  		{name: "MOVB/c=100/base=R8/offset=0x1", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x64}},
   128  		{name: "MOVB/c=-100/base=R8/offset=0x1", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x9c}},
   129  		{name: "MOVB/c=127/base=R8/offset=0x1", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x7f}},
   130  		{name: "MOVB/c=-128/base=R8/offset=0x1", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x80}},
   131  		{name: "MOVB/c=0/base=R8/offset=-0x1", inst: MOVB, c: 0, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x0}},
   132  		{name: "MOVB/c=1/base=R8/offset=-0x1", inst: MOVB, c: 1, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x1}},
   133  		{name: "MOVB/c=-1/base=R8/offset=-0x1", inst: MOVB, c: -1, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0xff}},
   134  		{name: "MOVB/c=100/base=R8/offset=-0x1", inst: MOVB, c: 100, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x64}},
   135  		{name: "MOVB/c=-100/base=R8/offset=-0x1", inst: MOVB, c: -100, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x9c}},
   136  		{name: "MOVB/c=127/base=R8/offset=-0x1", inst: MOVB, c: 127, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x7f}},
   137  		{name: "MOVB/c=-128/base=R8/offset=-0x1", inst: MOVB, c: -128, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x80}},
   138  		{name: "MOVB/c=0/base=R8/offset=0x4db", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0}},
   139  		{name: "MOVB/c=1/base=R8/offset=0x4db", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1}},
   140  		{name: "MOVB/c=-1/base=R8/offset=0x4db", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff}},
   141  		{name: "MOVB/c=100/base=R8/offset=0x4db", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64}},
   142  		{name: "MOVB/c=-100/base=R8/offset=0x4db", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c}},
   143  		{name: "MOVB/c=127/base=R8/offset=0x4db", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f}},
   144  		{name: "MOVB/c=-128/base=R8/offset=0x4db", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80}},
   145  		{name: "MOVB/c=0/base=R8/offset=-0x4d2", inst: MOVB, c: 0, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0}},
   146  		{name: "MOVB/c=1/base=R8/offset=-0x4d2", inst: MOVB, c: 1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1}},
   147  		{name: "MOVB/c=-1/base=R8/offset=-0x4d2", inst: MOVB, c: -1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff}},
   148  		{name: "MOVB/c=100/base=R8/offset=-0x4d2", inst: MOVB, c: 100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64}},
   149  		{name: "MOVB/c=-100/base=R8/offset=-0x4d2", inst: MOVB, c: -100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c}},
   150  		{name: "MOVB/c=127/base=R8/offset=-0x4d2", inst: MOVB, c: 127, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f}},
   151  		{name: "MOVB/c=-128/base=R8/offset=-0x4d2", inst: MOVB, c: -128, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80}},
   152  		{name: "MOVB/c=0/base=R8/offset=0x7fffffff", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0}},
   153  		{name: "MOVB/c=1/base=R8/offset=0x7fffffff", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1}},
   154  		{name: "MOVB/c=-1/base=R8/offset=0x7fffffff", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff}},
   155  		{name: "MOVB/c=100/base=R8/offset=0x7fffffff", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64}},
   156  		{name: "MOVB/c=-100/base=R8/offset=0x7fffffff", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c}},
   157  		{name: "MOVB/c=127/base=R8/offset=0x7fffffff", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f}},
   158  		{name: "MOVB/c=-128/base=R8/offset=0x7fffffff", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80}},
   159  		{name: "MOVB/c=0/base=R8/offset=-0x80000000", inst: MOVB, c: 0, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0}},
   160  		{name: "MOVB/c=1/base=R8/offset=-0x80000000", inst: MOVB, c: 1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1}},
   161  		{name: "MOVB/c=-1/base=R8/offset=-0x80000000", inst: MOVB, c: -1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff}},
   162  		{name: "MOVB/c=100/base=R8/offset=-0x80000000", inst: MOVB, c: 100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64}},
   163  		{name: "MOVB/c=-100/base=R8/offset=-0x80000000", inst: MOVB, c: -100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c}},
   164  		{name: "MOVB/c=127/base=R8/offset=-0x80000000", inst: MOVB, c: 127, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f}},
   165  		{name: "MOVB/c=-128/base=R8/offset=-0x80000000", inst: MOVB, c: -128, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80}},
   166  		{name: "MOVB/c=0/base=R8/offset=0x7fff", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   167  		{name: "MOVB/c=1/base=R8/offset=0x7fff", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1}},
   168  		{name: "MOVB/c=-1/base=R8/offset=0x7fff", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff}},
   169  		{name: "MOVB/c=100/base=R8/offset=0x7fff", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64}},
   170  		{name: "MOVB/c=-100/base=R8/offset=0x7fff", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c}},
   171  		{name: "MOVB/c=127/base=R8/offset=0x7fff", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f}},
   172  		{name: "MOVB/c=-128/base=R8/offset=0x7fff", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80}},
   173  		{name: "MOVB/c=0/base=R8/offset=-0x8000", inst: MOVB, c: 0, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0}},
   174  		{name: "MOVB/c=1/base=R8/offset=-0x8000", inst: MOVB, c: 1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1}},
   175  		{name: "MOVB/c=-1/base=R8/offset=-0x8000", inst: MOVB, c: -1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff}},
   176  		{name: "MOVB/c=100/base=R8/offset=-0x8000", inst: MOVB, c: 100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64}},
   177  		{name: "MOVB/c=-100/base=R8/offset=-0x8000", inst: MOVB, c: -100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c}},
   178  		{name: "MOVB/c=127/base=R8/offset=-0x8000", inst: MOVB, c: 127, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f}},
   179  		{name: "MOVB/c=-128/base=R8/offset=-0x8000", inst: MOVB, c: -128, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80}},
   180  		{name: "MOVL/c=0/base=AX/offset=0x0", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x0, 0x0, 0x0}},
   181  		{name: "MOVL/c=1/base=AX/offset=0x0", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x1, 0x0, 0x0, 0x0}},
   182  		{name: "MOVL/c=-1/base=AX/offset=0x0", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0xff, 0xff, 0xff, 0xff}},
   183  		{name: "MOVL/c=100/base=AX/offset=0x0", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x64, 0x0, 0x0, 0x0}},
   184  		{name: "MOVL/c=-100/base=AX/offset=0x0", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   185  		{name: "MOVL/c=127/base=AX/offset=0x0", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   186  		{name: "MOVL/c=-128/base=AX/offset=0x0", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x80, 0xff, 0xff, 0xff}},
   187  		{name: "MOVL/c=32767/base=AX/offset=0x0", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   188  		{name: "MOVL/c=-32768/base=AX/offset=0x0", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x80, 0xff, 0xff}},
   189  		{name: "MOVL/c=1048576/base=AX/offset=0x0", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x0, 0x10, 0x0}},
   190  		{name: "MOVL/c=-1048576/base=AX/offset=0x0", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   191  		{name: "MOVL/c=2147483647/base=AX/offset=0x0", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   192  		{name: "MOVL/c=-2147483648/base=AX/offset=0x0", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x0, 0x0, 0x80}},
   193  		{name: "MOVL/c=0/base=AX/offset=0x1", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x0}},
   194  		{name: "MOVL/c=1/base=AX/offset=0x1", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x1, 0x0, 0x0, 0x0}},
   195  		{name: "MOVL/c=-1/base=AX/offset=0x1", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0xff}},
   196  		{name: "MOVL/c=100/base=AX/offset=0x1", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x64, 0x0, 0x0, 0x0}},
   197  		{name: "MOVL/c=-100/base=AX/offset=0x1", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x9c, 0xff, 0xff, 0xff}},
   198  		{name: "MOVL/c=127/base=AX/offset=0x1", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x7f, 0x0, 0x0, 0x0}},
   199  		{name: "MOVL/c=-128/base=AX/offset=0x1", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x80, 0xff, 0xff, 0xff}},
   200  		{name: "MOVL/c=32767/base=AX/offset=0x1", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0xff, 0x7f, 0x0, 0x0}},
   201  		{name: "MOVL/c=-32768/base=AX/offset=0x1", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x80, 0xff, 0xff}},
   202  		{name: "MOVL/c=1048576/base=AX/offset=0x1", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x0, 0x10, 0x0}},
   203  		{name: "MOVL/c=-1048576/base=AX/offset=0x1", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x0, 0xf0, 0xff}},
   204  		{name: "MOVL/c=2147483647/base=AX/offset=0x1", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0x7f}},
   205  		{name: "MOVL/c=-2147483648/base=AX/offset=0x1", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x80}},
   206  		{name: "MOVL/c=0/base=AX/offset=-0x1", inst: MOVL, c: 0, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x0}},
   207  		{name: "MOVL/c=1/base=AX/offset=-0x1", inst: MOVL, c: 1, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x1, 0x0, 0x0, 0x0}},
   208  		{name: "MOVL/c=-1/base=AX/offset=-0x1", inst: MOVL, c: -1, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff}},
   209  		{name: "MOVL/c=100/base=AX/offset=-0x1", inst: MOVL, c: 100, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x64, 0x0, 0x0, 0x0}},
   210  		{name: "MOVL/c=-100/base=AX/offset=-0x1", inst: MOVL, c: -100, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   211  		{name: "MOVL/c=127/base=AX/offset=-0x1", inst: MOVL, c: 127, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   212  		{name: "MOVL/c=-128/base=AX/offset=-0x1", inst: MOVL, c: -128, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x80, 0xff, 0xff, 0xff}},
   213  		{name: "MOVL/c=32767/base=AX/offset=-0x1", inst: MOVL, c: 32767, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   214  		{name: "MOVL/c=-32768/base=AX/offset=-0x1", inst: MOVL, c: -32768, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x80, 0xff, 0xff}},
   215  		{name: "MOVL/c=1048576/base=AX/offset=-0x1", inst: MOVL, c: 1048576, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x0, 0x10, 0x0}},
   216  		{name: "MOVL/c=-1048576/base=AX/offset=-0x1", inst: MOVL, c: -1048576, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   217  		{name: "MOVL/c=2147483647/base=AX/offset=-0x1", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   218  		{name: "MOVL/c=-2147483648/base=AX/offset=-0x1", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x80}},
   219  		{name: "MOVL/c=0/base=AX/offset=0x4db", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
   220  		{name: "MOVL/c=1/base=AX/offset=0x4db", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
   221  		{name: "MOVL/c=-1/base=AX/offset=0x4db", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
   222  		{name: "MOVL/c=100/base=AX/offset=0x4db", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
   223  		{name: "MOVL/c=-100/base=AX/offset=0x4db", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   224  		{name: "MOVL/c=127/base=AX/offset=0x4db", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   225  		{name: "MOVL/c=-128/base=AX/offset=0x4db", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
   226  		{name: "MOVL/c=32767/base=AX/offset=0x4db", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   227  		{name: "MOVL/c=-32768/base=AX/offset=0x4db", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   228  		{name: "MOVL/c=1048576/base=AX/offset=0x4db", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   229  		{name: "MOVL/c=-1048576/base=AX/offset=0x4db", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   230  		{name: "MOVL/c=2147483647/base=AX/offset=0x4db", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   231  		{name: "MOVL/c=-2147483648/base=AX/offset=0x4db", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   232  		{name: "MOVL/c=0/base=AX/offset=-0x4d2", inst: MOVL, c: 0, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
   233  		{name: "MOVL/c=1/base=AX/offset=-0x4d2", inst: MOVL, c: 1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
   234  		{name: "MOVL/c=-1/base=AX/offset=-0x4d2", inst: MOVL, c: -1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
   235  		{name: "MOVL/c=100/base=AX/offset=-0x4d2", inst: MOVL, c: 100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
   236  		{name: "MOVL/c=-100/base=AX/offset=-0x4d2", inst: MOVL, c: -100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   237  		{name: "MOVL/c=127/base=AX/offset=-0x4d2", inst: MOVL, c: 127, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   238  		{name: "MOVL/c=-128/base=AX/offset=-0x4d2", inst: MOVL, c: -128, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
   239  		{name: "MOVL/c=32767/base=AX/offset=-0x4d2", inst: MOVL, c: 32767, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   240  		{name: "MOVL/c=-32768/base=AX/offset=-0x4d2", inst: MOVL, c: -32768, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   241  		{name: "MOVL/c=1048576/base=AX/offset=-0x4d2", inst: MOVL, c: 1048576, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   242  		{name: "MOVL/c=-1048576/base=AX/offset=-0x4d2", inst: MOVL, c: -1048576, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   243  		{name: "MOVL/c=2147483647/base=AX/offset=-0x4d2", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   244  		{name: "MOVL/c=-2147483648/base=AX/offset=-0x4d2", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   245  		{name: "MOVL/c=0/base=AX/offset=0x7fffffff", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0}},
   246  		{name: "MOVL/c=1/base=AX/offset=0x7fffffff", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1, 0x0, 0x0, 0x0}},
   247  		{name: "MOVL/c=-1/base=AX/offset=0x7fffffff", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff}},
   248  		{name: "MOVL/c=100/base=AX/offset=0x7fffffff", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64, 0x0, 0x0, 0x0}},
   249  		{name: "MOVL/c=-100/base=AX/offset=0x7fffffff", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c, 0xff, 0xff, 0xff}},
   250  		{name: "MOVL/c=127/base=AX/offset=0x7fffffff", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x0, 0x0, 0x0}},
   251  		{name: "MOVL/c=-128/base=AX/offset=0x7fffffff", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0xff}},
   252  		{name: "MOVL/c=32767/base=AX/offset=0x7fffffff", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
   253  		{name: "MOVL/c=-32768/base=AX/offset=0x7fffffff", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
   254  		{name: "MOVL/c=1048576/base=AX/offset=0x7fffffff", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
   255  		{name: "MOVL/c=-1048576/base=AX/offset=0x7fffffff", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
   256  		{name: "MOVL/c=2147483647/base=AX/offset=0x7fffffff", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
   257  		{name: "MOVL/c=-2147483648/base=AX/offset=0x7fffffff", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
   258  		{name: "MOVL/c=0/base=AX/offset=-0x80000000", inst: MOVL, c: 0, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0}},
   259  		{name: "MOVL/c=1/base=AX/offset=-0x80000000", inst: MOVL, c: 1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0}},
   260  		{name: "MOVL/c=-1/base=AX/offset=-0x80000000", inst: MOVL, c: -1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff}},
   261  		{name: "MOVL/c=100/base=AX/offset=-0x80000000", inst: MOVL, c: 100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64, 0x0, 0x0, 0x0}},
   262  		{name: "MOVL/c=-100/base=AX/offset=-0x80000000", inst: MOVL, c: -100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c, 0xff, 0xff, 0xff}},
   263  		{name: "MOVL/c=127/base=AX/offset=-0x80000000", inst: MOVL, c: 127, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x0}},
   264  		{name: "MOVL/c=-128/base=AX/offset=-0x80000000", inst: MOVL, c: -128, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80, 0xff, 0xff, 0xff}},
   265  		{name: "MOVL/c=32767/base=AX/offset=-0x80000000", inst: MOVL, c: 32767, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
   266  		{name: "MOVL/c=-32768/base=AX/offset=-0x80000000", inst: MOVL, c: -32768, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
   267  		{name: "MOVL/c=1048576/base=AX/offset=-0x80000000", inst: MOVL, c: 1048576, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
   268  		{name: "MOVL/c=-1048576/base=AX/offset=-0x80000000", inst: MOVL, c: -1048576, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
   269  		{name: "MOVL/c=2147483647/base=AX/offset=-0x80000000", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
   270  		{name: "MOVL/c=-2147483648/base=AX/offset=-0x80000000", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
   271  		{name: "MOVL/c=0/base=AX/offset=0x7fff", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
   272  		{name: "MOVL/c=1/base=AX/offset=0x7fff", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
   273  		{name: "MOVL/c=-1/base=AX/offset=0x7fff", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
   274  		{name: "MOVL/c=100/base=AX/offset=0x7fff", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
   275  		{name: "MOVL/c=-100/base=AX/offset=0x7fff", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   276  		{name: "MOVL/c=127/base=AX/offset=0x7fff", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   277  		{name: "MOVL/c=-128/base=AX/offset=0x7fff", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
   278  		{name: "MOVL/c=32767/base=AX/offset=0x7fff", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   279  		{name: "MOVL/c=-32768/base=AX/offset=0x7fff", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   280  		{name: "MOVL/c=1048576/base=AX/offset=0x7fff", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   281  		{name: "MOVL/c=-1048576/base=AX/offset=0x7fff", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   282  		{name: "MOVL/c=2147483647/base=AX/offset=0x7fff", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   283  		{name: "MOVL/c=-2147483648/base=AX/offset=0x7fff", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   284  		{name: "MOVL/c=0/base=AX/offset=-0x8000", inst: MOVL, c: 0, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
   285  		{name: "MOVL/c=1/base=AX/offset=-0x8000", inst: MOVL, c: 1, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
   286  		{name: "MOVL/c=-1/base=AX/offset=-0x8000", inst: MOVL, c: -1, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
   287  		{name: "MOVL/c=100/base=AX/offset=-0x8000", inst: MOVL, c: 100, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
   288  		{name: "MOVL/c=-100/base=AX/offset=-0x8000", inst: MOVL, c: -100, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   289  		{name: "MOVL/c=127/base=AX/offset=-0x8000", inst: MOVL, c: 127, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   290  		{name: "MOVL/c=-128/base=AX/offset=-0x8000", inst: MOVL, c: -128, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
   291  		{name: "MOVL/c=32767/base=AX/offset=-0x8000", inst: MOVL, c: 32767, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   292  		{name: "MOVL/c=-32768/base=AX/offset=-0x8000", inst: MOVL, c: -32768, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   293  		{name: "MOVL/c=1048576/base=AX/offset=-0x8000", inst: MOVL, c: 1048576, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   294  		{name: "MOVL/c=-1048576/base=AX/offset=-0x8000", inst: MOVL, c: -1048576, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   295  		{name: "MOVL/c=2147483647/base=AX/offset=-0x8000", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   296  		{name: "MOVL/c=-2147483648/base=AX/offset=-0x8000", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   297  		{name: "MOVL/c=0/base=R8/offset=0x0", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0}},
   298  		{name: "MOVL/c=1/base=R8/offset=0x0", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x1, 0x0, 0x0, 0x0}},
   299  		{name: "MOVL/c=-1/base=R8/offset=0x0", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0xff, 0xff, 0xff, 0xff}},
   300  		{name: "MOVL/c=100/base=R8/offset=0x0", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x64, 0x0, 0x0, 0x0}},
   301  		{name: "MOVL/c=-100/base=R8/offset=0x0", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   302  		{name: "MOVL/c=127/base=R8/offset=0x0", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   303  		{name: "MOVL/c=-128/base=R8/offset=0x0", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x80, 0xff, 0xff, 0xff}},
   304  		{name: "MOVL/c=32767/base=R8/offset=0x0", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   305  		{name: "MOVL/c=-32768/base=R8/offset=0x0", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x80, 0xff, 0xff}},
   306  		{name: "MOVL/c=1048576/base=R8/offset=0x0", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x0, 0x10, 0x0}},
   307  		{name: "MOVL/c=-1048576/base=R8/offset=0x0", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   308  		{name: "MOVL/c=2147483647/base=R8/offset=0x0", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   309  		{name: "MOVL/c=-2147483648/base=R8/offset=0x0", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x80}},
   310  		{name: "MOVL/c=0/base=R8/offset=0x1", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x0}},
   311  		{name: "MOVL/c=1/base=R8/offset=0x1", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x1, 0x0, 0x0, 0x0}},
   312  		{name: "MOVL/c=-1/base=R8/offset=0x1", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0xff}},
   313  		{name: "MOVL/c=100/base=R8/offset=0x1", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x64, 0x0, 0x0, 0x0}},
   314  		{name: "MOVL/c=-100/base=R8/offset=0x1", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x9c, 0xff, 0xff, 0xff}},
   315  		{name: "MOVL/c=127/base=R8/offset=0x1", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x7f, 0x0, 0x0, 0x0}},
   316  		{name: "MOVL/c=-128/base=R8/offset=0x1", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x80, 0xff, 0xff, 0xff}},
   317  		{name: "MOVL/c=32767/base=R8/offset=0x1", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0xff, 0x7f, 0x0, 0x0}},
   318  		{name: "MOVL/c=-32768/base=R8/offset=0x1", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x80, 0xff, 0xff}},
   319  		{name: "MOVL/c=1048576/base=R8/offset=0x1", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x10, 0x0}},
   320  		{name: "MOVL/c=-1048576/base=R8/offset=0x1", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x0, 0xf0, 0xff}},
   321  		{name: "MOVL/c=2147483647/base=R8/offset=0x1", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0x7f}},
   322  		{name: "MOVL/c=-2147483648/base=R8/offset=0x1", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x80}},
   323  		{name: "MOVL/c=0/base=R8/offset=-0x1", inst: MOVL, c: 0, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x0}},
   324  		{name: "MOVL/c=1/base=R8/offset=-0x1", inst: MOVL, c: 1, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x1, 0x0, 0x0, 0x0}},
   325  		{name: "MOVL/c=-1/base=R8/offset=-0x1", inst: MOVL, c: -1, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff}},
   326  		{name: "MOVL/c=100/base=R8/offset=-0x1", inst: MOVL, c: 100, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x64, 0x0, 0x0, 0x0}},
   327  		{name: "MOVL/c=-100/base=R8/offset=-0x1", inst: MOVL, c: -100, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   328  		{name: "MOVL/c=127/base=R8/offset=-0x1", inst: MOVL, c: 127, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   329  		{name: "MOVL/c=-128/base=R8/offset=-0x1", inst: MOVL, c: -128, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x80, 0xff, 0xff, 0xff}},
   330  		{name: "MOVL/c=32767/base=R8/offset=-0x1", inst: MOVL, c: 32767, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   331  		{name: "MOVL/c=-32768/base=R8/offset=-0x1", inst: MOVL, c: -32768, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x80, 0xff, 0xff}},
   332  		{name: "MOVL/c=1048576/base=R8/offset=-0x1", inst: MOVL, c: 1048576, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x10, 0x0}},
   333  		{name: "MOVL/c=-1048576/base=R8/offset=-0x1", inst: MOVL, c: -1048576, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   334  		{name: "MOVL/c=2147483647/base=R8/offset=-0x1", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   335  		{name: "MOVL/c=-2147483648/base=R8/offset=-0x1", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x80}},
   336  		{name: "MOVL/c=0/base=R8/offset=0x4db", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
   337  		{name: "MOVL/c=1/base=R8/offset=0x4db", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
   338  		{name: "MOVL/c=-1/base=R8/offset=0x4db", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
   339  		{name: "MOVL/c=100/base=R8/offset=0x4db", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
   340  		{name: "MOVL/c=-100/base=R8/offset=0x4db", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   341  		{name: "MOVL/c=127/base=R8/offset=0x4db", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   342  		{name: "MOVL/c=-128/base=R8/offset=0x4db", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
   343  		{name: "MOVL/c=32767/base=R8/offset=0x4db", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   344  		{name: "MOVL/c=-32768/base=R8/offset=0x4db", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   345  		{name: "MOVL/c=1048576/base=R8/offset=0x4db", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   346  		{name: "MOVL/c=-1048576/base=R8/offset=0x4db", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   347  		{name: "MOVL/c=2147483647/base=R8/offset=0x4db", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   348  		{name: "MOVL/c=-2147483648/base=R8/offset=0x4db", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   349  		{name: "MOVL/c=0/base=R8/offset=-0x4d2", inst: MOVL, c: 0, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
   350  		{name: "MOVL/c=1/base=R8/offset=-0x4d2", inst: MOVL, c: 1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
   351  		{name: "MOVL/c=-1/base=R8/offset=-0x4d2", inst: MOVL, c: -1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
   352  		{name: "MOVL/c=100/base=R8/offset=-0x4d2", inst: MOVL, c: 100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
   353  		{name: "MOVL/c=-100/base=R8/offset=-0x4d2", inst: MOVL, c: -100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   354  		{name: "MOVL/c=127/base=R8/offset=-0x4d2", inst: MOVL, c: 127, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   355  		{name: "MOVL/c=-128/base=R8/offset=-0x4d2", inst: MOVL, c: -128, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
   356  		{name: "MOVL/c=32767/base=R8/offset=-0x4d2", inst: MOVL, c: 32767, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   357  		{name: "MOVL/c=-32768/base=R8/offset=-0x4d2", inst: MOVL, c: -32768, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   358  		{name: "MOVL/c=1048576/base=R8/offset=-0x4d2", inst: MOVL, c: 1048576, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   359  		{name: "MOVL/c=-1048576/base=R8/offset=-0x4d2", inst: MOVL, c: -1048576, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   360  		{name: "MOVL/c=2147483647/base=R8/offset=-0x4d2", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   361  		{name: "MOVL/c=-2147483648/base=R8/offset=-0x4d2", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   362  		{name: "MOVL/c=0/base=R8/offset=0x7fffffff", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0}},
   363  		{name: "MOVL/c=1/base=R8/offset=0x7fffffff", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1, 0x0, 0x0, 0x0}},
   364  		{name: "MOVL/c=-1/base=R8/offset=0x7fffffff", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff}},
   365  		{name: "MOVL/c=100/base=R8/offset=0x7fffffff", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64, 0x0, 0x0, 0x0}},
   366  		{name: "MOVL/c=-100/base=R8/offset=0x7fffffff", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c, 0xff, 0xff, 0xff}},
   367  		{name: "MOVL/c=127/base=R8/offset=0x7fffffff", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x0, 0x0, 0x0}},
   368  		{name: "MOVL/c=-128/base=R8/offset=0x7fffffff", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0xff}},
   369  		{name: "MOVL/c=32767/base=R8/offset=0x7fffffff", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
   370  		{name: "MOVL/c=-32768/base=R8/offset=0x7fffffff", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
   371  		{name: "MOVL/c=1048576/base=R8/offset=0x7fffffff", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
   372  		{name: "MOVL/c=-1048576/base=R8/offset=0x7fffffff", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
   373  		{name: "MOVL/c=2147483647/base=R8/offset=0x7fffffff", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
   374  		{name: "MOVL/c=-2147483648/base=R8/offset=0x7fffffff", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
   375  		{name: "MOVL/c=0/base=R8/offset=-0x80000000", inst: MOVL, c: 0, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0}},
   376  		{name: "MOVL/c=1/base=R8/offset=-0x80000000", inst: MOVL, c: 1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0}},
   377  		{name: "MOVL/c=-1/base=R8/offset=-0x80000000", inst: MOVL, c: -1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff}},
   378  		{name: "MOVL/c=100/base=R8/offset=-0x80000000", inst: MOVL, c: 100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64, 0x0, 0x0, 0x0}},
   379  		{name: "MOVL/c=-100/base=R8/offset=-0x80000000", inst: MOVL, c: -100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c, 0xff, 0xff, 0xff}},
   380  		{name: "MOVL/c=127/base=R8/offset=-0x80000000", inst: MOVL, c: 127, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x0}},
   381  		{name: "MOVL/c=-128/base=R8/offset=-0x80000000", inst: MOVL, c: -128, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80, 0xff, 0xff, 0xff}},
   382  		{name: "MOVL/c=32767/base=R8/offset=-0x80000000", inst: MOVL, c: 32767, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
   383  		{name: "MOVL/c=-32768/base=R8/offset=-0x80000000", inst: MOVL, c: -32768, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
   384  		{name: "MOVL/c=1048576/base=R8/offset=-0x80000000", inst: MOVL, c: 1048576, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
   385  		{name: "MOVL/c=-1048576/base=R8/offset=-0x80000000", inst: MOVL, c: -1048576, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
   386  		{name: "MOVL/c=2147483647/base=R8/offset=-0x80000000", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
   387  		{name: "MOVL/c=-2147483648/base=R8/offset=-0x80000000", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
   388  		{name: "MOVL/c=0/base=R8/offset=0x7fff", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
   389  		{name: "MOVL/c=1/base=R8/offset=0x7fff", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
   390  		{name: "MOVL/c=-1/base=R8/offset=0x7fff", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
   391  		{name: "MOVL/c=100/base=R8/offset=0x7fff", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
   392  		{name: "MOVL/c=-100/base=R8/offset=0x7fff", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   393  		{name: "MOVL/c=127/base=R8/offset=0x7fff", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   394  		{name: "MOVL/c=-128/base=R8/offset=0x7fff", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
   395  		{name: "MOVL/c=32767/base=R8/offset=0x7fff", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   396  		{name: "MOVL/c=-32768/base=R8/offset=0x7fff", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   397  		{name: "MOVL/c=1048576/base=R8/offset=0x7fff", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   398  		{name: "MOVL/c=-1048576/base=R8/offset=0x7fff", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   399  		{name: "MOVL/c=2147483647/base=R8/offset=0x7fff", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   400  		{name: "MOVL/c=-2147483648/base=R8/offset=0x7fff", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   401  		{name: "MOVL/c=0/base=R8/offset=-0x8000", inst: MOVL, c: 0, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
   402  		{name: "MOVL/c=1/base=R8/offset=-0x8000", inst: MOVL, c: 1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
   403  		{name: "MOVL/c=-1/base=R8/offset=-0x8000", inst: MOVL, c: -1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
   404  		{name: "MOVL/c=100/base=R8/offset=-0x8000", inst: MOVL, c: 100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
   405  		{name: "MOVL/c=-100/base=R8/offset=-0x8000", inst: MOVL, c: -100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   406  		{name: "MOVL/c=127/base=R8/offset=-0x8000", inst: MOVL, c: 127, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   407  		{name: "MOVL/c=-128/base=R8/offset=-0x8000", inst: MOVL, c: -128, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
   408  		{name: "MOVL/c=32767/base=R8/offset=-0x8000", inst: MOVL, c: 32767, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   409  		{name: "MOVL/c=-32768/base=R8/offset=-0x8000", inst: MOVL, c: -32768, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   410  		{name: "MOVL/c=1048576/base=R8/offset=-0x8000", inst: MOVL, c: 1048576, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   411  		{name: "MOVL/c=-1048576/base=R8/offset=-0x8000", inst: MOVL, c: -1048576, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   412  		{name: "MOVL/c=2147483647/base=R8/offset=-0x8000", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   413  		{name: "MOVL/c=-2147483648/base=R8/offset=-0x8000", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   414  		{name: "MOVQ/c=0/base=AX/offset=0x0", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0}},
   415  		{name: "MOVQ/c=1/base=AX/offset=0x0", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x1, 0x0, 0x0, 0x0}},
   416  		{name: "MOVQ/c=-1/base=AX/offset=0x0", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0xff, 0xff, 0xff, 0xff}},
   417  		{name: "MOVQ/c=100/base=AX/offset=0x0", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x64, 0x0, 0x0, 0x0}},
   418  		{name: "MOVQ/c=-100/base=AX/offset=0x0", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   419  		{name: "MOVQ/c=127/base=AX/offset=0x0", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   420  		{name: "MOVQ/c=-128/base=AX/offset=0x0", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x80, 0xff, 0xff, 0xff}},
   421  		{name: "MOVQ/c=32767/base=AX/offset=0x0", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   422  		{name: "MOVQ/c=-32768/base=AX/offset=0x0", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x80, 0xff, 0xff}},
   423  		{name: "MOVQ/c=1048576/base=AX/offset=0x0", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x0, 0x10, 0x0}},
   424  		{name: "MOVQ/c=-1048576/base=AX/offset=0x0", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   425  		{name: "MOVQ/c=2147483647/base=AX/offset=0x0", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   426  		{name: "MOVQ/c=-2147483648/base=AX/offset=0x0", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x80}},
   427  		{name: "MOVQ/c=0/base=AX/offset=0x1", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x0}},
   428  		{name: "MOVQ/c=1/base=AX/offset=0x1", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x1, 0x0, 0x0, 0x0}},
   429  		{name: "MOVQ/c=-1/base=AX/offset=0x1", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0xff}},
   430  		{name: "MOVQ/c=100/base=AX/offset=0x1", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x64, 0x0, 0x0, 0x0}},
   431  		{name: "MOVQ/c=-100/base=AX/offset=0x1", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x9c, 0xff, 0xff, 0xff}},
   432  		{name: "MOVQ/c=127/base=AX/offset=0x1", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x7f, 0x0, 0x0, 0x0}},
   433  		{name: "MOVQ/c=-128/base=AX/offset=0x1", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x80, 0xff, 0xff, 0xff}},
   434  		{name: "MOVQ/c=32767/base=AX/offset=0x1", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0xff, 0x7f, 0x0, 0x0}},
   435  		{name: "MOVQ/c=-32768/base=AX/offset=0x1", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x80, 0xff, 0xff}},
   436  		{name: "MOVQ/c=1048576/base=AX/offset=0x1", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x10, 0x0}},
   437  		{name: "MOVQ/c=-1048576/base=AX/offset=0x1", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x0, 0xf0, 0xff}},
   438  		{name: "MOVQ/c=2147483647/base=AX/offset=0x1", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0x7f}},
   439  		{name: "MOVQ/c=-2147483648/base=AX/offset=0x1", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x80}},
   440  		{name: "MOVQ/c=0/base=AX/offset=-0x1", inst: MOVQ, c: 0, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x0}},
   441  		{name: "MOVQ/c=1/base=AX/offset=-0x1", inst: MOVQ, c: 1, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x1, 0x0, 0x0, 0x0}},
   442  		{name: "MOVQ/c=-1/base=AX/offset=-0x1", inst: MOVQ, c: -1, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff}},
   443  		{name: "MOVQ/c=100/base=AX/offset=-0x1", inst: MOVQ, c: 100, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x64, 0x0, 0x0, 0x0}},
   444  		{name: "MOVQ/c=-100/base=AX/offset=-0x1", inst: MOVQ, c: -100, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   445  		{name: "MOVQ/c=127/base=AX/offset=-0x1", inst: MOVQ, c: 127, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   446  		{name: "MOVQ/c=-128/base=AX/offset=-0x1", inst: MOVQ, c: -128, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x80, 0xff, 0xff, 0xff}},
   447  		{name: "MOVQ/c=32767/base=AX/offset=-0x1", inst: MOVQ, c: 32767, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   448  		{name: "MOVQ/c=-32768/base=AX/offset=-0x1", inst: MOVQ, c: -32768, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x80, 0xff, 0xff}},
   449  		{name: "MOVQ/c=1048576/base=AX/offset=-0x1", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x10, 0x0}},
   450  		{name: "MOVQ/c=-1048576/base=AX/offset=-0x1", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   451  		{name: "MOVQ/c=2147483647/base=AX/offset=-0x1", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   452  		{name: "MOVQ/c=-2147483648/base=AX/offset=-0x1", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x80}},
   453  		{name: "MOVQ/c=0/base=AX/offset=0x4db", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
   454  		{name: "MOVQ/c=1/base=AX/offset=0x4db", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
   455  		{name: "MOVQ/c=-1/base=AX/offset=0x4db", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
   456  		{name: "MOVQ/c=100/base=AX/offset=0x4db", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
   457  		{name: "MOVQ/c=-100/base=AX/offset=0x4db", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   458  		{name: "MOVQ/c=127/base=AX/offset=0x4db", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   459  		{name: "MOVQ/c=-128/base=AX/offset=0x4db", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
   460  		{name: "MOVQ/c=32767/base=AX/offset=0x4db", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   461  		{name: "MOVQ/c=-32768/base=AX/offset=0x4db", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   462  		{name: "MOVQ/c=1048576/base=AX/offset=0x4db", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   463  		{name: "MOVQ/c=-1048576/base=AX/offset=0x4db", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   464  		{name: "MOVQ/c=2147483647/base=AX/offset=0x4db", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   465  		{name: "MOVQ/c=-2147483648/base=AX/offset=0x4db", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   466  		{name: "MOVQ/c=0/base=AX/offset=-0x4d2", inst: MOVQ, c: 0, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
   467  		{name: "MOVQ/c=1/base=AX/offset=-0x4d2", inst: MOVQ, c: 1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
   468  		{name: "MOVQ/c=-1/base=AX/offset=-0x4d2", inst: MOVQ, c: -1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
   469  		{name: "MOVQ/c=100/base=AX/offset=-0x4d2", inst: MOVQ, c: 100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
   470  		{name: "MOVQ/c=-100/base=AX/offset=-0x4d2", inst: MOVQ, c: -100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   471  		{name: "MOVQ/c=127/base=AX/offset=-0x4d2", inst: MOVQ, c: 127, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   472  		{name: "MOVQ/c=-128/base=AX/offset=-0x4d2", inst: MOVQ, c: -128, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
   473  		{name: "MOVQ/c=32767/base=AX/offset=-0x4d2", inst: MOVQ, c: 32767, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   474  		{name: "MOVQ/c=-32768/base=AX/offset=-0x4d2", inst: MOVQ, c: -32768, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   475  		{name: "MOVQ/c=1048576/base=AX/offset=-0x4d2", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   476  		{name: "MOVQ/c=-1048576/base=AX/offset=-0x4d2", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   477  		{name: "MOVQ/c=2147483647/base=AX/offset=-0x4d2", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   478  		{name: "MOVQ/c=-2147483648/base=AX/offset=-0x4d2", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   479  		{name: "MOVQ/c=0/base=AX/offset=0x7fffffff", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0}},
   480  		{name: "MOVQ/c=1/base=AX/offset=0x7fffffff", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1, 0x0, 0x0, 0x0}},
   481  		{name: "MOVQ/c=-1/base=AX/offset=0x7fffffff", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff}},
   482  		{name: "MOVQ/c=100/base=AX/offset=0x7fffffff", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64, 0x0, 0x0, 0x0}},
   483  		{name: "MOVQ/c=-100/base=AX/offset=0x7fffffff", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c, 0xff, 0xff, 0xff}},
   484  		{name: "MOVQ/c=127/base=AX/offset=0x7fffffff", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x0, 0x0, 0x0}},
   485  		{name: "MOVQ/c=-128/base=AX/offset=0x7fffffff", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0xff}},
   486  		{name: "MOVQ/c=32767/base=AX/offset=0x7fffffff", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
   487  		{name: "MOVQ/c=-32768/base=AX/offset=0x7fffffff", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
   488  		{name: "MOVQ/c=1048576/base=AX/offset=0x7fffffff", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
   489  		{name: "MOVQ/c=-1048576/base=AX/offset=0x7fffffff", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
   490  		{name: "MOVQ/c=2147483647/base=AX/offset=0x7fffffff", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
   491  		{name: "MOVQ/c=-2147483648/base=AX/offset=0x7fffffff", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
   492  		{name: "MOVQ/c=0/base=AX/offset=-0x80000000", inst: MOVQ, c: 0, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0}},
   493  		{name: "MOVQ/c=1/base=AX/offset=-0x80000000", inst: MOVQ, c: 1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0}},
   494  		{name: "MOVQ/c=-1/base=AX/offset=-0x80000000", inst: MOVQ, c: -1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff}},
   495  		{name: "MOVQ/c=100/base=AX/offset=-0x80000000", inst: MOVQ, c: 100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64, 0x0, 0x0, 0x0}},
   496  		{name: "MOVQ/c=-100/base=AX/offset=-0x80000000", inst: MOVQ, c: -100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c, 0xff, 0xff, 0xff}},
   497  		{name: "MOVQ/c=127/base=AX/offset=-0x80000000", inst: MOVQ, c: 127, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x0}},
   498  		{name: "MOVQ/c=-128/base=AX/offset=-0x80000000", inst: MOVQ, c: -128, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80, 0xff, 0xff, 0xff}},
   499  		{name: "MOVQ/c=32767/base=AX/offset=-0x80000000", inst: MOVQ, c: 32767, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
   500  		{name: "MOVQ/c=-32768/base=AX/offset=-0x80000000", inst: MOVQ, c: -32768, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
   501  		{name: "MOVQ/c=1048576/base=AX/offset=-0x80000000", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
   502  		{name: "MOVQ/c=-1048576/base=AX/offset=-0x80000000", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
   503  		{name: "MOVQ/c=2147483647/base=AX/offset=-0x80000000", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
   504  		{name: "MOVQ/c=-2147483648/base=AX/offset=-0x80000000", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
   505  		{name: "MOVQ/c=0/base=AX/offset=0x7fff", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
   506  		{name: "MOVQ/c=1/base=AX/offset=0x7fff", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
   507  		{name: "MOVQ/c=-1/base=AX/offset=0x7fff", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
   508  		{name: "MOVQ/c=100/base=AX/offset=0x7fff", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
   509  		{name: "MOVQ/c=-100/base=AX/offset=0x7fff", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   510  		{name: "MOVQ/c=127/base=AX/offset=0x7fff", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   511  		{name: "MOVQ/c=-128/base=AX/offset=0x7fff", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
   512  		{name: "MOVQ/c=32767/base=AX/offset=0x7fff", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   513  		{name: "MOVQ/c=-32768/base=AX/offset=0x7fff", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   514  		{name: "MOVQ/c=1048576/base=AX/offset=0x7fff", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   515  		{name: "MOVQ/c=-1048576/base=AX/offset=0x7fff", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   516  		{name: "MOVQ/c=2147483647/base=AX/offset=0x7fff", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   517  		{name: "MOVQ/c=-2147483648/base=AX/offset=0x7fff", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   518  		{name: "MOVQ/c=0/base=AX/offset=-0x8000", inst: MOVQ, c: 0, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
   519  		{name: "MOVQ/c=1/base=AX/offset=-0x8000", inst: MOVQ, c: 1, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
   520  		{name: "MOVQ/c=-1/base=AX/offset=-0x8000", inst: MOVQ, c: -1, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
   521  		{name: "MOVQ/c=100/base=AX/offset=-0x8000", inst: MOVQ, c: 100, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
   522  		{name: "MOVQ/c=-100/base=AX/offset=-0x8000", inst: MOVQ, c: -100, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   523  		{name: "MOVQ/c=127/base=AX/offset=-0x8000", inst: MOVQ, c: 127, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   524  		{name: "MOVQ/c=-128/base=AX/offset=-0x8000", inst: MOVQ, c: -128, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
   525  		{name: "MOVQ/c=32767/base=AX/offset=-0x8000", inst: MOVQ, c: 32767, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   526  		{name: "MOVQ/c=-32768/base=AX/offset=-0x8000", inst: MOVQ, c: -32768, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   527  		{name: "MOVQ/c=1048576/base=AX/offset=-0x8000", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   528  		{name: "MOVQ/c=-1048576/base=AX/offset=-0x8000", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   529  		{name: "MOVQ/c=2147483647/base=AX/offset=-0x8000", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   530  		{name: "MOVQ/c=-2147483648/base=AX/offset=-0x8000", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   531  		{name: "MOVQ/c=0/base=R8/offset=0x0", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0}},
   532  		{name: "MOVQ/c=1/base=R8/offset=0x0", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x1, 0x0, 0x0, 0x0}},
   533  		{name: "MOVQ/c=-1/base=R8/offset=0x0", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0xff, 0xff, 0xff, 0xff}},
   534  		{name: "MOVQ/c=100/base=R8/offset=0x0", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x64, 0x0, 0x0, 0x0}},
   535  		{name: "MOVQ/c=-100/base=R8/offset=0x0", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   536  		{name: "MOVQ/c=127/base=R8/offset=0x0", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   537  		{name: "MOVQ/c=-128/base=R8/offset=0x0", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x80, 0xff, 0xff, 0xff}},
   538  		{name: "MOVQ/c=32767/base=R8/offset=0x0", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   539  		{name: "MOVQ/c=-32768/base=R8/offset=0x0", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x80, 0xff, 0xff}},
   540  		{name: "MOVQ/c=1048576/base=R8/offset=0x0", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x0, 0x10, 0x0}},
   541  		{name: "MOVQ/c=-1048576/base=R8/offset=0x0", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   542  		{name: "MOVQ/c=2147483647/base=R8/offset=0x0", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   543  		{name: "MOVQ/c=-2147483648/base=R8/offset=0x0", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x80}},
   544  		{name: "MOVQ/c=0/base=R8/offset=0x1", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x0}},
   545  		{name: "MOVQ/c=1/base=R8/offset=0x1", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x1, 0x0, 0x0, 0x0}},
   546  		{name: "MOVQ/c=-1/base=R8/offset=0x1", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0xff}},
   547  		{name: "MOVQ/c=100/base=R8/offset=0x1", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x64, 0x0, 0x0, 0x0}},
   548  		{name: "MOVQ/c=-100/base=R8/offset=0x1", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x9c, 0xff, 0xff, 0xff}},
   549  		{name: "MOVQ/c=127/base=R8/offset=0x1", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x7f, 0x0, 0x0, 0x0}},
   550  		{name: "MOVQ/c=-128/base=R8/offset=0x1", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x80, 0xff, 0xff, 0xff}},
   551  		{name: "MOVQ/c=32767/base=R8/offset=0x1", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0xff, 0x7f, 0x0, 0x0}},
   552  		{name: "MOVQ/c=-32768/base=R8/offset=0x1", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x80, 0xff, 0xff}},
   553  		{name: "MOVQ/c=1048576/base=R8/offset=0x1", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x10, 0x0}},
   554  		{name: "MOVQ/c=-1048576/base=R8/offset=0x1", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x0, 0xf0, 0xff}},
   555  		{name: "MOVQ/c=2147483647/base=R8/offset=0x1", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0x7f}},
   556  		{name: "MOVQ/c=-2147483648/base=R8/offset=0x1", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x80}},
   557  		{name: "MOVQ/c=0/base=R8/offset=-0x1", inst: MOVQ, c: 0, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x0}},
   558  		{name: "MOVQ/c=1/base=R8/offset=-0x1", inst: MOVQ, c: 1, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x1, 0x0, 0x0, 0x0}},
   559  		{name: "MOVQ/c=-1/base=R8/offset=-0x1", inst: MOVQ, c: -1, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff}},
   560  		{name: "MOVQ/c=100/base=R8/offset=-0x1", inst: MOVQ, c: 100, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x64, 0x0, 0x0, 0x0}},
   561  		{name: "MOVQ/c=-100/base=R8/offset=-0x1", inst: MOVQ, c: -100, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   562  		{name: "MOVQ/c=127/base=R8/offset=-0x1", inst: MOVQ, c: 127, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   563  		{name: "MOVQ/c=-128/base=R8/offset=-0x1", inst: MOVQ, c: -128, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x80, 0xff, 0xff, 0xff}},
   564  		{name: "MOVQ/c=32767/base=R8/offset=-0x1", inst: MOVQ, c: 32767, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   565  		{name: "MOVQ/c=-32768/base=R8/offset=-0x1", inst: MOVQ, c: -32768, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x80, 0xff, 0xff}},
   566  		{name: "MOVQ/c=1048576/base=R8/offset=-0x1", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x10, 0x0}},
   567  		{name: "MOVQ/c=-1048576/base=R8/offset=-0x1", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   568  		{name: "MOVQ/c=2147483647/base=R8/offset=-0x1", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   569  		{name: "MOVQ/c=-2147483648/base=R8/offset=-0x1", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x80}},
   570  		{name: "MOVQ/c=0/base=R8/offset=0x4db", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
   571  		{name: "MOVQ/c=1/base=R8/offset=0x4db", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
   572  		{name: "MOVQ/c=-1/base=R8/offset=0x4db", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
   573  		{name: "MOVQ/c=100/base=R8/offset=0x4db", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
   574  		{name: "MOVQ/c=-100/base=R8/offset=0x4db", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   575  		{name: "MOVQ/c=127/base=R8/offset=0x4db", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   576  		{name: "MOVQ/c=-128/base=R8/offset=0x4db", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
   577  		{name: "MOVQ/c=32767/base=R8/offset=0x4db", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   578  		{name: "MOVQ/c=-32768/base=R8/offset=0x4db", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   579  		{name: "MOVQ/c=1048576/base=R8/offset=0x4db", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   580  		{name: "MOVQ/c=-1048576/base=R8/offset=0x4db", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   581  		{name: "MOVQ/c=2147483647/base=R8/offset=0x4db", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   582  		{name: "MOVQ/c=-2147483648/base=R8/offset=0x4db", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   583  		{name: "MOVQ/c=0/base=R8/offset=-0x4d2", inst: MOVQ, c: 0, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
   584  		{name: "MOVQ/c=1/base=R8/offset=-0x4d2", inst: MOVQ, c: 1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
   585  		{name: "MOVQ/c=-1/base=R8/offset=-0x4d2", inst: MOVQ, c: -1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
   586  		{name: "MOVQ/c=100/base=R8/offset=-0x4d2", inst: MOVQ, c: 100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
   587  		{name: "MOVQ/c=-100/base=R8/offset=-0x4d2", inst: MOVQ, c: -100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   588  		{name: "MOVQ/c=127/base=R8/offset=-0x4d2", inst: MOVQ, c: 127, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   589  		{name: "MOVQ/c=-128/base=R8/offset=-0x4d2", inst: MOVQ, c: -128, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
   590  		{name: "MOVQ/c=32767/base=R8/offset=-0x4d2", inst: MOVQ, c: 32767, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   591  		{name: "MOVQ/c=-32768/base=R8/offset=-0x4d2", inst: MOVQ, c: -32768, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   592  		{name: "MOVQ/c=1048576/base=R8/offset=-0x4d2", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   593  		{name: "MOVQ/c=-1048576/base=R8/offset=-0x4d2", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   594  		{name: "MOVQ/c=2147483647/base=R8/offset=-0x4d2", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   595  		{name: "MOVQ/c=-2147483648/base=R8/offset=-0x4d2", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   596  		{name: "MOVQ/c=0/base=R8/offset=0x7fffffff", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0}},
   597  		{name: "MOVQ/c=1/base=R8/offset=0x7fffffff", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1, 0x0, 0x0, 0x0}},
   598  		{name: "MOVQ/c=-1/base=R8/offset=0x7fffffff", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff}},
   599  		{name: "MOVQ/c=100/base=R8/offset=0x7fffffff", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64, 0x0, 0x0, 0x0}},
   600  		{name: "MOVQ/c=-100/base=R8/offset=0x7fffffff", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c, 0xff, 0xff, 0xff}},
   601  		{name: "MOVQ/c=127/base=R8/offset=0x7fffffff", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x0, 0x0, 0x0}},
   602  		{name: "MOVQ/c=-128/base=R8/offset=0x7fffffff", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0xff}},
   603  		{name: "MOVQ/c=32767/base=R8/offset=0x7fffffff", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
   604  		{name: "MOVQ/c=-32768/base=R8/offset=0x7fffffff", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
   605  		{name: "MOVQ/c=1048576/base=R8/offset=0x7fffffff", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
   606  		{name: "MOVQ/c=-1048576/base=R8/offset=0x7fffffff", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
   607  		{name: "MOVQ/c=2147483647/base=R8/offset=0x7fffffff", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
   608  		{name: "MOVQ/c=-2147483648/base=R8/offset=0x7fffffff", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
   609  		{name: "MOVQ/c=0/base=R8/offset=-0x80000000", inst: MOVQ, c: 0, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0}},
   610  		{name: "MOVQ/c=1/base=R8/offset=-0x80000000", inst: MOVQ, c: 1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0}},
   611  		{name: "MOVQ/c=-1/base=R8/offset=-0x80000000", inst: MOVQ, c: -1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff}},
   612  		{name: "MOVQ/c=100/base=R8/offset=-0x80000000", inst: MOVQ, c: 100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64, 0x0, 0x0, 0x0}},
   613  		{name: "MOVQ/c=-100/base=R8/offset=-0x80000000", inst: MOVQ, c: -100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c, 0xff, 0xff, 0xff}},
   614  		{name: "MOVQ/c=127/base=R8/offset=-0x80000000", inst: MOVQ, c: 127, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x0}},
   615  		{name: "MOVQ/c=-128/base=R8/offset=-0x80000000", inst: MOVQ, c: -128, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80, 0xff, 0xff, 0xff}},
   616  		{name: "MOVQ/c=32767/base=R8/offset=-0x80000000", inst: MOVQ, c: 32767, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
   617  		{name: "MOVQ/c=-32768/base=R8/offset=-0x80000000", inst: MOVQ, c: -32768, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
   618  		{name: "MOVQ/c=1048576/base=R8/offset=-0x80000000", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
   619  		{name: "MOVQ/c=-1048576/base=R8/offset=-0x80000000", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
   620  		{name: "MOVQ/c=2147483647/base=R8/offset=-0x80000000", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
   621  		{name: "MOVQ/c=-2147483648/base=R8/offset=-0x80000000", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
   622  		{name: "MOVQ/c=0/base=R8/offset=0x7fff", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
   623  		{name: "MOVQ/c=1/base=R8/offset=0x7fff", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
   624  		{name: "MOVQ/c=-1/base=R8/offset=0x7fff", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
   625  		{name: "MOVQ/c=100/base=R8/offset=0x7fff", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
   626  		{name: "MOVQ/c=-100/base=R8/offset=0x7fff", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
   627  		{name: "MOVQ/c=127/base=R8/offset=0x7fff", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
   628  		{name: "MOVQ/c=-128/base=R8/offset=0x7fff", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
   629  		{name: "MOVQ/c=32767/base=R8/offset=0x7fff", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   630  		{name: "MOVQ/c=-32768/base=R8/offset=0x7fff", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   631  		{name: "MOVQ/c=1048576/base=R8/offset=0x7fff", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   632  		{name: "MOVQ/c=-1048576/base=R8/offset=0x7fff", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   633  		{name: "MOVQ/c=2147483647/base=R8/offset=0x7fff", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   634  		{name: "MOVQ/c=-2147483648/base=R8/offset=0x7fff", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   635  		{name: "MOVQ/c=0/base=R8/offset=-0x8000", inst: MOVQ, c: 0, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
   636  		{name: "MOVQ/c=1/base=R8/offset=-0x8000", inst: MOVQ, c: 1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
   637  		{name: "MOVQ/c=-1/base=R8/offset=-0x8000", inst: MOVQ, c: -1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
   638  		{name: "MOVQ/c=100/base=R8/offset=-0x8000", inst: MOVQ, c: 100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
   639  		{name: "MOVQ/c=-100/base=R8/offset=-0x8000", inst: MOVQ, c: -100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
   640  		{name: "MOVQ/c=127/base=R8/offset=-0x8000", inst: MOVQ, c: 127, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   641  		{name: "MOVQ/c=-128/base=R8/offset=-0x8000", inst: MOVQ, c: -128, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
   642  		{name: "MOVQ/c=32767/base=R8/offset=-0x8000", inst: MOVQ, c: 32767, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   643  		{name: "MOVQ/c=-32768/base=R8/offset=-0x8000", inst: MOVQ, c: -32768, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   644  		{name: "MOVQ/c=1048576/base=R8/offset=-0x8000", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   645  		{name: "MOVQ/c=-1048576/base=R8/offset=-0x8000", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   646  		{name: "MOVQ/c=2147483647/base=R8/offset=-0x8000", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   647  		{name: "MOVQ/c=-2147483648/base=R8/offset=-0x8000", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   648  	}
   649  
   650  	for _, tc := range tests {
   651  		a := NewAssembler()
   652  		err := a.encodeConstToMemory(&nodeImpl{
   653  			instruction: tc.inst,
   654  			types:       operandTypesConstToMemory, srcConst: tc.c, dstReg: tc.baseReg, dstConst: int64(tc.offset),
   655  		})
   656  		require.NoError(t, err)
   657  	}
   658  }
   659  
   660  func TestAssemblerImpl_EncodeMemoryToConst(t *testing.T) {
   661  	t.Run("error", func(t *testing.T) {
   662  		tests := []struct {
   663  			n      *nodeImpl
   664  			expErr string
   665  		}{
   666  			{
   667  				n:      &nodeImpl{instruction: ADDL, types: operandTypesMemoryToConst, dstReg: RegAX},
   668  				expErr: "ADDL is unsupported for from:memory,to:const type",
   669  			},
   670  		}
   671  
   672  		for _, tc := range tests {
   673  			a := NewAssembler()
   674  			err := a.encodeMemoryToConst(tc.n)
   675  			require.EqualError(t, err, tc.expErr)
   676  		}
   677  	})
   678  
   679  	tests := []struct {
   680  		name      string
   681  		inst      asm.Instruction
   682  		baseReg   asm.Register
   683  		offset, c int64
   684  		exp       []byte
   685  	}{
   686  		{name: "CMPL/base=AX/offset=0x0/c=0", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 0, exp: []byte{0x83, 0x38, 0x0}},
   687  		{name: "CMPL/base=AX/offset=0x0/c=1", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 1, exp: []byte{0x83, 0x38, 0x1}},
   688  		{name: "CMPL/base=AX/offset=0x0/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -1, exp: []byte{0x83, 0x38, 0xff}},
   689  		{name: "CMPL/base=AX/offset=0x0/c=100", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 100, exp: []byte{0x83, 0x38, 0x64}},
   690  		{name: "CMPL/base=AX/offset=0x0/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -100, exp: []byte{0x83, 0x38, 0x9c}},
   691  		{name: "CMPL/base=AX/offset=0x0/c=127", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 127, exp: []byte{0x83, 0x38, 0x7f}},
   692  		{name: "CMPL/base=AX/offset=0x0/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -128, exp: []byte{0x83, 0x38, 0x80}},
   693  		{name: "CMPL/base=AX/offset=0x0/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 32767, exp: []byte{0x81, 0x38, 0xff, 0x7f, 0x0, 0x0}},
   694  		{name: "CMPL/base=AX/offset=0x0/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -32768, exp: []byte{0x81, 0x38, 0x0, 0x80, 0xff, 0xff}},
   695  		{name: "CMPL/base=AX/offset=0x0/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 1048576, exp: []byte{0x81, 0x38, 0x0, 0x0, 0x10, 0x0}},
   696  		{name: "CMPL/base=AX/offset=0x0/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -1048576, exp: []byte{0x81, 0x38, 0x0, 0x0, 0xf0, 0xff}},
   697  		{name: "CMPL/base=AX/offset=0x0/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 2147483647, exp: []byte{0x81, 0x38, 0xff, 0xff, 0xff, 0x7f}},
   698  		{name: "CMPL/base=AX/offset=0x0/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -2147483648, exp: []byte{0x81, 0x38, 0x0, 0x0, 0x0, 0x80}},
   699  		{name: "CMPL/base=AX/offset=0x1/c=0", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 0, exp: []byte{0x83, 0x78, 0x1, 0x0}},
   700  		{name: "CMPL/base=AX/offset=0x1/c=1", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 1, exp: []byte{0x83, 0x78, 0x1, 0x1}},
   701  		{name: "CMPL/base=AX/offset=0x1/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -1, exp: []byte{0x83, 0x78, 0x1, 0xff}},
   702  		{name: "CMPL/base=AX/offset=0x1/c=100", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 100, exp: []byte{0x83, 0x78, 0x1, 0x64}},
   703  		{name: "CMPL/base=AX/offset=0x1/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -100, exp: []byte{0x83, 0x78, 0x1, 0x9c}},
   704  		{name: "CMPL/base=AX/offset=0x1/c=127", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 127, exp: []byte{0x83, 0x78, 0x1, 0x7f}},
   705  		{name: "CMPL/base=AX/offset=0x1/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -128, exp: []byte{0x83, 0x78, 0x1, 0x80}},
   706  		{name: "CMPL/base=AX/offset=0x1/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 32767, exp: []byte{0x81, 0x78, 0x1, 0xff, 0x7f, 0x0, 0x0}},
   707  		{name: "CMPL/base=AX/offset=0x1/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -32768, exp: []byte{0x81, 0x78, 0x1, 0x0, 0x80, 0xff, 0xff}},
   708  		{name: "CMPL/base=AX/offset=0x1/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 1048576, exp: []byte{0x81, 0x78, 0x1, 0x0, 0x0, 0x10, 0x0}},
   709  		{name: "CMPL/base=AX/offset=0x1/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -1048576, exp: []byte{0x81, 0x78, 0x1, 0x0, 0x0, 0xf0, 0xff}},
   710  		{name: "CMPL/base=AX/offset=0x1/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 2147483647, exp: []byte{0x81, 0x78, 0x1, 0xff, 0xff, 0xff, 0x7f}},
   711  		{name: "CMPL/base=AX/offset=0x1/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -2147483648, exp: []byte{0x81, 0x78, 0x1, 0x0, 0x0, 0x0, 0x80}},
   712  		{name: "CMPL/base=AX/offset=-0x1/c=0", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 0, exp: []byte{0x83, 0x78, 0xff, 0x0}},
   713  		{name: "CMPL/base=AX/offset=-0x1/c=1", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 1, exp: []byte{0x83, 0x78, 0xff, 0x1}},
   714  		{name: "CMPL/base=AX/offset=-0x1/c=-1", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -1, exp: []byte{0x83, 0x78, 0xff, 0xff}},
   715  		{name: "CMPL/base=AX/offset=-0x1/c=100", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 100, exp: []byte{0x83, 0x78, 0xff, 0x64}},
   716  		{name: "CMPL/base=AX/offset=-0x1/c=-100", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -100, exp: []byte{0x83, 0x78, 0xff, 0x9c}},
   717  		{name: "CMPL/base=AX/offset=-0x1/c=127", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 127, exp: []byte{0x83, 0x78, 0xff, 0x7f}},
   718  		{name: "CMPL/base=AX/offset=-0x1/c=-128", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -128, exp: []byte{0x83, 0x78, 0xff, 0x80}},
   719  		{name: "CMPL/base=AX/offset=-0x1/c=32767", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 32767, exp: []byte{0x81, 0x78, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   720  		{name: "CMPL/base=AX/offset=-0x1/c=-32768", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -32768, exp: []byte{0x81, 0x78, 0xff, 0x0, 0x80, 0xff, 0xff}},
   721  		{name: "CMPL/base=AX/offset=-0x1/c=1048576", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 1048576, exp: []byte{0x81, 0x78, 0xff, 0x0, 0x0, 0x10, 0x0}},
   722  		{name: "CMPL/base=AX/offset=-0x1/c=-1048576", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -1048576, exp: []byte{0x81, 0x78, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   723  		{name: "CMPL/base=AX/offset=-0x1/c=2147483647", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 2147483647, exp: []byte{0x81, 0x78, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   724  		{name: "CMPL/base=AX/offset=-0x1/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -2147483648, exp: []byte{0x81, 0x78, 0xff, 0x0, 0x0, 0x0, 0x80}},
   725  		{name: "CMPL/base=AX/offset=0x4db/c=0", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 0, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0}},
   726  		{name: "CMPL/base=AX/offset=0x4db/c=1", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 1, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x1}},
   727  		{name: "CMPL/base=AX/offset=0x4db/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -1, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff}},
   728  		{name: "CMPL/base=AX/offset=0x4db/c=100", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 100, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x64}},
   729  		{name: "CMPL/base=AX/offset=0x4db/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -100, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x9c}},
   730  		{name: "CMPL/base=AX/offset=0x4db/c=127", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 127, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x7f}},
   731  		{name: "CMPL/base=AX/offset=0x4db/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -128, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x80}},
   732  		{name: "CMPL/base=AX/offset=0x4db/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 32767, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   733  		{name: "CMPL/base=AX/offset=0x4db/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -32768, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   734  		{name: "CMPL/base=AX/offset=0x4db/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 1048576, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   735  		{name: "CMPL/base=AX/offset=0x4db/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -1048576, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   736  		{name: "CMPL/base=AX/offset=0x4db/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 2147483647, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   737  		{name: "CMPL/base=AX/offset=0x4db/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -2147483648, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   738  		{name: "CMPL/base=AX/offset=-0x4d2/c=0", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 0, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0}},
   739  		{name: "CMPL/base=AX/offset=-0x4d2/c=1", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 1, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x1}},
   740  		{name: "CMPL/base=AX/offset=-0x4d2/c=-1", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -1, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff}},
   741  		{name: "CMPL/base=AX/offset=-0x4d2/c=100", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 100, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x64}},
   742  		{name: "CMPL/base=AX/offset=-0x4d2/c=-100", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -100, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x9c}},
   743  		{name: "CMPL/base=AX/offset=-0x4d2/c=127", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 127, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x7f}},
   744  		{name: "CMPL/base=AX/offset=-0x4d2/c=-128", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -128, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x80}},
   745  		{name: "CMPL/base=AX/offset=-0x4d2/c=32767", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 32767, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   746  		{name: "CMPL/base=AX/offset=-0x4d2/c=-32768", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -32768, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   747  		{name: "CMPL/base=AX/offset=-0x4d2/c=1048576", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 1048576, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   748  		{name: "CMPL/base=AX/offset=-0x4d2/c=-1048576", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -1048576, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   749  		{name: "CMPL/base=AX/offset=-0x4d2/c=2147483647", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 2147483647, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   750  		{name: "CMPL/base=AX/offset=-0x4d2/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -2147483648, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   751  		{name: "CMPL/base=AX/offset=0x7fffffff/c=0", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 0, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0}},
   752  		{name: "CMPL/base=AX/offset=0x7fffffff/c=1", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 1, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x1}},
   753  		{name: "CMPL/base=AX/offset=0x7fffffff/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -1, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff}},
   754  		{name: "CMPL/base=AX/offset=0x7fffffff/c=100", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 100, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x64}},
   755  		{name: "CMPL/base=AX/offset=0x7fffffff/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -100, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x9c}},
   756  		{name: "CMPL/base=AX/offset=0x7fffffff/c=127", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 127, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x7f}},
   757  		{name: "CMPL/base=AX/offset=0x7fffffff/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -128, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x80}},
   758  		{name: "CMPL/base=AX/offset=0x7fffffff/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 32767, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
   759  		{name: "CMPL/base=AX/offset=0x7fffffff/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -32768, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
   760  		{name: "CMPL/base=AX/offset=0x7fffffff/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 1048576, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
   761  		{name: "CMPL/base=AX/offset=0x7fffffff/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -1048576, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
   762  		{name: "CMPL/base=AX/offset=0x7fffffff/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 2147483647, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
   763  		{name: "CMPL/base=AX/offset=0x7fffffff/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -2147483648, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
   764  		{name: "CMPL/base=AX/offset=-0x80000000/c=0", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 0, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0}},
   765  		{name: "CMPL/base=AX/offset=-0x80000000/c=1", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 1, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x1}},
   766  		{name: "CMPL/base=AX/offset=-0x80000000/c=-1", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -1, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff}},
   767  		{name: "CMPL/base=AX/offset=-0x80000000/c=100", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 100, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x64}},
   768  		{name: "CMPL/base=AX/offset=-0x80000000/c=-100", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -100, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x9c}},
   769  		{name: "CMPL/base=AX/offset=-0x80000000/c=127", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 127, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x7f}},
   770  		{name: "CMPL/base=AX/offset=-0x80000000/c=-128", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -128, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x80}},
   771  		{name: "CMPL/base=AX/offset=-0x80000000/c=32767", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 32767, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
   772  		{name: "CMPL/base=AX/offset=-0x80000000/c=-32768", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -32768, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
   773  		{name: "CMPL/base=AX/offset=-0x80000000/c=1048576", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 1048576, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
   774  		{name: "CMPL/base=AX/offset=-0x80000000/c=-1048576", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -1048576, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
   775  		{name: "CMPL/base=AX/offset=-0x80000000/c=2147483647", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 2147483647, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
   776  		{name: "CMPL/base=AX/offset=-0x80000000/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -2147483648, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
   777  		{name: "CMPL/base=AX/offset=0x7fff/c=0", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 0, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   778  		{name: "CMPL/base=AX/offset=0x7fff/c=1", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 1, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x1}},
   779  		{name: "CMPL/base=AX/offset=0x7fff/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -1, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff}},
   780  		{name: "CMPL/base=AX/offset=0x7fff/c=100", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 100, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x64}},
   781  		{name: "CMPL/base=AX/offset=0x7fff/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -100, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x9c}},
   782  		{name: "CMPL/base=AX/offset=0x7fff/c=127", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 127, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x7f}},
   783  		{name: "CMPL/base=AX/offset=0x7fff/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -128, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x80}},
   784  		{name: "CMPL/base=AX/offset=0x7fff/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 32767, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   785  		{name: "CMPL/base=AX/offset=0x7fff/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -32768, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   786  		{name: "CMPL/base=AX/offset=0x7fff/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 1048576, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   787  		{name: "CMPL/base=AX/offset=0x7fff/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -1048576, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   788  		{name: "CMPL/base=AX/offset=0x7fff/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 2147483647, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   789  		{name: "CMPL/base=AX/offset=0x7fff/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -2147483648, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   790  		{name: "CMPL/base=AX/offset=-0x8000/c=0", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 0, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0}},
   791  		{name: "CMPL/base=AX/offset=-0x8000/c=1", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 1, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x1}},
   792  		{name: "CMPL/base=AX/offset=-0x8000/c=-1", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -1, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff}},
   793  		{name: "CMPL/base=AX/offset=-0x8000/c=100", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 100, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x64}},
   794  		{name: "CMPL/base=AX/offset=-0x8000/c=-100", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -100, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x9c}},
   795  		{name: "CMPL/base=AX/offset=-0x8000/c=127", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 127, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x7f}},
   796  		{name: "CMPL/base=AX/offset=-0x8000/c=-128", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -128, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x80}},
   797  		{name: "CMPL/base=AX/offset=-0x8000/c=32767", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 32767, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   798  		{name: "CMPL/base=AX/offset=-0x8000/c=-32768", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -32768, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   799  		{name: "CMPL/base=AX/offset=-0x8000/c=1048576", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 1048576, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   800  		{name: "CMPL/base=AX/offset=-0x8000/c=-1048576", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -1048576, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   801  		{name: "CMPL/base=AX/offset=-0x8000/c=2147483647", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 2147483647, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   802  		{name: "CMPL/base=AX/offset=-0x8000/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -2147483648, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   803  		{name: "CMPL/base=R8/offset=0x0/c=0", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 0, exp: []byte{0x41, 0x83, 0x38, 0x0}},
   804  		{name: "CMPL/base=R8/offset=0x0/c=1", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 1, exp: []byte{0x41, 0x83, 0x38, 0x1}},
   805  		{name: "CMPL/base=R8/offset=0x0/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -1, exp: []byte{0x41, 0x83, 0x38, 0xff}},
   806  		{name: "CMPL/base=R8/offset=0x0/c=100", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 100, exp: []byte{0x41, 0x83, 0x38, 0x64}},
   807  		{name: "CMPL/base=R8/offset=0x0/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -100, exp: []byte{0x41, 0x83, 0x38, 0x9c}},
   808  		{name: "CMPL/base=R8/offset=0x0/c=127", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 127, exp: []byte{0x41, 0x83, 0x38, 0x7f}},
   809  		{name: "CMPL/base=R8/offset=0x0/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -128, exp: []byte{0x41, 0x83, 0x38, 0x80}},
   810  		{name: "CMPL/base=R8/offset=0x0/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 32767, exp: []byte{0x41, 0x81, 0x38, 0xff, 0x7f, 0x0, 0x0}},
   811  		{name: "CMPL/base=R8/offset=0x0/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -32768, exp: []byte{0x41, 0x81, 0x38, 0x0, 0x80, 0xff, 0xff}},
   812  		{name: "CMPL/base=R8/offset=0x0/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 1048576, exp: []byte{0x41, 0x81, 0x38, 0x0, 0x0, 0x10, 0x0}},
   813  		{name: "CMPL/base=R8/offset=0x0/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -1048576, exp: []byte{0x41, 0x81, 0x38, 0x0, 0x0, 0xf0, 0xff}},
   814  		{name: "CMPL/base=R8/offset=0x0/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 2147483647, exp: []byte{0x41, 0x81, 0x38, 0xff, 0xff, 0xff, 0x7f}},
   815  		{name: "CMPL/base=R8/offset=0x0/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -2147483648, exp: []byte{0x41, 0x81, 0x38, 0x0, 0x0, 0x0, 0x80}},
   816  		{name: "CMPL/base=R8/offset=0x1/c=0", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 0, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x0}},
   817  		{name: "CMPL/base=R8/offset=0x1/c=1", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 1, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x1}},
   818  		{name: "CMPL/base=R8/offset=0x1/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -1, exp: []byte{0x41, 0x83, 0x78, 0x1, 0xff}},
   819  		{name: "CMPL/base=R8/offset=0x1/c=100", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 100, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x64}},
   820  		{name: "CMPL/base=R8/offset=0x1/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -100, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x9c}},
   821  		{name: "CMPL/base=R8/offset=0x1/c=127", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 127, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x7f}},
   822  		{name: "CMPL/base=R8/offset=0x1/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -128, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x80}},
   823  		{name: "CMPL/base=R8/offset=0x1/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 32767, exp: []byte{0x41, 0x81, 0x78, 0x1, 0xff, 0x7f, 0x0, 0x0}},
   824  		{name: "CMPL/base=R8/offset=0x1/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -32768, exp: []byte{0x41, 0x81, 0x78, 0x1, 0x0, 0x80, 0xff, 0xff}},
   825  		{name: "CMPL/base=R8/offset=0x1/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 1048576, exp: []byte{0x41, 0x81, 0x78, 0x1, 0x0, 0x0, 0x10, 0x0}},
   826  		{name: "CMPL/base=R8/offset=0x1/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -1048576, exp: []byte{0x41, 0x81, 0x78, 0x1, 0x0, 0x0, 0xf0, 0xff}},
   827  		{name: "CMPL/base=R8/offset=0x1/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 2147483647, exp: []byte{0x41, 0x81, 0x78, 0x1, 0xff, 0xff, 0xff, 0x7f}},
   828  		{name: "CMPL/base=R8/offset=0x1/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -2147483648, exp: []byte{0x41, 0x81, 0x78, 0x1, 0x0, 0x0, 0x0, 0x80}},
   829  		{name: "CMPL/base=R8/offset=-0x1/c=0", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 0, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x0}},
   830  		{name: "CMPL/base=R8/offset=-0x1/c=1", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 1, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x1}},
   831  		{name: "CMPL/base=R8/offset=-0x1/c=-1", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -1, exp: []byte{0x41, 0x83, 0x78, 0xff, 0xff}},
   832  		{name: "CMPL/base=R8/offset=-0x1/c=100", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 100, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x64}},
   833  		{name: "CMPL/base=R8/offset=-0x1/c=-100", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -100, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x9c}},
   834  		{name: "CMPL/base=R8/offset=-0x1/c=127", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 127, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x7f}},
   835  		{name: "CMPL/base=R8/offset=-0x1/c=-128", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -128, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x80}},
   836  		{name: "CMPL/base=R8/offset=-0x1/c=32767", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 32767, exp: []byte{0x41, 0x81, 0x78, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   837  		{name: "CMPL/base=R8/offset=-0x1/c=-32768", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -32768, exp: []byte{0x41, 0x81, 0x78, 0xff, 0x0, 0x80, 0xff, 0xff}},
   838  		{name: "CMPL/base=R8/offset=-0x1/c=1048576", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 1048576, exp: []byte{0x41, 0x81, 0x78, 0xff, 0x0, 0x0, 0x10, 0x0}},
   839  		{name: "CMPL/base=R8/offset=-0x1/c=-1048576", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -1048576, exp: []byte{0x41, 0x81, 0x78, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   840  		{name: "CMPL/base=R8/offset=-0x1/c=2147483647", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 2147483647, exp: []byte{0x41, 0x81, 0x78, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   841  		{name: "CMPL/base=R8/offset=-0x1/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -2147483648, exp: []byte{0x41, 0x81, 0x78, 0xff, 0x0, 0x0, 0x0, 0x80}},
   842  		{name: "CMPL/base=R8/offset=0x4db/c=0", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0}},
   843  		{name: "CMPL/base=R8/offset=0x4db/c=1", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x1}},
   844  		{name: "CMPL/base=R8/offset=0x4db/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff}},
   845  		{name: "CMPL/base=R8/offset=0x4db/c=100", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x64}},
   846  		{name: "CMPL/base=R8/offset=0x4db/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x9c}},
   847  		{name: "CMPL/base=R8/offset=0x4db/c=127", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x7f}},
   848  		{name: "CMPL/base=R8/offset=0x4db/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x80}},
   849  		{name: "CMPL/base=R8/offset=0x4db/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   850  		{name: "CMPL/base=R8/offset=0x4db/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   851  		{name: "CMPL/base=R8/offset=0x4db/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   852  		{name: "CMPL/base=R8/offset=0x4db/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   853  		{name: "CMPL/base=R8/offset=0x4db/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   854  		{name: "CMPL/base=R8/offset=0x4db/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   855  		{name: "CMPL/base=R8/offset=-0x4d2/c=0", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0}},
   856  		{name: "CMPL/base=R8/offset=-0x4d2/c=1", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x1}},
   857  		{name: "CMPL/base=R8/offset=-0x4d2/c=-1", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff}},
   858  		{name: "CMPL/base=R8/offset=-0x4d2/c=100", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x64}},
   859  		{name: "CMPL/base=R8/offset=-0x4d2/c=-100", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x9c}},
   860  		{name: "CMPL/base=R8/offset=-0x4d2/c=127", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x7f}},
   861  		{name: "CMPL/base=R8/offset=-0x4d2/c=-128", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x80}},
   862  		{name: "CMPL/base=R8/offset=-0x4d2/c=32767", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   863  		{name: "CMPL/base=R8/offset=-0x4d2/c=-32768", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   864  		{name: "CMPL/base=R8/offset=-0x4d2/c=1048576", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   865  		{name: "CMPL/base=R8/offset=-0x4d2/c=-1048576", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   866  		{name: "CMPL/base=R8/offset=-0x4d2/c=2147483647", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   867  		{name: "CMPL/base=R8/offset=-0x4d2/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   868  		{name: "CMPL/base=R8/offset=0x7fffffff/c=0", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0}},
   869  		{name: "CMPL/base=R8/offset=0x7fffffff/c=1", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x1}},
   870  		{name: "CMPL/base=R8/offset=0x7fffffff/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff}},
   871  		{name: "CMPL/base=R8/offset=0x7fffffff/c=100", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x64}},
   872  		{name: "CMPL/base=R8/offset=0x7fffffff/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x9c}},
   873  		{name: "CMPL/base=R8/offset=0x7fffffff/c=127", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x7f}},
   874  		{name: "CMPL/base=R8/offset=0x7fffffff/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x80}},
   875  		{name: "CMPL/base=R8/offset=0x7fffffff/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
   876  		{name: "CMPL/base=R8/offset=0x7fffffff/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
   877  		{name: "CMPL/base=R8/offset=0x7fffffff/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
   878  		{name: "CMPL/base=R8/offset=0x7fffffff/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
   879  		{name: "CMPL/base=R8/offset=0x7fffffff/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
   880  		{name: "CMPL/base=R8/offset=0x7fffffff/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
   881  		{name: "CMPL/base=R8/offset=-0x80000000/c=0", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0}},
   882  		{name: "CMPL/base=R8/offset=-0x80000000/c=1", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x1}},
   883  		{name: "CMPL/base=R8/offset=-0x80000000/c=-1", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff}},
   884  		{name: "CMPL/base=R8/offset=-0x80000000/c=100", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x64}},
   885  		{name: "CMPL/base=R8/offset=-0x80000000/c=-100", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x9c}},
   886  		{name: "CMPL/base=R8/offset=-0x80000000/c=127", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x7f}},
   887  		{name: "CMPL/base=R8/offset=-0x80000000/c=-128", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x80}},
   888  		{name: "CMPL/base=R8/offset=-0x80000000/c=32767", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
   889  		{name: "CMPL/base=R8/offset=-0x80000000/c=-32768", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
   890  		{name: "CMPL/base=R8/offset=-0x80000000/c=1048576", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
   891  		{name: "CMPL/base=R8/offset=-0x80000000/c=-1048576", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
   892  		{name: "CMPL/base=R8/offset=-0x80000000/c=2147483647", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
   893  		{name: "CMPL/base=R8/offset=-0x80000000/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
   894  		{name: "CMPL/base=R8/offset=0x7fff/c=0", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0}},
   895  		{name: "CMPL/base=R8/offset=0x7fff/c=1", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x1}},
   896  		{name: "CMPL/base=R8/offset=0x7fff/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff}},
   897  		{name: "CMPL/base=R8/offset=0x7fff/c=100", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x64}},
   898  		{name: "CMPL/base=R8/offset=0x7fff/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x9c}},
   899  		{name: "CMPL/base=R8/offset=0x7fff/c=127", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x7f}},
   900  		{name: "CMPL/base=R8/offset=0x7fff/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x80}},
   901  		{name: "CMPL/base=R8/offset=0x7fff/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
   902  		{name: "CMPL/base=R8/offset=0x7fff/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
   903  		{name: "CMPL/base=R8/offset=0x7fff/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
   904  		{name: "CMPL/base=R8/offset=0x7fff/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
   905  		{name: "CMPL/base=R8/offset=0x7fff/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
   906  		{name: "CMPL/base=R8/offset=0x7fff/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
   907  		{name: "CMPL/base=R8/offset=-0x8000/c=0", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0}},
   908  		{name: "CMPL/base=R8/offset=-0x8000/c=1", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x1}},
   909  		{name: "CMPL/base=R8/offset=-0x8000/c=-1", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff}},
   910  		{name: "CMPL/base=R8/offset=-0x8000/c=100", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x64}},
   911  		{name: "CMPL/base=R8/offset=-0x8000/c=-100", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x9c}},
   912  		{name: "CMPL/base=R8/offset=-0x8000/c=127", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x7f}},
   913  		{name: "CMPL/base=R8/offset=-0x8000/c=-128", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x80}},
   914  		{name: "CMPL/base=R8/offset=-0x8000/c=32767", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
   915  		{name: "CMPL/base=R8/offset=-0x8000/c=-32768", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
   916  		{name: "CMPL/base=R8/offset=-0x8000/c=1048576", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
   917  		{name: "CMPL/base=R8/offset=-0x8000/c=-1048576", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
   918  		{name: "CMPL/base=R8/offset=-0x8000/c=2147483647", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
   919  		{name: "CMPL/base=R8/offset=-0x8000/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
   920  	}
   921  
   922  	for _, tc := range tests {
   923  		a := NewAssembler()
   924  		err := a.encodeMemoryToConst(&nodeImpl{
   925  			instruction: tc.inst,
   926  			types:       operandTypesMemoryToConst, srcReg: tc.baseReg, srcConst: tc.offset, dstConst: tc.c,
   927  		})
   928  		require.NoError(t, err, tc.name)
   929  		require.Equal(t, tc.exp, a.buf.Bytes(), tc.name)
   930  	}
   931  }
   932  
   933  func TestAssemblerImpl_ResolveForwardRelativeJumps(t *testing.T) {
   934  	t.Run("long jump", func(t *testing.T) {
   935  		t.Run("error", func(t *testing.T) {
   936  			originOffset, targetOffset := uint64(0), uint64(math.MaxInt64)
   937  			origin := &nodeImpl{instruction: JMP, offsetInBinaryField: originOffset}
   938  			target := &nodeImpl{offsetInBinaryField: targetOffset, jumpOrigins: map[*nodeImpl]struct{}{origin: {}}}
   939  			a := NewAssembler()
   940  			err := a.ResolveForwardRelativeJumps(target)
   941  			require.EqualError(t, err, "too large jump offset 9223372036854775802 for encoding JMP")
   942  		})
   943  		t.Run("ok", func(t *testing.T) {
   944  			originOffset := uint64(0)
   945  			tests := []struct {
   946  				instruction                asm.Instruction
   947  				targetOffset               uint64
   948  				expectedOffsetFromEIP      int32
   949  				writtenOffsetIndexInBinary int
   950  			}{
   951  				{
   952  					instruction: JMP, targetOffset: 1234,
   953  					writtenOffsetIndexInBinary: 1,        // JMP has one opcode byte for long jump.
   954  					expectedOffsetFromEIP:      1234 - 5, // the instruction length of long relative jmp.
   955  				},
   956  				{
   957  					instruction: JCC, targetOffset: 1234,
   958  					writtenOffsetIndexInBinary: 2,        // Conditional jumps has two opcode for long jump.
   959  					expectedOffsetFromEIP:      1234 - 6, // the instruction length of long relative JCC
   960  				},
   961  			}
   962  
   963  			for _, tt := range tests {
   964  				tc := tt
   965  				origin := &nodeImpl{instruction: tc.instruction, offsetInBinaryField: originOffset}
   966  				target := &nodeImpl{offsetInBinaryField: tc.targetOffset, jumpOrigins: map[*nodeImpl]struct{}{origin: {}}}
   967  				a := NewAssembler()
   968  
   969  				// Grow the capacity of buffer so that we could put the offset.
   970  				a.buf.Write([]byte{0, 0, 0, 0, 0, 0}) // Relative long jumps are at most 6 bytes.
   971  
   972  				err := a.ResolveForwardRelativeJumps(target)
   973  				require.NoError(t, err)
   974  
   975  				actual := binary.LittleEndian.Uint32(a.buf.Bytes()[tc.writtenOffsetIndexInBinary:])
   976  				require.Equal(t, tc.expectedOffsetFromEIP, int32(actual))
   977  			}
   978  		})
   979  	})
   980  	t.Run("short jump", func(t *testing.T) {
   981  		t.Run("reassemble", func(t *testing.T) {
   982  			originOffset := uint64(0)
   983  			tests := []struct {
   984  				instruction  asm.Instruction
   985  				targetOffset uint64
   986  			}{
   987  				{
   988  					instruction:  JMP,
   989  					targetOffset: 10000,
   990  				},
   991  				{
   992  					instruction: JMP,
   993  					// Relative jump offset = 130 - len(JMP instruction bytes) = 130 - 2 = 128 > math.MaxInt8.
   994  					targetOffset: 130,
   995  				},
   996  				{
   997  					instruction:  JCC,
   998  					targetOffset: 10000,
   999  				},
  1000  				{
  1001  					instruction: JCC,
  1002  					// Relative jump offset = 130 - len(JCC instruction bytes) = 130 -2 = 128 > math.MaxInt8.
  1003  					targetOffset: 130,
  1004  				},
  1005  			}
  1006  
  1007  			for _, tt := range tests {
  1008  				tc := tt
  1009  				origin := &nodeImpl{instruction: tc.instruction, offsetInBinaryField: originOffset, flag: nodeFlagShortForwardJump}
  1010  				target := &nodeImpl{offsetInBinaryField: tc.targetOffset, jumpOrigins: map[*nodeImpl]struct{}{origin: {}}}
  1011  				origin.jumpTarget = target
  1012  
  1013  				a := NewAssembler()
  1014  				err := a.ResolveForwardRelativeJumps(target)
  1015  				require.NoError(t, err)
  1016  
  1017  				require.True(t, a.forceReAssemble)
  1018  				require.True(t, origin.flag&nodeFlagShortForwardJump == 0)
  1019  			}
  1020  		})
  1021  		t.Run("ok", func(t *testing.T) {
  1022  			originOffset := uint64(0)
  1023  			tests := []struct {
  1024  				instruction           asm.Instruction
  1025  				targetOffset          uint64
  1026  				expectedOffsetFromEIP byte
  1027  			}{
  1028  				{
  1029  					instruction: JMP, targetOffset: 129,
  1030  					expectedOffsetFromEIP: 129 - 2, // short jumps are of 2 bytes.
  1031  				},
  1032  				{
  1033  					instruction: JCC, targetOffset: 129,
  1034  					expectedOffsetFromEIP: 129 - 2, // short jumps are of 2 bytes.
  1035  				},
  1036  			}
  1037  
  1038  			for _, tt := range tests {
  1039  				tc := tt
  1040  				origin := &nodeImpl{instruction: tc.instruction, offsetInBinaryField: originOffset, flag: nodeFlagShortForwardJump}
  1041  				target := &nodeImpl{offsetInBinaryField: tc.targetOffset, jumpOrigins: map[*nodeImpl]struct{}{origin: {}}}
  1042  				origin.jumpTarget = target
  1043  
  1044  				a := NewAssembler()
  1045  
  1046  				// Grow the capacity of buffer so that we could put the offset.
  1047  				a.buf.Write([]byte{0, 0}) // Relative short jumps are of 2 bytes.
  1048  
  1049  				err := a.ResolveForwardRelativeJumps(target)
  1050  				require.NoError(t, err)
  1051  
  1052  				actual := a.buf.Bytes()[1] // For short jumps, the opcode has one opcode so the offset is writte at 2nd byte.
  1053  				require.Equal(t, tc.expectedOffsetFromEIP, actual)
  1054  			}
  1055  		})
  1056  	})
  1057  }