github.com/bananabytelabs/wazero@v0.0.0-20240105073314-54b22a776da8/internal/asm/amd64/impl_7_test.go (about)

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