package arm64

import (
	"encoding/hex"
	"testing"

	"github.com/tetratelabs/wazero/internal/asm"
	"github.com/tetratelabs/wazero/internal/testing/require"
)

func TestAssemblerImpl_EncodeConstToRegister(t *testing.T) {
	t.Run("error", func(t *testing.T) {
		tests := []struct {
			n      *nodeImpl
			expErr string
		}{
			{
				n: &nodeImpl{
					instruction: ADR, types: operandTypesConstToRegister,
					srcReg: RegR0, srcReg2: RegR0, dstReg: RegR0,
				},
				expErr: "ADR is unsupported for ConstToRegister type",
			},
			{
				n:      &nodeImpl{instruction: LSR, types: operandTypesConstToRegister, dstReg: RegR0},
				expErr: "LSR with zero constant should be optimized out",
			},
			{
				n:      &nodeImpl{instruction: LSL, types: operandTypesConstToRegister, dstReg: RegR0},
				expErr: "LSL with zero constant should be optimized out",
			},
		}

		for _, tt := range tests {
			tc := tt
			a := NewAssembler(asm.NilRegister)
			err := a.encodeConstToRegister(tc.n)
			require.EqualError(t, err, tc.expErr)
		}
	})

	tests := []struct {
		name string
		n    *nodeImpl
		exp  []byte
	}{
		{
			name: "add x29, sp, #0x200",
			n: &nodeImpl{
				instruction: ADD,
				srcReg:      RegSP,
				dstReg:      RegR29,
				srcConst:    512,
			},
			exp: []byte{0xfd, 0x3, 0x8, 0x91},
		},
		{
			name: "add x29, sp, #0x100, lsl #12",
			n: &nodeImpl{
				instruction: ADD,
				srcReg:      RegSP,
				dstReg:      RegR29,
				srcConst:    0x100000,
			},
			exp: []byte{0xfd, 0x3, 0x44, 0x91},
		},
		{
			name: "sub x29, sp, #0x200",
			n: &nodeImpl{
				instruction: SUB,
				srcReg:      RegSP,
				dstReg:      RegR29,
				srcConst:    512,
			},
			exp: []byte{0xfd, 0x3, 0x8, 0xd1},
		},
		{
			name: "sub x29, sp, #0x100, lsl #12",
			n: &nodeImpl{
				instruction: SUB,
				srcReg:      RegSP,
				dstReg:      RegR29,
				srcConst:    0x100000,
			},
			exp: []byte{0xfd, 0x3, 0x44, 0xd1},
		},
		{
			name: "movz x27, #0x1f54; add  sp, sp, x27",
			n: &nodeImpl{
				instruction: ADD,
				dstReg:      RegSP,
				srcConst:    8020,
			},
			exp: []byte{0x9b, 0xea, 0x83, 0xd2, 0xff, 0x63, 0x3b, 0x8b},
		},
		{
			name: "movz x27, #0x1f54; add  x28, sp, x27",
			n: &nodeImpl{
				instruction: ADD,
				srcReg:      RegSP,
				dstReg:      RegR28,
				srcConst:    8020,
			},
			exp: []byte{0x9b, 0xea, 0x83, 0xd2, 0xfc, 0x63, 0x3b, 0x8b},
		},
		{
			name: "movz x27, #0x1f54; sub  sp, sp, x27",
			n: &nodeImpl{
				instruction: SUB,
				dstReg:      RegSP,
				srcConst:    8020,
			},
			exp: []byte{0x9b, 0xea, 0x83, 0xd2, 0xff, 0x63, 0x3b, 0xcb},
		},
		{
			name: "movz x27, #0x1f54; sub  x28, sp, x27",
			n: &nodeImpl{
				instruction: SUB,
				srcReg:      RegSP,
				dstReg:      RegR28,
				srcConst:    8020,
			},
			exp: []byte{0x9b, 0xea, 0x83, 0xd2, 0xfc, 0x63, 0x3b, 0xcb},
		},
		{
			name: "add sp, sp, #0x200",
			n: &nodeImpl{
				instruction: ADD,
				dstReg:      RegSP,
				srcConst:    512,
			},
			exp: []byte{0xff, 0x3, 0x8, 0x91},
		},
		{
			name: "sub sp, sp, #0x200",
			n: &nodeImpl{
				instruction: SUB,
				dstReg:      RegSP,
				srcConst:    512,
			},
			exp: []byte{0xff, 0x3, 0x8, 0xd1},
		},
		{
			name: "and w30, w30, #1",
			n: &nodeImpl{
				instruction:       ANDIMM32,
				dstReg:            RegR30,
				srcConst:          1,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0x3, 0x0, 0x12},
		},
		{
			name: "and w30, w30, #7",
			n: &nodeImpl{
				instruction:       ANDIMM32,
				dstReg:            RegR30,
				srcConst:          0x7,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0xb, 0x0, 0x12},
		},
		{
			name: "and w30, w30, #0xf",
			n: &nodeImpl{
				instruction:       ANDIMM32,
				dstReg:            RegR30,
				srcConst:          0xf,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0xf, 0x0, 0x12},
		},
		{
			name: "and w30, w30, #0x1f",
			n: &nodeImpl{
				instruction:       ANDIMM32,
				dstReg:            RegR30,
				srcConst:          0x1f,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0x13, 0x0, 0x12},
		},
		{
			name: "and w30, w30, #0x3f",
			n: &nodeImpl{
				instruction:       ANDIMM32,
				dstReg:            RegR30,
				srcConst:          0x3f,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0x17, 0x0, 0x12},
		},
		{
			name: "and x30, x30, #1",
			n: &nodeImpl{
				instruction:       ANDIMM64,
				dstReg:            RegR30,
				srcConst:          1,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0x3, 0x40, 0x92},
		},
		{
			name: "and x30, x30, #7",
			n: &nodeImpl{
				instruction:       ANDIMM64,
				dstReg:            RegR30,
				srcConst:          0x7,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0xb, 0x40, 0x92},
		},
		{
			name: "and x30, x30, #0xf",
			n: &nodeImpl{
				instruction:       ANDIMM64,
				dstReg:            RegR30,
				srcConst:          0xf,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0xf, 0x40, 0x92},
		},
		{
			name: "and x30, x30, #0x1f",
			n: &nodeImpl{
				instruction:       ANDIMM64,
				dstReg:            RegR30,
				srcConst:          0x1f,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0x13, 0x40, 0x92},
		},
		{
			name: "and x30, x30, #0x3f",
			n: &nodeImpl{
				instruction:       ANDIMM64,
				dstReg:            RegR30,
				srcConst:          0x3f,
				vectorArrangement: VectorArrangement16B,
			},
			exp: []byte{0xde, 0x17, 0x40, 0x92},
		},
		{name: "ADD/dst=R30/0x1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4095}, exp: []byte{0xde, 0xff, 0x3f, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffff001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4095}, exp: []byte{0xdb, 0xff, 0x81, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfff000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 16773120}, exp: []byte{0xde, 0xff, 0x7f, 0x91}},
		{name: "ADD/dst=R30/0xffffffffff001000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -16773120}, exp: []byte{0xfb, 0xff, 0x9d, 0x92, 0x1b, 0xe0, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7b000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 503808}, exp: []byte{0xde, 0xef, 0x41, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffff85000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -503808}, exp: []byte{0xfb, 0xff, 0x95, 0x92, 0x1b, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x8001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 32769}, exp: []byte{0x3b, 0x0, 0x90, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffff7fff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -32769}, exp: []byte{0x1b, 0x0, 0x90, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x80010000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3b, 0x0, 0xb0, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0xfb, 0xff, 0xaf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x800100000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 140741783322624}, exp: []byte{0x3b, 0x0, 0xd0, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff7fff00000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -140741783322624}, exp: []byte{0xfb, 0xff, 0xcf, 0xd2, 0xfb, 0xff, 0xff, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 281474976710655}, exp: []byte{0xfb, 0xff, 0xff, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff000000000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -281474976710655}, exp: []byte{0xfb, 0x43, 0x50, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff0000ffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -281470681743361}, exp: []byte{0xfb, 0xff, 0xdf, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff00000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 281470681743361}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0xfb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfb, 0x87, 0x61, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7fffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfb, 0x7b, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff00000000ffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -281474976645121}, exp: []byte{0xfb, 0x7f, 0x50, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff0001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 281474976645121}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xe0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x100001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1048577}, exp: []byte{0xde, 0x7, 0x0, 0x91, 0xde, 0x3, 0x44, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffefffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1048577}, exp: []byte{0x1b, 0x2, 0xa0, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1048575}, exp: []byte{0xfb, 0x4f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffffff00001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1048575}, exp: []byte{0xfb, 0xb3, 0x6c, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x800001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 8388609}, exp: []byte{0xde, 0x7, 0x0, 0x91, 0xde, 0x3, 0x60, 0x91}},
		{name: "ADD/dst=R30/0xffffffffff7fffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -8388609}, exp: []byte{0x1b, 0x10, 0xa0, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x40000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x0, 0xa8, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1b, 0x0, 0xa8, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x2", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xb, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x3", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x11", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 17}, exp: []byte{0xde, 0x47, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x4", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4}, exp: []byte{0xde, 0x13, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffffc", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4}, exp: []byte{0x7b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x5", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 5}, exp: []byte{0xde, 0x17, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffffb", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -5}, exp: []byte{0x9b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x3", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x13", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 19}, exp: []byte{0xde, 0x4f, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffed", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -19}, exp: []byte{0x5b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x8", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 8}, exp: []byte{0xde, 0x23, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffff8", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -8}, exp: []byte{0xfb, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x9", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 9}, exp: []byte{0xde, 0x27, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffff7", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -9}, exp: []byte{0x1b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 7}, exp: []byte{0xde, 0x1f, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffff9", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -7}, exp: []byte{0xdb, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x17", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 23}, exp: []byte{0xde, 0x5f, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffe9", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -23}, exp: []byte{0xdb, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x10", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 16}, exp: []byte{0xde, 0x43, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffff0", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -16}, exp: []byte{0xfb, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x11", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 17}, exp: []byte{0xde, 0x47, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xf", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 15}, exp: []byte{0xde, 0x3f, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffff1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -15}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x1f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0x7f, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -31}, exp: []byte{0xdb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x20", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 32}, exp: []byte{0xde, 0x83, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffe0", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -32}, exp: []byte{0xfb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x21", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 33}, exp: []byte{0xde, 0x87, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffdf", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -33}, exp: []byte{0x1b, 0x4, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x1f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0x7f, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -31}, exp: []byte{0xdb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x2f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 47}, exp: []byte{0xde, 0xbf, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffd1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -47}, exp: []byte{0xdb, 0x5, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x40", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 64}, exp: []byte{0xde, 0x3, 0x1, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffc0", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -64}, exp: []byte{0xfb, 0x7, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x41", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 65}, exp: []byte{0xde, 0x7, 0x1, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffbf", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -65}, exp: []byte{0x1b, 0x8, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x3f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 63}, exp: []byte{0xde, 0xff, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffc1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -63}, exp: []byte{0xdb, 0x7, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x4f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 79}, exp: []byte{0xde, 0x3f, 0x1, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffb1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -79}, exp: []byte{0xdb, 0x9, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x1ffe", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 8190}, exp: []byte{0xdb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffffe002", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -8190}, exp: []byte{0xbb, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x1ffd", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 8189}, exp: []byte{0xbb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffffe003", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -8189}, exp: []byte{0x9b, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x1fff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 8191}, exp: []byte{0xfb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffffe001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -8191}, exp: []byte{0xdb, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x0", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 0}, exp: []byte{0xde, 0x3, 0x1f, 0x8b}},
		{name: "ADD/dst=R30/0x1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0x91}},
		{name: "ADD/dst=R30/0x2", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xb, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x3", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xa", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 10}, exp: []byte{0xde, 0x2b, 0x0, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xa", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 10}, exp: []byte{0xde, 0x2b, 0x0, 0x91}},
		{name: "ADD/dst=R30/0x7b", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 123}, exp: []byte{0xde, 0xef, 0x1, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5b, 0xf, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5b, 0xf, 0x80, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7b", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 123}, exp: []byte{0xde, 0xef, 0x1, 0x91}},
		{name: "ADD/dst=R30/0x7fff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 32767}, exp: []byte{0xfb, 0xff, 0x8f, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffff8001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -32767}, exp: []byte{0xdb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7fffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfb, 0x7b, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfb, 0x87, 0x61, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfb, 0x7f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfb, 0x83, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x4002", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 16386}, exp: []byte{0x5b, 0x0, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffffbffe", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -16386}, exp: []byte{0x3b, 0x0, 0x88, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff0000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfb, 0xff, 0xbf, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff0001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294901761}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff0000ffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294901761}, exp: []byte{0xfb, 0xff, 0xbf, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xf00000f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 251658255}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x1b, 0xe0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffff0fffff1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -251658255}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xfb, 0x1f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7ffe", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 32766}, exp: []byte{0xdb, 0xff, 0x8f, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffff8002", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -32766}, exp: []byte{0xbb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7ffffffe", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 2147483646}, exp: []byte{0xfb, 0x77, 0x7f, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff80000002", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -2147483646}, exp: []byte{0xbb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xb0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffe", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294967294}, exp: []byte{0xfb, 0x7b, 0x7f, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff00000002", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294967294}, exp: []byte{0xbb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x4001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 16385}, exp: []byte{0x3b, 0x0, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffffbfff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -16385}, exp: []byte{0x1b, 0x0, 0x88, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffeffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294901759}, exp: []byte{0xfb, 0xff, 0x9f, 0xd2, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff00010001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294901759}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff0000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfb, 0xff, 0xbf, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xf00000e", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 251658254}, exp: []byte{0xdb, 0x1, 0x80, 0xd2, 0x1b, 0xe0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffff0fffff2", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -251658254}, exp: []byte{0xbb, 0x1, 0x80, 0x92, 0xfb, 0x1f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x8000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 32768}, exp: []byte{0xde, 0x23, 0x40, 0x91}},
		{name: "ADD/dst=R30/0xffffffffffff8000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -32768}, exp: []byte{0xfb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x4009", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 16393}, exp: []byte{0x3b, 0x1, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffffffbff7", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -16393}, exp: []byte{0x1b, 0x1, 0x88, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffeffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 268369919}, exp: []byte{0xfb, 0xff, 0x9f, 0xd2, 0xdb, 0xff, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffff0010001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -268369919}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffe0000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 268304384}, exp: []byte{0xdb, 0xff, 0xa1, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffff0020000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -268304384}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x5b, 0x0, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xe00000e", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 234881038}, exp: []byte{0xdb, 0x1, 0x80, 0xd2, 0x1b, 0xc0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffff1fffff2", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -234881038}, exp: []byte{0xbb, 0x1, 0x80, 0x92, 0xfb, 0x3f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x80010000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3b, 0x0, 0xb0, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0xfb, 0xff, 0xaf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x10002", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 65538}, exp: []byte{0xde, 0xb, 0x0, 0x91, 0xde, 0x43, 0x40, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffefffe", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -65538}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x100000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294967296}, exp: []byte{0x3b, 0x0, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff00000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294967296}, exp: []byte{0xfb, 0x7f, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x400000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 17179869184}, exp: []byte{0x9b, 0x0, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffc00000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -17179869184}, exp: []byte{0xfb, 0x77, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x10000000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1099511627776}, exp: []byte{0x1b, 0x20, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffff0000000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1099511627776}, exp: []byte{0xfb, 0x5f, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x100000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294967297}, exp: []byte{0xfb, 0x3, 0x0, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffeffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294967297}, exp: []byte{0x3b, 0x0, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x400000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 17179869185}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x9b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffbffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -17179869185}, exp: []byte{0x9b, 0x0, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x10000000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1099511627777}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x20, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffeffffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1099511627777}, exp: []byte{0x1b, 0x20, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfb, 0x7f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfb, 0x83, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x3ffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 17179869183}, exp: []byte{0xfb, 0x87, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffc00000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -17179869183}, exp: []byte{0xfb, 0x7b, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1099511627775}, exp: []byte{0xfb, 0x9f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffff0000000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1099511627775}, exp: []byte{0xfb, 0x63, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x10000000f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294967311}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x3b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffefffffff1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294967311}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xdb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x40000000f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 17179869199}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x9b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffbfffffff1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -17179869199}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0x7b, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x1000000000f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1099511627791}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x1b, 0x20, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffefffffffff1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1099511627791}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xfb, 0xdf, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffff1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 4294967281}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff0000000f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -4294967281}, exp: []byte{0xfb, 0x8f, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x3fffffff1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 17179869169}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0x7b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffc0000000f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -17179869169}, exp: []byte{0xfb, 0x87, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xfffffffff1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1099511627761}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xfb, 0x1f, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffff000000000f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1099511627761}, exp: []byte{0xfb, 0x6f, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7fffffffffffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 9223372036854775807}, exp: []byte{0x1b, 0x0, 0xf0, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x8000000000000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -9223372036854775807}, exp: []byte{0xfb, 0x7, 0x41, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1b, 0x0, 0xf0, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1b, 0x0, 0xf0, 0xd2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x40000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x0, 0xa8, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1b, 0x0, 0xa8, 0x92, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7000000010000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 8070450532516364288}, exp: []byte{0x1b, 0x0, 0xa2, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x8ffffffff0000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -8070450532516364288}, exp: []byte{0x1b, 0x0, 0xbe, 0xd2, 0xfb, 0xff, 0xdf, 0xf2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7000000100000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 8070450536542896128}, exp: []byte{0x3b, 0x0, 0xc0, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x8fffffff00000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -8070450536542896128}, exp: []byte{0xfb, 0xff, 0xdf, 0xd2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x7000100000000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 8070468124433973248}, exp: []byte{0x1b, 0x0, 0xc2, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x8ffff00000000000", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -8070468124433973248}, exp: []byte{0x1b, 0x0, 0xde, 0xd2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x154b4", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 87220}, exp: []byte{0xde, 0xd3, 0x12, 0x91, 0xde, 0x57, 0x40, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffeab4c", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -87220}, exp: []byte{0x7b, 0x96, 0x8a, 0x92, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x40008", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 262152}, exp: []byte{0xde, 0x23, 0x0, 0x91, 0xde, 0x3, 0x41, 0x91}},
		{name: "ADD/dst=R30/0xfffffffffffbfff8", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -262152}, exp: []byte{0xfb, 0x0, 0x80, 0x92, 0x7b, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff0000c466361f", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -281471681677793}, exp: []byte{0xfb, 0xc3, 0x86, 0xd2, 0xdb, 0x8c, 0xb8, 0xf2, 0xfb, 0xff, 0xff, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffff3b99c9e1", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 281471681677793}, exp: []byte{0x3b, 0x3c, 0x99, 0xd2, 0x3b, 0x73, 0xa7, 0xf2, 0xfb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xc465c9ff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 3295005183}, exp: []byte{0xfb, 0x3f, 0x99, 0xd2, 0xbb, 0x8c, 0xb8, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffff3b9a3601", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -3295005183}, exp: []byte{0xdb, 0x3f, 0x99, 0x92, 0x5b, 0x73, 0xa7, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x89705f4136b4a598", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -8543223759426509416}, exp: []byte{0x1b, 0xb3, 0x94, 0xd2, 0x9b, 0xd6, 0xa6, 0xf2, 0x3b, 0xe8, 0xcb, 0xf2, 0x1b, 0x2e, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x768fa0bec94b5a68", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 8543223759426509416}, exp: []byte{0x1b, 0x4d, 0x8b, 0xd2, 0x7b, 0x29, 0xb9, 0xf2, 0xdb, 0x17, 0xd4, 0xf2, 0xfb, 0xd1, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffc4653600", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -1000000000}, exp: []byte{0xfb, 0x3f, 0x99, 0x92, 0xbb, 0x8c, 0xb8, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0x3b9aca00", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 1000000000}, exp: []byte{0x1b, 0x40, 0x99, 0xd2, 0x5b, 0x73, 0xa7, 0xf2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffff", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: 16777215}, exp: []byte{0xfb, 0x5f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADD/dst=R30/0xffffffffff000001", n: &nodeImpl{instruction: ADD, dstReg: RegR30, srcConst: -16777215}, exp: []byte{0xfb, 0xa3, 0x68, 0xb2, 0xde, 0x3, 0x1b, 0x8b}},
		{name: "ADDS/dst=R30/0x1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4095}, exp: []byte{0xde, 0xff, 0x3f, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffff001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4095}, exp: []byte{0xdb, 0xff, 0x81, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfff000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 16773120}, exp: []byte{0xde, 0xff, 0x7f, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffff001000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -16773120}, exp: []byte{0xfb, 0xff, 0x9d, 0x92, 0x1b, 0xe0, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7b000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 503808}, exp: []byte{0xde, 0xef, 0x41, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffff85000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -503808}, exp: []byte{0xfb, 0xff, 0x95, 0x92, 0x1b, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x8001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 32769}, exp: []byte{0x3b, 0x0, 0x90, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffff7fff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -32769}, exp: []byte{0x1b, 0x0, 0x90, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x80010000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3b, 0x0, 0xb0, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0xfb, 0xff, 0xaf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x800100000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 140741783322624}, exp: []byte{0x3b, 0x0, 0xd0, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff7fff00000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -140741783322624}, exp: []byte{0xfb, 0xff, 0xcf, 0xd2, 0xfb, 0xff, 0xff, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 281474976710655}, exp: []byte{0xfb, 0xff, 0xff, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff000000000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -281474976710655}, exp: []byte{0xfb, 0x43, 0x50, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff0000ffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -281470681743361}, exp: []byte{0xfb, 0xff, 0xdf, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff00000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 281470681743361}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0xfb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfb, 0x87, 0x61, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7fffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfb, 0x7b, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff00000000ffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -281474976645121}, exp: []byte{0xfb, 0x7f, 0x50, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff0001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 281474976645121}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xe0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x100001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1048577}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x2, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffefffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1048577}, exp: []byte{0x1b, 0x2, 0xa0, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1048575}, exp: []byte{0xfb, 0x4f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffffff00001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1048575}, exp: []byte{0xfb, 0xb3, 0x6c, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x800001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 8388609}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x10, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffff7fffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -8388609}, exp: []byte{0x1b, 0x10, 0xa0, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x40000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x0, 0xa8, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1b, 0x0, 0xa8, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x2", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xb, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x3", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x11", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 17}, exp: []byte{0xde, 0x47, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x4", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4}, exp: []byte{0xde, 0x13, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffffc", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4}, exp: []byte{0x7b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x5", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 5}, exp: []byte{0xde, 0x17, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffffb", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -5}, exp: []byte{0x9b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x3", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x13", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 19}, exp: []byte{0xde, 0x4f, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffed", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -19}, exp: []byte{0x5b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x8", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 8}, exp: []byte{0xde, 0x23, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffff8", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -8}, exp: []byte{0xfb, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x9", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 9}, exp: []byte{0xde, 0x27, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffff7", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -9}, exp: []byte{0x1b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 7}, exp: []byte{0xde, 0x1f, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffff9", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -7}, exp: []byte{0xdb, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x17", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 23}, exp: []byte{0xde, 0x5f, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffe9", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -23}, exp: []byte{0xdb, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x10", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 16}, exp: []byte{0xde, 0x43, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffff0", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -16}, exp: []byte{0xfb, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x11", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 17}, exp: []byte{0xde, 0x47, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xf", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 15}, exp: []byte{0xde, 0x3f, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffff1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -15}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x1f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0x7f, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -31}, exp: []byte{0xdb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x20", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 32}, exp: []byte{0xde, 0x83, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffe0", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -32}, exp: []byte{0xfb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x21", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 33}, exp: []byte{0xde, 0x87, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffdf", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -33}, exp: []byte{0x1b, 0x4, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x1f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0x7f, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -31}, exp: []byte{0xdb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x2f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 47}, exp: []byte{0xde, 0xbf, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffd1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -47}, exp: []byte{0xdb, 0x5, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x40", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 64}, exp: []byte{0xde, 0x3, 0x1, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffc0", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -64}, exp: []byte{0xfb, 0x7, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x41", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 65}, exp: []byte{0xde, 0x7, 0x1, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffbf", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -65}, exp: []byte{0x1b, 0x8, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x3f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 63}, exp: []byte{0xde, 0xff, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffc1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -63}, exp: []byte{0xdb, 0x7, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x4f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 79}, exp: []byte{0xde, 0x3f, 0x1, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffb1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -79}, exp: []byte{0xdb, 0x9, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x1ffe", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 8190}, exp: []byte{0xdb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffffe002", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -8190}, exp: []byte{0xbb, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x1ffd", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 8189}, exp: []byte{0xbb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffffe003", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -8189}, exp: []byte{0x9b, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x1fff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 8191}, exp: []byte{0xfb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffffe001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -8191}, exp: []byte{0xdb, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x0", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 0}, exp: []byte{0xde, 0x3, 0x1f, 0xab}},
		{name: "ADDS/dst=R30/0x1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0x2", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xb, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x3", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xa", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 10}, exp: []byte{0xde, 0x2b, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xa", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 10}, exp: []byte{0xde, 0x2b, 0x0, 0xb1}},
		{name: "ADDS/dst=R30/0x7b", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 123}, exp: []byte{0xde, 0xef, 0x1, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5b, 0xf, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5b, 0xf, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7b", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 123}, exp: []byte{0xde, 0xef, 0x1, 0xb1}},
		{name: "ADDS/dst=R30/0x7fff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 32767}, exp: []byte{0xfb, 0xff, 0x8f, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffff8001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -32767}, exp: []byte{0xdb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7fffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfb, 0x7b, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfb, 0x87, 0x61, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfb, 0x7f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfb, 0x83, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x4002", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 16386}, exp: []byte{0x5b, 0x0, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffffbffe", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -16386}, exp: []byte{0x3b, 0x0, 0x88, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff0000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfb, 0xff, 0xbf, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff0001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294901761}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff0000ffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294901761}, exp: []byte{0xfb, 0xff, 0xbf, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xf00000f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 251658255}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x1b, 0xe0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffff0fffff1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -251658255}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xfb, 0x1f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7ffe", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 32766}, exp: []byte{0xdb, 0xff, 0x8f, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffff8002", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -32766}, exp: []byte{0xbb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7ffffffe", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 2147483646}, exp: []byte{0xfb, 0x77, 0x7f, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff80000002", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -2147483646}, exp: []byte{0xbb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xb0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffe", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294967294}, exp: []byte{0xfb, 0x7b, 0x7f, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff00000002", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294967294}, exp: []byte{0xbb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x4001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 16385}, exp: []byte{0x3b, 0x0, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffffbfff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -16385}, exp: []byte{0x1b, 0x0, 0x88, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffeffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294901759}, exp: []byte{0xfb, 0xff, 0x9f, 0xd2, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff00010001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294901759}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff0000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfb, 0xff, 0xbf, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xf00000e", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 251658254}, exp: []byte{0xdb, 0x1, 0x80, 0xd2, 0x1b, 0xe0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffff0fffff2", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -251658254}, exp: []byte{0xbb, 0x1, 0x80, 0x92, 0xfb, 0x1f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x8000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 32768}, exp: []byte{0xde, 0x23, 0x40, 0xb1}},
		{name: "ADDS/dst=R30/0xffffffffffff8000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -32768}, exp: []byte{0xfb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x4009", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 16393}, exp: []byte{0x3b, 0x1, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffffffbff7", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -16393}, exp: []byte{0x1b, 0x1, 0x88, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffeffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 268369919}, exp: []byte{0xfb, 0xff, 0x9f, 0xd2, 0xdb, 0xff, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffff0010001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -268369919}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffe0000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 268304384}, exp: []byte{0xdb, 0xff, 0xa1, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffff0020000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -268304384}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x5b, 0x0, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xe00000e", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 234881038}, exp: []byte{0xdb, 0x1, 0x80, 0xd2, 0x1b, 0xc0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffff1fffff2", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -234881038}, exp: []byte{0xbb, 0x1, 0x80, 0x92, 0xfb, 0x3f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x80010000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3b, 0x0, 0xb0, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0xfb, 0xff, 0xaf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x10002", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 65538}, exp: []byte{0x5b, 0x0, 0x80, 0xd2, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffffffefffe", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -65538}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x100000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294967296}, exp: []byte{0x3b, 0x0, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff00000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294967296}, exp: []byte{0xfb, 0x7f, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x400000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 17179869184}, exp: []byte{0x9b, 0x0, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffc00000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -17179869184}, exp: []byte{0xfb, 0x77, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x10000000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1099511627776}, exp: []byte{0x1b, 0x20, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffff0000000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1099511627776}, exp: []byte{0xfb, 0x5f, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x100000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294967297}, exp: []byte{0xfb, 0x3, 0x0, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffeffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294967297}, exp: []byte{0x3b, 0x0, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x400000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 17179869185}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x9b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffbffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -17179869185}, exp: []byte{0x9b, 0x0, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x10000000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1099511627777}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x20, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffeffffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1099511627777}, exp: []byte{0x1b, 0x20, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfb, 0x7f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfb, 0x83, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x3ffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 17179869183}, exp: []byte{0xfb, 0x87, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffc00000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -17179869183}, exp: []byte{0xfb, 0x7b, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1099511627775}, exp: []byte{0xfb, 0x9f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffff0000000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1099511627775}, exp: []byte{0xfb, 0x63, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x10000000f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294967311}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x3b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffefffffff1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294967311}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xdb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x40000000f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 17179869199}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x9b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffbfffffff1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -17179869199}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0x7b, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x1000000000f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1099511627791}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x1b, 0x20, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffefffffffff1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1099511627791}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xfb, 0xdf, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffff1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 4294967281}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff0000000f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -4294967281}, exp: []byte{0xfb, 0x8f, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x3fffffff1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 17179869169}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0x7b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffc0000000f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -17179869169}, exp: []byte{0xfb, 0x87, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffff1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1099511627761}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xfb, 0x1f, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffff000000000f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1099511627761}, exp: []byte{0xfb, 0x6f, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7fffffffffffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 9223372036854775807}, exp: []byte{0x1b, 0x0, 0xf0, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x8000000000000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -9223372036854775807}, exp: []byte{0xfb, 0x7, 0x41, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1b, 0x0, 0xf0, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1b, 0x0, 0xf0, 0xd2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x40000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x0, 0xa8, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1b, 0x0, 0xa8, 0x92, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7000000010000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 8070450532516364288}, exp: []byte{0x1b, 0x0, 0xa2, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x8ffffffff0000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -8070450532516364288}, exp: []byte{0x1b, 0x0, 0xbe, 0xd2, 0xfb, 0xff, 0xdf, 0xf2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7000000100000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 8070450536542896128}, exp: []byte{0x3b, 0x0, 0xc0, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x8fffffff00000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -8070450536542896128}, exp: []byte{0xfb, 0xff, 0xdf, 0xd2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x7000100000000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 8070468124433973248}, exp: []byte{0x1b, 0x0, 0xc2, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x8ffff00000000000", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -8070468124433973248}, exp: []byte{0x1b, 0x0, 0xde, 0xd2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x154b4", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 87220}, exp: []byte{0x9b, 0x96, 0x8a, 0xd2, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffffffeab4c", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -87220}, exp: []byte{0x7b, 0x96, 0x8a, 0x92, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x40008", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 262152}, exp: []byte{0x1b, 0x1, 0x80, 0xd2, 0x9b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xfffffffffffbfff8", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -262152}, exp: []byte{0xfb, 0x0, 0x80, 0x92, 0x7b, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff0000c466361f", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -281471681677793}, exp: []byte{0xfb, 0xc3, 0x86, 0xd2, 0xdb, 0x8c, 0xb8, 0xf2, 0xfb, 0xff, 0xff, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffff3b99c9e1", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 281471681677793}, exp: []byte{0x3b, 0x3c, 0x99, 0xd2, 0x3b, 0x73, 0xa7, 0xf2, 0xfb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xc465c9ff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 3295005183}, exp: []byte{0xfb, 0x3f, 0x99, 0xd2, 0xbb, 0x8c, 0xb8, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffff3b9a3601", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -3295005183}, exp: []byte{0xdb, 0x3f, 0x99, 0x92, 0x5b, 0x73, 0xa7, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x89705f4136b4a598", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -8543223759426509416}, exp: []byte{0x1b, 0xb3, 0x94, 0xd2, 0x9b, 0xd6, 0xa6, 0xf2, 0x3b, 0xe8, 0xcb, 0xf2, 0x1b, 0x2e, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x768fa0bec94b5a68", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 8543223759426509416}, exp: []byte{0x1b, 0x4d, 0x8b, 0xd2, 0x7b, 0x29, 0xb9, 0xf2, 0xdb, 0x17, 0xd4, 0xf2, 0xfb, 0xd1, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffc4653600", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -1000000000}, exp: []byte{0xfb, 0x3f, 0x99, 0x92, 0xbb, 0x8c, 0xb8, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0x3b9aca00", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 1000000000}, exp: []byte{0x1b, 0x40, 0x99, 0xd2, 0x5b, 0x73, 0xa7, 0xf2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffff", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: 16777215}, exp: []byte{0xfb, 0x5f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "ADDS/dst=R30/0xffffffffff000001", n: &nodeImpl{instruction: ADDS, dstReg: RegR30, srcConst: -16777215}, exp: []byte{0xfb, 0xa3, 0x68, 0xb2, 0xde, 0x3, 0x1b, 0xab}},
		{name: "SUB/dst=R30/0x1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4095}, exp: []byte{0xde, 0xff, 0x3f, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffff001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4095}, exp: []byte{0xdb, 0xff, 0x81, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfff000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 16773120}, exp: []byte{0xde, 0xff, 0x7f, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffff001000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -16773120}, exp: []byte{0xfb, 0xff, 0x9d, 0x92, 0x1b, 0xe0, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7b000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 503808}, exp: []byte{0xde, 0xef, 0x41, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffff85000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -503808}, exp: []byte{0xfb, 0xff, 0x95, 0x92, 0x1b, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x8001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 32769}, exp: []byte{0x3b, 0x0, 0x90, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffff7fff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -32769}, exp: []byte{0x1b, 0x0, 0x90, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x80010000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3b, 0x0, 0xb0, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0xfb, 0xff, 0xaf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x800100000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 140741783322624}, exp: []byte{0x3b, 0x0, 0xd0, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff7fff00000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -140741783322624}, exp: []byte{0xfb, 0xff, 0xcf, 0xd2, 0xfb, 0xff, 0xff, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 281474976710655}, exp: []byte{0xfb, 0xff, 0xff, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff000000000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -281474976710655}, exp: []byte{0xfb, 0x43, 0x50, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff0000ffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -281470681743361}, exp: []byte{0xfb, 0xff, 0xdf, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff00000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 281470681743361}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0xfb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfb, 0x87, 0x61, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7fffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfb, 0x7b, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff00000000ffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -281474976645121}, exp: []byte{0xfb, 0x7f, 0x50, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff0001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 281474976645121}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xe0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x100001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1048577}, exp: []byte{0xde, 0x7, 0x0, 0xd1, 0xde, 0x3, 0x44, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffefffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1048577}, exp: []byte{0x1b, 0x2, 0xa0, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1048575}, exp: []byte{0xfb, 0x4f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffffff00001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1048575}, exp: []byte{0xfb, 0xb3, 0x6c, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x800001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 8388609}, exp: []byte{0xde, 0x7, 0x0, 0xd1, 0xde, 0x3, 0x60, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffff7fffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -8388609}, exp: []byte{0x1b, 0x10, 0xa0, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x40000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x0, 0xa8, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1b, 0x0, 0xa8, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x2", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xb, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x3", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x11", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 17}, exp: []byte{0xde, 0x47, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x4", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4}, exp: []byte{0xde, 0x13, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffffc", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4}, exp: []byte{0x7b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x5", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 5}, exp: []byte{0xde, 0x17, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffffb", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -5}, exp: []byte{0x9b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x3", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x13", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 19}, exp: []byte{0xde, 0x4f, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffed", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -19}, exp: []byte{0x5b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x8", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 8}, exp: []byte{0xde, 0x23, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffff8", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -8}, exp: []byte{0xfb, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x9", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 9}, exp: []byte{0xde, 0x27, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffff7", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -9}, exp: []byte{0x1b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 7}, exp: []byte{0xde, 0x1f, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffff9", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -7}, exp: []byte{0xdb, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x17", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 23}, exp: []byte{0xde, 0x5f, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffe9", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -23}, exp: []byte{0xdb, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x10", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 16}, exp: []byte{0xde, 0x43, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffff0", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -16}, exp: []byte{0xfb, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x11", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 17}, exp: []byte{0xde, 0x47, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xf", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 15}, exp: []byte{0xde, 0x3f, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffff1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -15}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x1f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0x7f, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -31}, exp: []byte{0xdb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x20", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 32}, exp: []byte{0xde, 0x83, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffe0", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -32}, exp: []byte{0xfb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x21", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 33}, exp: []byte{0xde, 0x87, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffdf", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -33}, exp: []byte{0x1b, 0x4, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x1f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0x7f, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -31}, exp: []byte{0xdb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x2f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 47}, exp: []byte{0xde, 0xbf, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffd1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -47}, exp: []byte{0xdb, 0x5, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x40", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 64}, exp: []byte{0xde, 0x3, 0x1, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffc0", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -64}, exp: []byte{0xfb, 0x7, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x41", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 65}, exp: []byte{0xde, 0x7, 0x1, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffbf", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -65}, exp: []byte{0x1b, 0x8, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x3f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 63}, exp: []byte{0xde, 0xff, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffc1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -63}, exp: []byte{0xdb, 0x7, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x4f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 79}, exp: []byte{0xde, 0x3f, 0x1, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffb1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -79}, exp: []byte{0xdb, 0x9, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x1ffe", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 8190}, exp: []byte{0xdb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffffe002", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -8190}, exp: []byte{0xbb, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x1ffd", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 8189}, exp: []byte{0xbb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffffe003", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -8189}, exp: []byte{0x9b, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x1fff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 8191}, exp: []byte{0xfb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffffe001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -8191}, exp: []byte{0xdb, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x0", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 0}, exp: []byte{0xde, 0x3, 0x1f, 0xcb}},
		{name: "SUB/dst=R30/0x1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0x2", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xb, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x3", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xa", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 10}, exp: []byte{0xde, 0x2b, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xa", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 10}, exp: []byte{0xde, 0x2b, 0x0, 0xd1}},
		{name: "SUB/dst=R30/0x7b", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 123}, exp: []byte{0xde, 0xef, 0x1, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5b, 0xf, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5b, 0xf, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7b", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 123}, exp: []byte{0xde, 0xef, 0x1, 0xd1}},
		{name: "SUB/dst=R30/0x7fff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 32767}, exp: []byte{0xfb, 0xff, 0x8f, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffff8001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -32767}, exp: []byte{0xdb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7fffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfb, 0x7b, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfb, 0x87, 0x61, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfb, 0x7f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfb, 0x83, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x4002", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 16386}, exp: []byte{0x5b, 0x0, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffffbffe", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -16386}, exp: []byte{0x3b, 0x0, 0x88, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff0000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfb, 0xff, 0xbf, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff0001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294901761}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff0000ffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294901761}, exp: []byte{0xfb, 0xff, 0xbf, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xf00000f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 251658255}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x1b, 0xe0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffff0fffff1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -251658255}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xfb, 0x1f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7ffe", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 32766}, exp: []byte{0xdb, 0xff, 0x8f, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffff8002", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -32766}, exp: []byte{0xbb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7ffffffe", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 2147483646}, exp: []byte{0xfb, 0x77, 0x7f, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff80000002", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -2147483646}, exp: []byte{0xbb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xb0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffe", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294967294}, exp: []byte{0xfb, 0x7b, 0x7f, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff00000002", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294967294}, exp: []byte{0xbb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x4001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 16385}, exp: []byte{0x3b, 0x0, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffffbfff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -16385}, exp: []byte{0x1b, 0x0, 0x88, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffeffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294901759}, exp: []byte{0xfb, 0xff, 0x9f, 0xd2, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff00010001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294901759}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff0000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfb, 0xff, 0xbf, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xf00000e", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 251658254}, exp: []byte{0xdb, 0x1, 0x80, 0xd2, 0x1b, 0xe0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffff0fffff2", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -251658254}, exp: []byte{0xbb, 0x1, 0x80, 0x92, 0xfb, 0x1f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x8000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 32768}, exp: []byte{0xde, 0x23, 0x40, 0xd1}},
		{name: "SUB/dst=R30/0xffffffffffff8000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -32768}, exp: []byte{0xfb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x4009", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 16393}, exp: []byte{0x3b, 0x1, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffffffbff7", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -16393}, exp: []byte{0x1b, 0x1, 0x88, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffeffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 268369919}, exp: []byte{0xfb, 0xff, 0x9f, 0xd2, 0xdb, 0xff, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffff0010001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -268369919}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffe0000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 268304384}, exp: []byte{0xdb, 0xff, 0xa1, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffff0020000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -268304384}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x5b, 0x0, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xe00000e", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 234881038}, exp: []byte{0xdb, 0x1, 0x80, 0xd2, 0x1b, 0xc0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffff1fffff2", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -234881038}, exp: []byte{0xbb, 0x1, 0x80, 0x92, 0xfb, 0x3f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x80010000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3b, 0x0, 0xb0, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0xfb, 0xff, 0xaf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x10002", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 65538}, exp: []byte{0xde, 0xb, 0x0, 0xd1, 0xde, 0x43, 0x40, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffefffe", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -65538}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x100000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294967296}, exp: []byte{0x3b, 0x0, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff00000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294967296}, exp: []byte{0xfb, 0x7f, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x400000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 17179869184}, exp: []byte{0x9b, 0x0, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffc00000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -17179869184}, exp: []byte{0xfb, 0x77, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x10000000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1099511627776}, exp: []byte{0x1b, 0x20, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffff0000000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1099511627776}, exp: []byte{0xfb, 0x5f, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x100000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294967297}, exp: []byte{0xfb, 0x3, 0x0, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffeffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294967297}, exp: []byte{0x3b, 0x0, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x400000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 17179869185}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x9b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffbffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -17179869185}, exp: []byte{0x9b, 0x0, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x10000000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1099511627777}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x20, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffeffffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1099511627777}, exp: []byte{0x1b, 0x20, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfb, 0x7f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfb, 0x83, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x3ffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 17179869183}, exp: []byte{0xfb, 0x87, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffc00000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -17179869183}, exp: []byte{0xfb, 0x7b, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1099511627775}, exp: []byte{0xfb, 0x9f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffff0000000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1099511627775}, exp: []byte{0xfb, 0x63, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x10000000f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294967311}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x3b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffefffffff1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294967311}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xdb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x40000000f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 17179869199}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x9b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffbfffffff1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -17179869199}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0x7b, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x1000000000f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1099511627791}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x1b, 0x20, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffefffffffff1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1099511627791}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xfb, 0xdf, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffff1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 4294967281}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff0000000f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -4294967281}, exp: []byte{0xfb, 0x8f, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x3fffffff1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 17179869169}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0x7b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffc0000000f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -17179869169}, exp: []byte{0xfb, 0x87, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xfffffffff1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1099511627761}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xfb, 0x1f, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffff000000000f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1099511627761}, exp: []byte{0xfb, 0x6f, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7fffffffffffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 9223372036854775807}, exp: []byte{0x1b, 0x0, 0xf0, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x8000000000000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -9223372036854775807}, exp: []byte{0xfb, 0x7, 0x41, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1b, 0x0, 0xf0, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1b, 0x0, 0xf0, 0xd2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x40000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x0, 0xa8, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1b, 0x0, 0xa8, 0x92, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7000000010000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 8070450532516364288}, exp: []byte{0x1b, 0x0, 0xa2, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x8ffffffff0000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -8070450532516364288}, exp: []byte{0x1b, 0x0, 0xbe, 0xd2, 0xfb, 0xff, 0xdf, 0xf2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7000000100000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 8070450536542896128}, exp: []byte{0x3b, 0x0, 0xc0, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x8fffffff00000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -8070450536542896128}, exp: []byte{0xfb, 0xff, 0xdf, 0xd2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x7000100000000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 8070468124433973248}, exp: []byte{0x1b, 0x0, 0xc2, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x8ffff00000000000", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -8070468124433973248}, exp: []byte{0x1b, 0x0, 0xde, 0xd2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x154b4", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 87220}, exp: []byte{0xde, 0xd3, 0x12, 0xd1, 0xde, 0x57, 0x40, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffeab4c", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -87220}, exp: []byte{0x7b, 0x96, 0x8a, 0x92, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x40008", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 262152}, exp: []byte{0xde, 0x23, 0x0, 0xd1, 0xde, 0x3, 0x41, 0xd1}},
		{name: "SUB/dst=R30/0xfffffffffffbfff8", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -262152}, exp: []byte{0xfb, 0x0, 0x80, 0x92, 0x7b, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff0000c466361f", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -281471681677793}, exp: []byte{0xfb, 0xc3, 0x86, 0xd2, 0xdb, 0x8c, 0xb8, 0xf2, 0xfb, 0xff, 0xff, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffff3b99c9e1", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 281471681677793}, exp: []byte{0x3b, 0x3c, 0x99, 0xd2, 0x3b, 0x73, 0xa7, 0xf2, 0xfb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xc465c9ff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 3295005183}, exp: []byte{0xfb, 0x3f, 0x99, 0xd2, 0xbb, 0x8c, 0xb8, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffff3b9a3601", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -3295005183}, exp: []byte{0xdb, 0x3f, 0x99, 0x92, 0x5b, 0x73, 0xa7, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x89705f4136b4a598", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -8543223759426509416}, exp: []byte{0x1b, 0xb3, 0x94, 0xd2, 0x9b, 0xd6, 0xa6, 0xf2, 0x3b, 0xe8, 0xcb, 0xf2, 0x1b, 0x2e, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x768fa0bec94b5a68", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 8543223759426509416}, exp: []byte{0x1b, 0x4d, 0x8b, 0xd2, 0x7b, 0x29, 0xb9, 0xf2, 0xdb, 0x17, 0xd4, 0xf2, 0xfb, 0xd1, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffc4653600", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -1000000000}, exp: []byte{0xfb, 0x3f, 0x99, 0x92, 0xbb, 0x8c, 0xb8, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0x3b9aca00", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 1000000000}, exp: []byte{0x1b, 0x40, 0x99, 0xd2, 0x5b, 0x73, 0xa7, 0xf2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffff", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: 16777215}, exp: []byte{0xfb, 0x5f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUB/dst=R30/0xffffffffff000001", n: &nodeImpl{instruction: SUB, dstReg: RegR30, srcConst: -16777215}, exp: []byte{0xfb, 0xa3, 0x68, 0xb2, 0xde, 0x3, 0x1b, 0xcb}},
		{name: "SUBS/dst=R30/0x1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4095}, exp: []byte{0xde, 0xff, 0x3f, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffff001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4095}, exp: []byte{0xdb, 0xff, 0x81, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfff000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 16773120}, exp: []byte{0xde, 0xff, 0x7f, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffff001000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -16773120}, exp: []byte{0xfb, 0xff, 0x9d, 0x92, 0x1b, 0xe0, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7b000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 503808}, exp: []byte{0xde, 0xef, 0x41, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffff85000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -503808}, exp: []byte{0xfb, 0xff, 0x95, 0x92, 0x1b, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x8001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 32769}, exp: []byte{0x3b, 0x0, 0x90, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffff7fff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -32769}, exp: []byte{0x1b, 0x0, 0x90, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x80010000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3b, 0x0, 0xb0, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0xfb, 0xff, 0xaf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x800100000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 140741783322624}, exp: []byte{0x3b, 0x0, 0xd0, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff7fff00000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -140741783322624}, exp: []byte{0xfb, 0xff, 0xcf, 0xd2, 0xfb, 0xff, 0xff, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 281474976710655}, exp: []byte{0xfb, 0xff, 0xff, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff000000000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -281474976710655}, exp: []byte{0xfb, 0x43, 0x50, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff0000ffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -281470681743361}, exp: []byte{0xfb, 0xff, 0xdf, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff00000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 281470681743361}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0xfb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfb, 0x87, 0x61, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7fffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfb, 0x7b, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff00000000ffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -281474976645121}, exp: []byte{0xfb, 0x7f, 0x50, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff0001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 281474976645121}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xe0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x100001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1048577}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x2, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffefffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1048577}, exp: []byte{0x1b, 0x2, 0xa0, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1048575}, exp: []byte{0xfb, 0x4f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffffff00001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1048575}, exp: []byte{0xfb, 0xb3, 0x6c, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x800001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 8388609}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x10, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffff7fffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -8388609}, exp: []byte{0x1b, 0x10, 0xa0, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x40000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x0, 0xa8, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1b, 0x0, 0xa8, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x2", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xb, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x3", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x11", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 17}, exp: []byte{0xde, 0x47, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x4", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4}, exp: []byte{0xde, 0x13, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffffc", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4}, exp: []byte{0x7b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x5", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 5}, exp: []byte{0xde, 0x17, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffffb", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -5}, exp: []byte{0x9b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x3", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x13", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 19}, exp: []byte{0xde, 0x4f, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffed", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -19}, exp: []byte{0x5b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x8", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 8}, exp: []byte{0xde, 0x23, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffff8", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -8}, exp: []byte{0xfb, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x9", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 9}, exp: []byte{0xde, 0x27, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffff7", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -9}, exp: []byte{0x1b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 7}, exp: []byte{0xde, 0x1f, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffff9", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -7}, exp: []byte{0xdb, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x17", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 23}, exp: []byte{0xde, 0x5f, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffe9", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -23}, exp: []byte{0xdb, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x10", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 16}, exp: []byte{0xde, 0x43, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffff0", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -16}, exp: []byte{0xfb, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x11", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 17}, exp: []byte{0xde, 0x47, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1b, 0x2, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xf", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 15}, exp: []byte{0xde, 0x3f, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffff1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -15}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x1f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0x7f, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -31}, exp: []byte{0xdb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x20", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 32}, exp: []byte{0xde, 0x83, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffe0", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -32}, exp: []byte{0xfb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x21", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 33}, exp: []byte{0xde, 0x87, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffdf", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -33}, exp: []byte{0x1b, 0x4, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x1f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0x7f, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -31}, exp: []byte{0xdb, 0x3, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x2f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 47}, exp: []byte{0xde, 0xbf, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffd1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -47}, exp: []byte{0xdb, 0x5, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x40", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 64}, exp: []byte{0xde, 0x3, 0x1, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffc0", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -64}, exp: []byte{0xfb, 0x7, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x41", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 65}, exp: []byte{0xde, 0x7, 0x1, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffbf", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -65}, exp: []byte{0x1b, 0x8, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x3f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 63}, exp: []byte{0xde, 0xff, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffc1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -63}, exp: []byte{0xdb, 0x7, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x4f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 79}, exp: []byte{0xde, 0x3f, 0x1, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffb1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -79}, exp: []byte{0xdb, 0x9, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x1ffe", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 8190}, exp: []byte{0xdb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffffe002", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -8190}, exp: []byte{0xbb, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x1ffd", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 8189}, exp: []byte{0xbb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffffe003", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -8189}, exp: []byte{0x9b, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x1fff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 8191}, exp: []byte{0xfb, 0xff, 0x83, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffffe001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -8191}, exp: []byte{0xdb, 0xff, 0x83, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x0", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 0}, exp: []byte{0xde, 0x3, 0x1f, 0xeb}},
		{name: "SUBS/dst=R30/0x1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0x7, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0x2", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xb, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x3", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 3}, exp: []byte{0xde, 0xf, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5b, 0x0, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xa", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 10}, exp: []byte{0xde, 0x2b, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3b, 0x1, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xa", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 10}, exp: []byte{0xde, 0x2b, 0x0, 0xf1}},
		{name: "SUBS/dst=R30/0x7b", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 123}, exp: []byte{0xde, 0xef, 0x1, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5b, 0xf, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5b, 0xf, 0x80, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7b", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 123}, exp: []byte{0xde, 0xef, 0x1, 0xf1}},
		{name: "SUBS/dst=R30/0x7fff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 32767}, exp: []byte{0xfb, 0xff, 0x8f, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffff8001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -32767}, exp: []byte{0xdb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7fffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfb, 0x7b, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfb, 0x87, 0x61, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfb, 0x7f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfb, 0x83, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x4002", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 16386}, exp: []byte{0x5b, 0x0, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffffbffe", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -16386}, exp: []byte{0x3b, 0x0, 0x88, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff0000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfb, 0xff, 0xbf, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff0001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294901761}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff0000ffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294901761}, exp: []byte{0xfb, 0xff, 0xbf, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xf00000f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 251658255}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x1b, 0xe0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffff0fffff1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -251658255}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xfb, 0x1f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7ffe", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 32766}, exp: []byte{0xdb, 0xff, 0x8f, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffff8002", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -32766}, exp: []byte{0xbb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7ffffffe", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 2147483646}, exp: []byte{0xfb, 0x77, 0x7f, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff80000002", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -2147483646}, exp: []byte{0xbb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xb0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffe", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294967294}, exp: []byte{0xfb, 0x7b, 0x7f, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff00000002", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294967294}, exp: []byte{0xbb, 0xff, 0x9f, 0x92, 0x1b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x4001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 16385}, exp: []byte{0x3b, 0x0, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffffbfff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -16385}, exp: []byte{0x1b, 0x0, 0x88, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffeffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294901759}, exp: []byte{0xfb, 0xff, 0x9f, 0xd2, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff00010001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294901759}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff0000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfb, 0xff, 0xbf, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xf00000e", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 251658254}, exp: []byte{0xdb, 0x1, 0x80, 0xd2, 0x1b, 0xe0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffff0fffff2", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -251658254}, exp: []byte{0xbb, 0x1, 0x80, 0x92, 0xfb, 0x1f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x8000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 32768}, exp: []byte{0xde, 0x23, 0x40, 0xf1}},
		{name: "SUBS/dst=R30/0xffffffffffff8000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -32768}, exp: []byte{0xfb, 0xff, 0x8f, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x4009", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 16393}, exp: []byte{0x3b, 0x1, 0x88, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffffffbff7", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -16393}, exp: []byte{0x1b, 0x1, 0x88, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffeffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 268369919}, exp: []byte{0xfb, 0xff, 0x9f, 0xd2, 0xdb, 0xff, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffff0010001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -268369919}, exp: []byte{0xdb, 0xff, 0x9f, 0x92, 0x3b, 0x0, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffe0000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 268304384}, exp: []byte{0xdb, 0xff, 0xa1, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffff0020000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -268304384}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0x5b, 0x0, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xe00000e", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 234881038}, exp: []byte{0xdb, 0x1, 0x80, 0xd2, 0x1b, 0xc0, 0xa1, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffff1fffff2", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -234881038}, exp: []byte{0xbb, 0x1, 0x80, 0x92, 0xfb, 0x3f, 0xbe, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x80010000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3b, 0x0, 0xb0, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfb, 0xff, 0x9f, 0x92, 0xfb, 0xff, 0xaf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x10002", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 65538}, exp: []byte{0x5b, 0x0, 0x80, 0xd2, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffffffefffe", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -65538}, exp: []byte{0x3b, 0x0, 0x80, 0x92, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x100000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294967296}, exp: []byte{0x3b, 0x0, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff00000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294967296}, exp: []byte{0xfb, 0x7f, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x400000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 17179869184}, exp: []byte{0x9b, 0x0, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffc00000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -17179869184}, exp: []byte{0xfb, 0x77, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x10000000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1099511627776}, exp: []byte{0x1b, 0x20, 0xc0, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffff0000000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1099511627776}, exp: []byte{0xfb, 0x5f, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x100000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294967297}, exp: []byte{0xfb, 0x3, 0x0, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffeffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294967297}, exp: []byte{0x3b, 0x0, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x400000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 17179869185}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x9b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffbffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -17179869185}, exp: []byte{0x9b, 0x0, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x10000000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1099511627777}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x20, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffeffffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1099511627777}, exp: []byte{0x1b, 0x20, 0xc0, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfb, 0x7f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfb, 0x83, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x3ffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 17179869183}, exp: []byte{0xfb, 0x87, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffc00000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -17179869183}, exp: []byte{0xfb, 0x7b, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1099511627775}, exp: []byte{0xfb, 0x9f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffff0000000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1099511627775}, exp: []byte{0xfb, 0x63, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x10000000f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294967311}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x3b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffefffffff1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294967311}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xdb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x40000000f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 17179869199}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x9b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffbfffffff1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -17179869199}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0x7b, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x1000000000f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1099511627791}, exp: []byte{0xfb, 0x1, 0x80, 0xd2, 0x1b, 0x20, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffefffffffff1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1099511627791}, exp: []byte{0xdb, 0x1, 0x80, 0x92, 0xfb, 0xdf, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffff1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 4294967281}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff0000000f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -4294967281}, exp: []byte{0xfb, 0x8f, 0x60, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x3fffffff1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 17179869169}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0x7b, 0x0, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffc0000000f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -17179869169}, exp: []byte{0xfb, 0x87, 0x5e, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffff1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1099511627761}, exp: []byte{0x3b, 0xfe, 0x9f, 0xd2, 0xfb, 0xff, 0xbf, 0xf2, 0xfb, 0x1f, 0xc0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffff000000000f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1099511627761}, exp: []byte{0xfb, 0x6f, 0x58, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7fffffffffffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 9223372036854775807}, exp: []byte{0x1b, 0x0, 0xf0, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x8000000000000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -9223372036854775807}, exp: []byte{0xfb, 0x7, 0x41, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1b, 0x0, 0xf0, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1b, 0x0, 0xf0, 0xd2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x40000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3b, 0x0, 0x80, 0xd2, 0x1b, 0x0, 0xa8, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1b, 0x0, 0xa8, 0x92, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7000000010000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 8070450532516364288}, exp: []byte{0x1b, 0x0, 0xa2, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x8ffffffff0000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -8070450532516364288}, exp: []byte{0x1b, 0x0, 0xbe, 0xd2, 0xfb, 0xff, 0xdf, 0xf2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7000000100000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 8070450536542896128}, exp: []byte{0x3b, 0x0, 0xc0, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x8fffffff00000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -8070450536542896128}, exp: []byte{0xfb, 0xff, 0xdf, 0xd2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x7000100000000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 8070468124433973248}, exp: []byte{0x1b, 0x0, 0xc2, 0xd2, 0x1b, 0x0, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x8ffff00000000000", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -8070468124433973248}, exp: []byte{0x1b, 0x0, 0xde, 0xd2, 0xfb, 0xff, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x154b4", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 87220}, exp: []byte{0x9b, 0x96, 0x8a, 0xd2, 0x3b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffffffeab4c", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -87220}, exp: []byte{0x7b, 0x96, 0x8a, 0x92, 0xdb, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x40008", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 262152}, exp: []byte{0x1b, 0x1, 0x80, 0xd2, 0x9b, 0x0, 0xa0, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xfffffffffffbfff8", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -262152}, exp: []byte{0xfb, 0x0, 0x80, 0x92, 0x7b, 0xff, 0xbf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff0000c466361f", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -281471681677793}, exp: []byte{0xfb, 0xc3, 0x86, 0xd2, 0xdb, 0x8c, 0xb8, 0xf2, 0xfb, 0xff, 0xff, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffff3b99c9e1", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 281471681677793}, exp: []byte{0x3b, 0x3c, 0x99, 0xd2, 0x3b, 0x73, 0xa7, 0xf2, 0xfb, 0xff, 0xdf, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xc465c9ff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 3295005183}, exp: []byte{0xfb, 0x3f, 0x99, 0xd2, 0xbb, 0x8c, 0xb8, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffff3b9a3601", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -3295005183}, exp: []byte{0xdb, 0x3f, 0x99, 0x92, 0x5b, 0x73, 0xa7, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x89705f4136b4a598", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -8543223759426509416}, exp: []byte{0x1b, 0xb3, 0x94, 0xd2, 0x9b, 0xd6, 0xa6, 0xf2, 0x3b, 0xe8, 0xcb, 0xf2, 0x1b, 0x2e, 0xf1, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x768fa0bec94b5a68", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 8543223759426509416}, exp: []byte{0x1b, 0x4d, 0x8b, 0xd2, 0x7b, 0x29, 0xb9, 0xf2, 0xdb, 0x17, 0xd4, 0xf2, 0xfb, 0xd1, 0xee, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffc4653600", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -1000000000}, exp: []byte{0xfb, 0x3f, 0x99, 0x92, 0xbb, 0x8c, 0xb8, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0x3b9aca00", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 1000000000}, exp: []byte{0x1b, 0x40, 0x99, 0xd2, 0x5b, 0x73, 0xa7, 0xf2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffff", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: 16777215}, exp: []byte{0xfb, 0x5f, 0x40, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "SUBS/dst=R30/0xffffffffff000001", n: &nodeImpl{instruction: SUBS, dstReg: RegR30, srcConst: -16777215}, exp: []byte{0xfb, 0xa3, 0x68, 0xb2, 0xde, 0x3, 0x1b, 0xeb}},
		{name: "MOVW/dst=R30/0x2", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 2}, exp: []byte{0xfe, 0x3, 0x1f, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x3", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 3}, exp: []byte{0xfe, 0x7, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 1}, exp: []byte{0xfe, 0x3, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x11", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 17}, exp: []byte{0x3e, 0x2, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1e, 0x2, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x4", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 4}, exp: []byte{0xfe, 0x3, 0x1e, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffffc", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -4}, exp: []byte{0x7e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x5", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 5}, exp: []byte{0xbe, 0x0, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xfffffffffffffffb", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -5}, exp: []byte{0x9e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x3", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 3}, exp: []byte{0xfe, 0x7, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x13", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 19}, exp: []byte{0x7e, 0x2, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffffed", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -19}, exp: []byte{0x5e, 0x2, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x8", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 8}, exp: []byte{0xfe, 0x3, 0x1d, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffff8", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -8}, exp: []byte{0xfe, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x9", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 9}, exp: []byte{0x3e, 0x1, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xfffffffffffffff7", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -9}, exp: []byte{0x1e, 0x1, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x7", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 7}, exp: []byte{0xfe, 0xb, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffff9", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -7}, exp: []byte{0xde, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x17", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 23}, exp: []byte{0xfe, 0x2, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffffe9", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -23}, exp: []byte{0xde, 0x2, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x10", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 16}, exp: []byte{0xfe, 0x3, 0x1c, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffff0", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -16}, exp: []byte{0xfe, 0x1, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x11", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 17}, exp: []byte{0x3e, 0x2, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1e, 0x2, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0xf", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 15}, exp: []byte{0xfe, 0xf, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffff1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -15}, exp: []byte{0xde, 0x1, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x1f", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 31}, exp: []byte{0xfe, 0x13, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -31}, exp: []byte{0xde, 0x3, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x20", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 32}, exp: []byte{0xfe, 0x3, 0x1b, 0x32}},
		{name: "MOVW/dst=R30/0xffffffffffffffe0", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -32}, exp: []byte{0xfe, 0x3, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x21", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 33}, exp: []byte{0x3e, 0x4, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffffdf", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -33}, exp: []byte{0x1e, 0x4, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x1f", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 31}, exp: []byte{0xfe, 0x13, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -31}, exp: []byte{0xde, 0x3, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x2f", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 47}, exp: []byte{0xfe, 0x5, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffffd1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -47}, exp: []byte{0xde, 0x5, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x40", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 64}, exp: []byte{0xfe, 0x3, 0x1a, 0x32}},
		{name: "MOVW/dst=R30/0xffffffffffffffc0", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -64}, exp: []byte{0xfe, 0x7, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x41", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 65}, exp: []byte{0x3e, 0x8, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffffbf", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -65}, exp: []byte{0x1e, 0x8, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x3f", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 63}, exp: []byte{0xfe, 0x17, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xffffffffffffffc1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -63}, exp: []byte{0xde, 0x7, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x4f", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 79}, exp: []byte{0xfe, 0x9, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffffb1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -79}, exp: []byte{0xde, 0x9, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x1ffe", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 8190}, exp: []byte{0xde, 0xff, 0x83, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffe002", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -8190}, exp: []byte{0xbe, 0xff, 0x83, 0x12}},
		{name: "MOVW/dst=R30/0x1ffd", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 8189}, exp: []byte{0xbe, 0xff, 0x83, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffe003", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -8189}, exp: []byte{0x9e, 0xff, 0x83, 0x12}},
		{name: "MOVW/dst=R30/0x1fff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 8191}, exp: []byte{0xfe, 0xff, 0x83, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffe001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -8191}, exp: []byte{0xde, 0xff, 0x83, 0x12}},
		{name: "MOVW/dst=R30/0x0", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 0}, exp: []byte{0xfe, 0x3, 0x1f, 0x2a}},
		{name: "MOVW/dst=R30/0x1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 1}, exp: []byte{0xfe, 0x3, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 1}, exp: []byte{0xfe, 0x3, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0x2", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 2}, exp: []byte{0xfe, 0x3, 0x1f, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x3", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 3}, exp: []byte{0xfe, 0x7, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0xa", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 10}, exp: []byte{0x5e, 0x1, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3e, 0x1, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3e, 0x1, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0xa", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 10}, exp: []byte{0x5e, 0x1, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0x7b", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 123}, exp: []byte{0x7e, 0xf, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5e, 0xf, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5e, 0xf, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x7b", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 123}, exp: []byte{0x7e, 0xf, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0x7fff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 32767}, exp: []byte{0xfe, 0xff, 0x8f, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffff8001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -32767}, exp: []byte{0xde, 0xff, 0x8f, 0x12}},
		{name: "MOVW/dst=R30/0x7fffffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0x1e, 0x0, 0xb0, 0x12}},
		{name: "MOVW/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfe, 0x87, 0x1, 0x32}},
		{name: "MOVW/dst=R30/0xffffffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0x1e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfe, 0x83, 0x0, 0x32}},
		{name: "MOVW/dst=R30/0x4002", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 16386}, exp: []byte{0x5e, 0x0, 0x88, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffbffe", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -16386}, exp: []byte{0x3e, 0x0, 0x88, 0x12}},
		{name: "MOVW/dst=R30/0xffff0000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfe, 0xff, 0xbf, 0x52}},
		{name: "MOVW/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0x3e, 0x0, 0xa0, 0x52}},
		{name: "MOVW/dst=R30/0xffff0001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 4294901761}, exp: []byte{0xde, 0xff, 0x9f, 0x12}},
		{name: "MOVW/dst=R30/0xffffffff0000ffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -4294901761}, exp: []byte{0xfe, 0xff, 0x9f, 0x52}},
		{name: "MOVW/dst=R30/0xf00000f", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 251658255}, exp: []byte{0xfe, 0x1, 0x80, 0x52, 0x1e, 0xe0, 0xa1, 0x72}},
		{name: "MOVW/dst=R30/0xfffffffff0fffff1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -251658255}, exp: []byte{0x3e, 0xfe, 0x9f, 0x52, 0xfe, 0x1f, 0xbe, 0x72}},
		{name: "MOVW/dst=R30/0x7ffe", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 32766}, exp: []byte{0xde, 0xff, 0x8f, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffff8002", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -32766}, exp: []byte{0xbe, 0xff, 0x8f, 0x12}},
		{name: "MOVW/dst=R30/0x7ffffffe", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 2147483646}, exp: []byte{0xfe, 0x77, 0x1f, 0x32}},
		{name: "MOVW/dst=R30/0xffffffff80000002", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -2147483646}, exp: []byte{0x5e, 0x0, 0x80, 0x52, 0x1e, 0x0, 0xb0, 0x72}},
		{name: "MOVW/dst=R30/0xfffffffe", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 4294967294}, exp: []byte{0x3e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0xffffffff00000002", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -4294967294}, exp: []byte{0x5e, 0x0, 0x80, 0x52}},
		{name: "MOVW/dst=R30/0x4001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 16385}, exp: []byte{0x3e, 0x0, 0x88, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffbfff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -16385}, exp: []byte{0x1e, 0x0, 0x88, 0x12}},
		{name: "MOVW/dst=R30/0xfffeffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 4294901759}, exp: []byte{0x3e, 0x0, 0xa0, 0x12}},
		{name: "MOVW/dst=R30/0xffffffff00010001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -4294901759}, exp: []byte{0x3e, 0x0, 0x80, 0x52, 0x3e, 0x0, 0xa0, 0x72}},
		{name: "MOVW/dst=R30/0xffff0000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfe, 0xff, 0xbf, 0x52}},
		{name: "MOVW/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0x3e, 0x0, 0xa0, 0x52}},
		{name: "MOVW/dst=R30/0xf00000e", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 251658254}, exp: []byte{0xde, 0x1, 0x80, 0x52, 0x1e, 0xe0, 0xa1, 0x72}},
		{name: "MOVW/dst=R30/0xfffffffff0fffff2", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -251658254}, exp: []byte{0x5e, 0xfe, 0x9f, 0x52, 0xfe, 0x1f, 0xbe, 0x72}},
		{name: "MOVW/dst=R30/0x8000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 32768}, exp: []byte{0xfe, 0x3, 0x11, 0x32}},
		{name: "MOVW/dst=R30/0xffffffffffff8000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -32768}, exp: []byte{0xfe, 0xff, 0x8f, 0x12}},
		{name: "MOVW/dst=R30/0x4009", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 16393}, exp: []byte{0x3e, 0x1, 0x88, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffffffbff7", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -16393}, exp: []byte{0x1e, 0x1, 0x88, 0x12}},
		{name: "MOVW/dst=R30/0xffeffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 268369919}, exp: []byte{0x3e, 0x0, 0xbe, 0x12}},
		{name: "MOVW/dst=R30/0xfffffffff0010001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -268369919}, exp: []byte{0x3e, 0x0, 0x80, 0x52, 0x3e, 0x0, 0xbe, 0x72}},
		{name: "MOVW/dst=R30/0xffe0000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 268304384}, exp: []byte{0xde, 0xff, 0xa1, 0x52}},
		{name: "MOVW/dst=R30/0xfffffffff0020000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -268304384}, exp: []byte{0x5e, 0x0, 0xbe, 0x52}},
		{name: "MOVW/dst=R30/0xe00000e", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 234881038}, exp: []byte{0xde, 0x1, 0x80, 0x52, 0x1e, 0xc0, 0xa1, 0x72}},
		{name: "MOVW/dst=R30/0xfffffffff1fffff2", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -234881038}, exp: []byte{0x5e, 0xfe, 0x9f, 0x52, 0xfe, 0x3f, 0xbe, 0x72}},
		{name: "MOVW/dst=R30/0x80010000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3e, 0x0, 0xb0, 0x52}},
		{name: "MOVW/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfe, 0xff, 0xaf, 0x52}},
		{name: "MOVW/dst=R30/0x10002", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 65538}, exp: []byte{0x5e, 0x0, 0x80, 0x52, 0x3e, 0x0, 0xa0, 0x72}},
		{name: "MOVW/dst=R30/0xfffffffffffefffe", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -65538}, exp: []byte{0xde, 0xff, 0x9f, 0x52, 0xde, 0xff, 0xbf, 0x72}},
		{name: "MOVW/dst=R30/0x40000000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 1073741824}, exp: []byte{0x1e, 0x0, 0xa8, 0x52}},
		{name: "MOVW/dst=R30/0xffffffffc0000000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -1073741824}, exp: []byte{0x1e, 0x0, 0xb8, 0x52}},
		{name: "MOVW/dst=R30/0x40000001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3e, 0x0, 0x80, 0x52, 0x1e, 0x0, 0xa8, 0x72}},
		{name: "MOVW/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1e, 0x0, 0xa8, 0x12}},
		{name: "MOVW/dst=R30/0x3fffffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 1073741823}, exp: []byte{0x1e, 0x0, 0xb8, 0x12}},
		{name: "MOVW/dst=R30/0xffffffffc0000001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -1073741823}, exp: []byte{0xfe, 0x8b, 0x2, 0x32}},
		{name: "MOVW/dst=R30/0x4000000f", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 1073741839}, exp: []byte{0xfe, 0x1, 0x80, 0x52, 0x1e, 0x0, 0xa8, 0x72}},
		{name: "MOVW/dst=R30/0xffffffffbffffff1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -1073741839}, exp: []byte{0x3e, 0xfe, 0x9f, 0x52, 0xfe, 0xff, 0xb7, 0x72}},
		{name: "MOVW/dst=R30/0x3ffffff1", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 1073741809}, exp: []byte{0x3e, 0xfe, 0x9f, 0x52, 0xfe, 0xff, 0xa7, 0x72}},
		{name: "MOVW/dst=R30/0xffffffffc000000f", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -1073741809}, exp: []byte{0xfe, 0x97, 0x2, 0x32}},
		{name: "MOVW/dst=R30/0x7fffffffffffffff", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 9223372036854775807}, exp: []byte{0x1e, 0x0, 0x80, 0x12}},
		{name: "MOVW/dst=R30/0x8000000000000001", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -9223372036854775807}, exp: []byte{0xfe, 0x7, 0x1, 0x32}},
		{name: "MOVW/dst=R30/0xffffffffc0000000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: -1073741824}, exp: []byte{0x1e, 0x0, 0xb8, 0x52}},
		{name: "MOVW/dst=R30/0x40000000", n: &nodeImpl{instruction: MOVW, dstReg: RegR30, srcConst: 1073741824}, exp: []byte{0x1e, 0x0, 0xa8, 0x52}},
		{name: "MOVD/dst=R30/0x1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1}, exp: []byte{0xfe, 0x3, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0xfff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4095}, exp: []byte{0xfe, 0x2f, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffff001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4095}, exp: []byte{0xde, 0xff, 0x81, 0x92}},
		{name: "MOVD/dst=R30/0xfff000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 16773120}, exp: []byte{0xfe, 0x2f, 0x74, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffff001000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -16773120}, exp: []byte{0xfe, 0xff, 0x9d, 0x92, 0x1e, 0xe0, 0xbf, 0xf2}},
		{name: "MOVD/dst=R30/0x7b000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 503808}, exp: []byte{0x1e, 0x0, 0x96, 0xd2, 0xfe, 0x0, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffffff85000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -503808}, exp: []byte{0xfe, 0xff, 0x95, 0x92, 0x1e, 0xff, 0xbf, 0xf2}},
		{name: "MOVD/dst=R30/0x8001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 32769}, exp: []byte{0x3e, 0x0, 0x90, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffff7fff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -32769}, exp: []byte{0x1e, 0x0, 0x90, 0x92}},
		{name: "MOVD/dst=R30/0x80010000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3e, 0x0, 0xb0, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfe, 0xff, 0x9f, 0x92, 0xfe, 0xff, 0xaf, 0xf2}},
		{name: "MOVD/dst=R30/0x800100000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 140741783322624}, exp: []byte{0x3e, 0x0, 0xd0, 0xd2}},
		{name: "MOVD/dst=R30/0xffff7fff00000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -140741783322624}, exp: []byte{0xfe, 0xff, 0xcf, 0xd2, 0xfe, 0xff, 0xff, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 281474976710655}, exp: []byte{0xfe, 0xff, 0xff, 0x92}},
		{name: "MOVD/dst=R30/0xffff000000000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -281474976710655}, exp: []byte{0xfe, 0x43, 0x50, 0xb2}},
		{name: "MOVD/dst=R30/0xffff0000ffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -281470681743361}, exp: []byte{0xfe, 0xff, 0xdf, 0x92}},
		{name: "MOVD/dst=R30/0xffff00000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 281470681743361}, exp: []byte{0x3e, 0x0, 0x80, 0xd2, 0xfe, 0xff, 0xdf, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfe, 0x87, 0x61, 0xb2}},
		{name: "MOVD/dst=R30/0x7fffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfe, 0x7b, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffff00000000ffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -281474976645121}, exp: []byte{0xfe, 0x7f, 0x50, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffff0001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 281474976645121}, exp: []byte{0xde, 0xff, 0x9f, 0x92, 0x1e, 0x0, 0xe0, 0xf2}},
		{name: "MOVD/dst=R30/0x100001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1048577}, exp: []byte{0x3e, 0x0, 0x80, 0xd2, 0x1e, 0x2, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffffffefffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1048577}, exp: []byte{0x1e, 0x2, 0xa0, 0x92}},
		{name: "MOVD/dst=R30/0xfffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1048575}, exp: []byte{0xfe, 0x4f, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffff00001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1048575}, exp: []byte{0xfe, 0xb3, 0x6c, 0xb2}},
		{name: "MOVD/dst=R30/0x800001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 8388609}, exp: []byte{0x3e, 0x0, 0x80, 0xd2, 0x1e, 0x10, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffffff7fffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -8388609}, exp: []byte{0x1e, 0x10, 0xa0, 0x92}},
		{name: "MOVD/dst=R30/0x40000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3e, 0x0, 0x80, 0xd2, 0x1e, 0x0, 0xa8, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1e, 0x0, 0xa8, 0x92}},
		{name: "MOVD/dst=R30/0x2", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 2}, exp: []byte{0xfe, 0x3, 0x7f, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x3", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 3}, exp: []byte{0xfe, 0x7, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1}, exp: []byte{0xfe, 0x3, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x11", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 17}, exp: []byte{0x3e, 0x2, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1e, 0x2, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x4", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4}, exp: []byte{0xfe, 0x3, 0x7e, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffffc", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4}, exp: []byte{0x7e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x5", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 5}, exp: []byte{0xbe, 0x0, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xfffffffffffffffb", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -5}, exp: []byte{0x9e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x3", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 3}, exp: []byte{0xfe, 0x7, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x13", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 19}, exp: []byte{0x7e, 0x2, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffffed", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -19}, exp: []byte{0x5e, 0x2, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x8", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 8}, exp: []byte{0xfe, 0x3, 0x7d, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffff8", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -8}, exp: []byte{0xfe, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x9", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 9}, exp: []byte{0x3e, 0x1, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xfffffffffffffff7", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -9}, exp: []byte{0x1e, 0x1, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x7", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 7}, exp: []byte{0xfe, 0xb, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffff9", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -7}, exp: []byte{0xde, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x17", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 23}, exp: []byte{0xfe, 0x2, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffffe9", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -23}, exp: []byte{0xde, 0x2, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x10", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 16}, exp: []byte{0xfe, 0x3, 0x7c, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffff0", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -16}, exp: []byte{0xfe, 0x1, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x11", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 17}, exp: []byte{0x3e, 0x2, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffffef", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -17}, exp: []byte{0x1e, 0x2, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0xf", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 15}, exp: []byte{0xfe, 0xf, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffff1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -15}, exp: []byte{0xde, 0x1, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x1f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 31}, exp: []byte{0xfe, 0x13, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -31}, exp: []byte{0xde, 0x3, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x20", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 32}, exp: []byte{0xfe, 0x3, 0x7b, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffffffffe0", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -32}, exp: []byte{0xfe, 0x3, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x21", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 33}, exp: []byte{0x3e, 0x4, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffffdf", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -33}, exp: []byte{0x1e, 0x4, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x1f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 31}, exp: []byte{0xfe, 0x13, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffffffffe1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -31}, exp: []byte{0xde, 0x3, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x2f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 47}, exp: []byte{0xfe, 0x5, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffffd1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -47}, exp: []byte{0xde, 0x5, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x40", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 64}, exp: []byte{0xfe, 0x3, 0x7a, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffffffffc0", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -64}, exp: []byte{0xfe, 0x7, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x41", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 65}, exp: []byte{0x3e, 0x8, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffffbf", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -65}, exp: []byte{0x1e, 0x8, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x3f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 63}, exp: []byte{0xfe, 0x17, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffffffffc1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -63}, exp: []byte{0xde, 0x7, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x4f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 79}, exp: []byte{0xfe, 0x9, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffffb1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -79}, exp: []byte{0xde, 0x9, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x1ffe", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 8190}, exp: []byte{0xde, 0xff, 0x83, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffe002", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -8190}, exp: []byte{0xbe, 0xff, 0x83, 0x92}},
		{name: "MOVD/dst=R30/0x1ffd", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 8189}, exp: []byte{0xbe, 0xff, 0x83, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffe003", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -8189}, exp: []byte{0x9e, 0xff, 0x83, 0x92}},
		{name: "MOVD/dst=R30/0x1fff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 8191}, exp: []byte{0xfe, 0xff, 0x83, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffe001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -8191}, exp: []byte{0xde, 0xff, 0x83, 0x92}},
		{name: "MOVD/dst=R30/0x0", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 0}, exp: []byte{0x1e, 0x0, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0x1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1}, exp: []byte{0xfe, 0x3, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0xffffffffffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1}, exp: []byte{0x1e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1}, exp: []byte{0xfe, 0x3, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0x2", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 2}, exp: []byte{0xfe, 0x3, 0x7f, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffffe", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -2}, exp: []byte{0x3e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x3", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 3}, exp: []byte{0xfe, 0x7, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffffffffffd", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -3}, exp: []byte{0x5e, 0x0, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0xa", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 10}, exp: []byte{0x5e, 0x1, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3e, 0x1, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0xfffffffffffffff6", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -10}, exp: []byte{0x3e, 0x1, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0xa", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 10}, exp: []byte{0x5e, 0x1, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0x7b", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 123}, exp: []byte{0x7e, 0xf, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5e, 0xf, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0xffffffffffffff85", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -123}, exp: []byte{0x5e, 0xf, 0x80, 0x92}},
		{name: "MOVD/dst=R30/0x7b", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 123}, exp: []byte{0x7e, 0xf, 0x80, 0xd2}},
		{name: "MOVD/dst=R30/0x7fff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 32767}, exp: []byte{0xfe, 0xff, 0x8f, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffff8001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -32767}, exp: []byte{0xde, 0xff, 0x8f, 0x92}},
		{name: "MOVD/dst=R30/0x7fffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 2147483647}, exp: []byte{0xfe, 0x7b, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffff80000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -2147483647}, exp: []byte{0xfe, 0x87, 0x61, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfe, 0x7f, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfe, 0x83, 0x60, 0xb2}},
		{name: "MOVD/dst=R30/0x4002", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 16386}, exp: []byte{0x5e, 0x0, 0x88, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffbffe", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -16386}, exp: []byte{0x3e, 0x0, 0x88, 0x92}},
		{name: "MOVD/dst=R30/0xffff0000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfe, 0xff, 0xbf, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfe, 0xff, 0x9f, 0x92, 0x3e, 0x0, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0xffff0001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294901761}, exp: []byte{0x3e, 0x0, 0x80, 0xd2, 0xfe, 0xff, 0xbf, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffff0000ffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294901761}, exp: []byte{0xfe, 0xff, 0xbf, 0x92}},
		{name: "MOVD/dst=R30/0xf00000f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 251658255}, exp: []byte{0xfe, 0x1, 0x80, 0xd2, 0x1e, 0xe0, 0xa1, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffff0fffff1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -251658255}, exp: []byte{0xde, 0x1, 0x80, 0x92, 0xfe, 0x1f, 0xbe, 0xf2}},
		{name: "MOVD/dst=R30/0x7ffe", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 32766}, exp: []byte{0xde, 0xff, 0x8f, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffff8002", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -32766}, exp: []byte{0xbe, 0xff, 0x8f, 0x92}},
		{name: "MOVD/dst=R30/0x7ffffffe", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 2147483646}, exp: []byte{0xfe, 0x77, 0x7f, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffff80000002", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -2147483646}, exp: []byte{0xbe, 0xff, 0x9f, 0x92, 0x1e, 0x0, 0xb0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffe", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294967294}, exp: []byte{0xfe, 0x7b, 0x7f, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffff00000002", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294967294}, exp: []byte{0xbe, 0xff, 0x9f, 0x92, 0x1e, 0x0, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0x4001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 16385}, exp: []byte{0x3e, 0x0, 0x88, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffbfff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -16385}, exp: []byte{0x1e, 0x0, 0x88, 0x92}},
		{name: "MOVD/dst=R30/0xfffeffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294901759}, exp: []byte{0xfe, 0xff, 0x9f, 0xd2, 0xde, 0xff, 0xbf, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffff00010001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294901759}, exp: []byte{0xde, 0xff, 0x9f, 0x92, 0x3e, 0x0, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0xffff0000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294901760}, exp: []byte{0xfe, 0xff, 0xbf, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffff00010000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294901760}, exp: []byte{0xfe, 0xff, 0x9f, 0x92, 0x3e, 0x0, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0xf00000e", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 251658254}, exp: []byte{0xde, 0x1, 0x80, 0xd2, 0x1e, 0xe0, 0xa1, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffff0fffff2", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -251658254}, exp: []byte{0xbe, 0x1, 0x80, 0x92, 0xfe, 0x1f, 0xbe, 0xf2}},
		{name: "MOVD/dst=R30/0x8000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 32768}, exp: []byte{0xfe, 0x3, 0x71, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffffff8000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -32768}, exp: []byte{0xfe, 0xff, 0x8f, 0x92}},
		{name: "MOVD/dst=R30/0x4009", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 16393}, exp: []byte{0x3e, 0x1, 0x88, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffffffffbff7", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -16393}, exp: []byte{0x1e, 0x1, 0x88, 0x92}},
		{name: "MOVD/dst=R30/0xffeffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 268369919}, exp: []byte{0xfe, 0xff, 0x9f, 0xd2, 0xde, 0xff, 0xa1, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffff0010001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -268369919}, exp: []byte{0xde, 0xff, 0x9f, 0x92, 0x3e, 0x0, 0xbe, 0xf2}},
		{name: "MOVD/dst=R30/0xffe0000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 268304384}, exp: []byte{0xde, 0xff, 0xa1, 0xd2}},
		{name: "MOVD/dst=R30/0xfffffffff0020000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -268304384}, exp: []byte{0xfe, 0xff, 0x9f, 0x92, 0x5e, 0x0, 0xbe, 0xf2}},
		{name: "MOVD/dst=R30/0xe00000e", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 234881038}, exp: []byte{0xde, 0x1, 0x80, 0xd2, 0x1e, 0xc0, 0xa1, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffff1fffff2", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -234881038}, exp: []byte{0xbe, 0x1, 0x80, 0x92, 0xfe, 0x3f, 0xbe, 0xf2}},
		{name: "MOVD/dst=R30/0x80010000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 2147549184}, exp: []byte{0x3e, 0x0, 0xb0, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffff7fff0000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -2147549184}, exp: []byte{0xfe, 0xff, 0x9f, 0x92, 0xfe, 0xff, 0xaf, 0xf2}},
		{name: "MOVD/dst=R30/0x10002", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 65538}, exp: []byte{0x5e, 0x0, 0x80, 0xd2, 0x3e, 0x0, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffffffefffe", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -65538}, exp: []byte{0x3e, 0x0, 0x80, 0x92, 0xde, 0xff, 0xbf, 0xf2}},
		{name: "MOVD/dst=R30/0x100000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294967296}, exp: []byte{0x3e, 0x0, 0xc0, 0xd2}},
		{name: "MOVD/dst=R30/0xffffffff00000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294967296}, exp: []byte{0xfe, 0x7f, 0x60, 0xb2}},
		{name: "MOVD/dst=R30/0x400000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 17179869184}, exp: []byte{0x9e, 0x0, 0xc0, 0xd2}},
		{name: "MOVD/dst=R30/0xfffffffc00000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -17179869184}, exp: []byte{0xfe, 0x77, 0x5e, 0xb2}},
		{name: "MOVD/dst=R30/0x10000000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1099511627776}, exp: []byte{0x1e, 0x20, 0xc0, 0xd2}},
		{name: "MOVD/dst=R30/0xffffff0000000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1099511627776}, exp: []byte{0xfe, 0x5f, 0x58, 0xb2}},
		{name: "MOVD/dst=R30/0x100000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294967297}, exp: []byte{0xfe, 0x3, 0x0, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffeffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294967297}, exp: []byte{0x3e, 0x0, 0xc0, 0x92}},
		{name: "MOVD/dst=R30/0x400000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 17179869185}, exp: []byte{0x3e, 0x0, 0x80, 0xd2, 0x9e, 0x0, 0xc0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffbffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -17179869185}, exp: []byte{0x9e, 0x0, 0xc0, 0x92}},
		{name: "MOVD/dst=R30/0x10000000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1099511627777}, exp: []byte{0x3e, 0x0, 0x80, 0xd2, 0x1e, 0x20, 0xc0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffeffffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1099511627777}, exp: []byte{0x1e, 0x20, 0xc0, 0x92}},
		{name: "MOVD/dst=R30/0xffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294967295}, exp: []byte{0xfe, 0x7f, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffff00000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294967295}, exp: []byte{0xfe, 0x83, 0x60, 0xb2}},
		{name: "MOVD/dst=R30/0x3ffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 17179869183}, exp: []byte{0xfe, 0x87, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffc00000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -17179869183}, exp: []byte{0xfe, 0x7b, 0x5e, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1099511627775}, exp: []byte{0xfe, 0x9f, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffff0000000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1099511627775}, exp: []byte{0xfe, 0x63, 0x58, 0xb2}},
		{name: "MOVD/dst=R30/0x10000000f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294967311}, exp: []byte{0xfe, 0x1, 0x80, 0xd2, 0x3e, 0x0, 0xc0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffefffffff1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294967311}, exp: []byte{0xde, 0x1, 0x80, 0x92, 0xde, 0xff, 0xdf, 0xf2}},
		{name: "MOVD/dst=R30/0x40000000f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 17179869199}, exp: []byte{0xfe, 0x1, 0x80, 0xd2, 0x9e, 0x0, 0xc0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffbfffffff1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -17179869199}, exp: []byte{0xde, 0x1, 0x80, 0x92, 0x7e, 0xff, 0xdf, 0xf2}},
		{name: "MOVD/dst=R30/0x1000000000f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1099511627791}, exp: []byte{0xfe, 0x1, 0x80, 0xd2, 0x1e, 0x20, 0xc0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffefffffffff1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1099511627791}, exp: []byte{0xde, 0x1, 0x80, 0x92, 0xfe, 0xdf, 0xdf, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffff1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 4294967281}, exp: []byte{0x3e, 0xfe, 0x9f, 0xd2, 0xfe, 0xff, 0xbf, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffff0000000f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -4294967281}, exp: []byte{0xfe, 0x8f, 0x60, 0xb2}},
		{name: "MOVD/dst=R30/0x3fffffff1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 17179869169}, exp: []byte{0x3e, 0xfe, 0x9f, 0xd2, 0xfe, 0xff, 0xbf, 0xf2, 0x7e, 0x0, 0xc0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffc0000000f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -17179869169}, exp: []byte{0xfe, 0x87, 0x5e, 0xb2}},
		{name: "MOVD/dst=R30/0xfffffffff1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1099511627761}, exp: []byte{0x3e, 0xfe, 0x9f, 0xd2, 0xfe, 0xff, 0xbf, 0xf2, 0xfe, 0x1f, 0xc0, 0xf2}},
		{name: "MOVD/dst=R30/0xffffff000000000f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1099511627761}, exp: []byte{0xfe, 0x6f, 0x58, 0xb2}},
		{name: "MOVD/dst=R30/0x7fffffffffffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 9223372036854775807}, exp: []byte{0x1e, 0x0, 0xf0, 0x92}},
		{name: "MOVD/dst=R30/0x8000000000000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -9223372036854775807}, exp: []byte{0xfe, 0x7, 0x41, 0xb2}},
		{name: "MOVD/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1e, 0x0, 0xf0, 0xd2}},
		{name: "MOVD/dst=R30/0x8000000000000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -9223372036854775808}, exp: []byte{0x1e, 0x0, 0xf0, 0xd2}},
		{name: "MOVD/dst=R30/0x40000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1073741825}, exp: []byte{0x3e, 0x0, 0x80, 0xd2, 0x1e, 0x0, 0xa8, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffffbfffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1073741825}, exp: []byte{0x1e, 0x0, 0xa8, 0x92}},
		{name: "MOVD/dst=R30/0x7000000010000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 8070450532516364288}, exp: []byte{0x1e, 0x0, 0xa2, 0xd2, 0x1e, 0x0, 0xee, 0xf2}},
		{name: "MOVD/dst=R30/0x8ffffffff0000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -8070450532516364288}, exp: []byte{0x1e, 0x0, 0xbe, 0xd2, 0xfe, 0xff, 0xdf, 0xf2, 0xfe, 0xff, 0xf1, 0xf2}},
		{name: "MOVD/dst=R30/0x7000000100000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 8070450536542896128}, exp: []byte{0x3e, 0x0, 0xc0, 0xd2, 0x1e, 0x0, 0xee, 0xf2}},
		{name: "MOVD/dst=R30/0x8fffffff00000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -8070450536542896128}, exp: []byte{0xfe, 0xff, 0xdf, 0xd2, 0xfe, 0xff, 0xf1, 0xf2}},
		{name: "MOVD/dst=R30/0x7000100000000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 8070468124433973248}, exp: []byte{0x1e, 0x0, 0xc2, 0xd2, 0x1e, 0x0, 0xee, 0xf2}},
		{name: "MOVD/dst=R30/0x8ffff00000000000", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -8070468124433973248}, exp: []byte{0x1e, 0x0, 0xde, 0xd2, 0xfe, 0xff, 0xf1, 0xf2}},
		{name: "MOVD/dst=R30/0x154b4", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 87220}, exp: []byte{0x9e, 0x96, 0x8a, 0xd2, 0x3e, 0x0, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffffffeab4c", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -87220}, exp: []byte{0x7e, 0x96, 0x8a, 0x92, 0xde, 0xff, 0xbf, 0xf2}},
		{name: "MOVD/dst=R30/0x40008", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 262152}, exp: []byte{0x1e, 0x1, 0x80, 0xd2, 0x9e, 0x0, 0xa0, 0xf2}},
		{name: "MOVD/dst=R30/0xfffffffffffbfff8", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -262152}, exp: []byte{0xfe, 0x0, 0x80, 0x92, 0x7e, 0xff, 0xbf, 0xf2}},
		{name: "MOVD/dst=R30/0xffff0000c466361f", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -281471681677793}, exp: []byte{0xfe, 0xc3, 0x86, 0xd2, 0xde, 0x8c, 0xb8, 0xf2, 0xfe, 0xff, 0xff, 0xf2}},
		{name: "MOVD/dst=R30/0xffff3b99c9e1", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 281471681677793}, exp: []byte{0x3e, 0x3c, 0x99, 0xd2, 0x3e, 0x73, 0xa7, 0xf2, 0xfe, 0xff, 0xdf, 0xf2}},
		{name: "MOVD/dst=R30/0xc465c9ff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 3295005183}, exp: []byte{0xfe, 0x3f, 0x99, 0xd2, 0xbe, 0x8c, 0xb8, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffff3b9a3601", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -3295005183}, exp: []byte{0xde, 0x3f, 0x99, 0x92, 0x5e, 0x73, 0xa7, 0xf2}},
		{name: "MOVD/dst=R30/0x89705f4136b4a598", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -8543223759426509416}, exp: []byte{0x1e, 0xb3, 0x94, 0xd2, 0x9e, 0xd6, 0xa6, 0xf2, 0x3e, 0xe8, 0xcb, 0xf2, 0x1e, 0x2e, 0xf1, 0xf2}},
		{name: "MOVD/dst=R30/0x768fa0bec94b5a68", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 8543223759426509416}, exp: []byte{0x1e, 0x4d, 0x8b, 0xd2, 0x7e, 0x29, 0xb9, 0xf2, 0xde, 0x17, 0xd4, 0xf2, 0xfe, 0xd1, 0xee, 0xf2}},
		{name: "MOVD/dst=R30/0xffffffffc4653600", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -1000000000}, exp: []byte{0xfe, 0x3f, 0x99, 0x92, 0xbe, 0x8c, 0xb8, 0xf2}},
		{name: "MOVD/dst=R30/0x3b9aca00", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 1000000000}, exp: []byte{0x1e, 0x40, 0x99, 0xd2, 0x5e, 0x73, 0xa7, 0xf2}},
		{name: "MOVD/dst=R30/0xffffff", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: 16777215}, exp: []byte{0xfe, 0x5f, 0x40, 0xb2}},
		{name: "MOVD/dst=R30/0xffffffffff000001", n: &nodeImpl{instruction: MOVD, dstReg: RegR30, srcConst: -16777215}, exp: []byte{0xfe, 0xa3, 0x68, 0xb2}},
		{name: "LSL/dst=R30/0x1", n: &nodeImpl{instruction: LSL, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0xfb, 0x7f, 0xd3}},
		{name: "LSL/dst=R30/0x2", n: &nodeImpl{instruction: LSL, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xf7, 0x7e, 0xd3}},
		{name: "LSL/dst=R30/0x4", n: &nodeImpl{instruction: LSL, dstReg: RegR30, srcConst: 4}, exp: []byte{0xde, 0xef, 0x7c, 0xd3}},
		{name: "LSL/dst=R30/0x10", n: &nodeImpl{instruction: LSL, dstReg: RegR30, srcConst: 16}, exp: []byte{0xde, 0xbf, 0x70, 0xd3}},
		{name: "LSL/dst=R30/0x1f", n: &nodeImpl{instruction: LSL, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0x83, 0x61, 0xd3}},
		{name: "LSL/dst=R30/0x20", n: &nodeImpl{instruction: LSL, dstReg: RegR30, srcConst: 32}, exp: []byte{0xde, 0x7f, 0x60, 0xd3}},
		{name: "LSL/dst=R30/0x3f", n: &nodeImpl{instruction: LSL, dstReg: RegR30, srcConst: 63}, exp: []byte{0xde, 0x3, 0x41, 0xd3}},
		{name: "LSR/dst=R30/0x1", n: &nodeImpl{instruction: LSR, dstReg: RegR30, srcConst: 1}, exp: []byte{0xde, 0xff, 0x41, 0xd3}},
		{name: "LSR/dst=R30/0x2", n: &nodeImpl{instruction: LSR, dstReg: RegR30, srcConst: 2}, exp: []byte{0xde, 0xff, 0x42, 0xd3}},
		{name: "LSR/dst=R30/0x4", n: &nodeImpl{instruction: LSR, dstReg: RegR30, srcConst: 4}, exp: []byte{0xde, 0xff, 0x44, 0xd3}},
		{name: "LSR/dst=R30/0x10", n: &nodeImpl{instruction: LSR, dstReg: RegR30, srcConst: 16}, exp: []byte{0xde, 0xff, 0x50, 0xd3}},
		{name: "LSR/dst=R30/0x1f", n: &nodeImpl{instruction: LSR, dstReg: RegR30, srcConst: 31}, exp: []byte{0xde, 0xff, 0x5f, 0xd3}},
		{name: "LSR/dst=R30/0x20", n: &nodeImpl{instruction: LSR, dstReg: RegR30, srcConst: 32}, exp: []byte{0xde, 0xff, 0x60, 0xd3}},
		{name: "LSR/dst=R30/0x3f", n: &nodeImpl{instruction: LSR, dstReg: RegR30, srcConst: 63}, exp: []byte{0xde, 0xff, 0x7f, 0xd3}},
	}

	for _, tt := range tests {
		tc := tt
		t.Run(tc.name, func(t *testing.T) {
			a := NewAssembler(RegR27)
			err := a.encodeConstToRegister(tc.n)
			require.NoError(t, err)

			actual, err := a.Assemble()
			require.NoError(t, err)
			require.Equal(t, tc.exp, actual, hex.EncodeToString(actual))
		})
	}
}
