#include <asm/code-patching.h>
 #include <asm/inst.h>
 
-#define IMM_L(i)               ((uintptr_t)(i) & 0xffff)
-#define IMM_DS(i)              ((uintptr_t)(i) & 0xfffc)
-
-/*
- * Defined with TEST_ prefix so it does not conflict with other
- * definitions.
- */
-#define TEST_LD(r, base, i)    ppc_inst(PPC_INST_LD | ___PPC_RT(r) |           \
-                                       ___PPC_RA(base) | IMM_DS(i))
-#define TEST_LWZ(r, base, i)   ppc_inst(PPC_INST_LWZ | ___PPC_RT(r) |          \
-                                       ___PPC_RA(base) | IMM_L(i))
-#define TEST_LWZX(t, a, b)     ppc_inst(PPC_INST_LWZX | ___PPC_RT(t) |         \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_STD(r, base, i)   ppc_inst(PPC_INST_STD | ___PPC_RS(r) |          \
-                                       ___PPC_RA(base) | IMM_DS(i))
-#define TEST_LDARX(t, a, b, eh)        ppc_inst(PPC_INST_LDARX | ___PPC_RT(t) |        \
-                                       ___PPC_RA(a) | ___PPC_RB(b) |   \
-                                       __PPC_EH(eh))
-#define TEST_STDCX(s, a, b)    ppc_inst(PPC_INST_STDCX | ___PPC_RS(s) |        \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_LFSX(t, a, b)     ppc_inst(PPC_INST_LFSX | ___PPC_RT(t) |         \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_STFSX(s, a, b)    ppc_inst(PPC_INST_STFSX | ___PPC_RS(s) |        \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_LFDX(t, a, b)     ppc_inst(PPC_INST_LFDX | ___PPC_RT(t) |         \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_STFDX(s, a, b)    ppc_inst(PPC_INST_STFDX | ___PPC_RS(s) |        \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_LVX(t, a, b)      ppc_inst(PPC_INST_LVX | ___PPC_RT(t) |          \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_STVX(s, a, b)     ppc_inst(PPC_INST_STVX | ___PPC_RS(s) |         \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_LXVD2X(s, a, b)   ppc_inst(PPC_INST_LXVD2X | VSX_XX1((s), R##a, R##b))
-#define TEST_STXVD2X(s, a, b)  ppc_inst(PPC_INST_STXVD2X | VSX_XX1((s), R##a, R##b))
-#define TEST_ADD(t, a, b)      ppc_inst(PPC_INST_ADD | ___PPC_RT(t) |          \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_ADD_DOT(t, a, b)  ppc_inst(PPC_INST_ADD | ___PPC_RT(t) |          \
-                                       ___PPC_RA(a) | ___PPC_RB(b) | 0x1)
-#define TEST_ADDC(t, a, b)     ppc_inst(PPC_INST_ADDC | ___PPC_RT(t) |         \
-                                       ___PPC_RA(a) | ___PPC_RB(b))
-#define TEST_ADDC_DOT(t, a, b) ppc_inst(PPC_INST_ADDC | ___PPC_RT(t) |         \
-                                       ___PPC_RA(a) | ___PPC_RB(b) | 0x1)
-
 #define MAX_SUBTESTS   16
 
 #define IGNORE_GPR(n)  (0x1UL << (n))
        regs.gpr[3] = (unsigned long) &a;
 
        /* ld r5, 0(r3) */
-       stepped = emulate_step(®s, TEST_LD(5, 3, 0));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_LD(5, 3, 0)));
 
        if (stepped == 1 && regs.gpr[5] == a)
                show_result("ld", "PASS");
        regs.gpr[3] = (unsigned long) &a;
 
        /* lwz r5, 0(r3) */
-       stepped = emulate_step(®s, TEST_LWZ(5, 3, 0));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_LWZ(5, 3, 0)));
 
        if (stepped == 1 && regs.gpr[5] == a)
                show_result("lwz", "PASS");
        regs.gpr[5] = 0x8765;
 
        /* lwzx r5, r3, r4 */
-       stepped = emulate_step(®s, TEST_LWZX(5, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_LWZX(5, 3, 4)));
        if (stepped == 1 && regs.gpr[5] == a[2])
                show_result("lwzx", "PASS");
        else
        regs.gpr[5] = 0x5678;
 
        /* std r5, 0(r3) */
-       stepped = emulate_step(®s, TEST_STD(5, 3, 0));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_STD(5, 3, 0)));
        if (stepped == 1 && regs.gpr[5] == a)
                show_result("std", "PASS");
        else
        regs.gpr[5] = 0x5678;
 
        /* ldarx r5, r3, r4, 0 */
-       stepped = emulate_step(®s, TEST_LDARX(5, 3, 4, 0));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_LDARX(5, 3, 4, 0)));
 
        /*
         * Don't touch 'a' here. Touching 'a' can do Load/store
        regs.gpr[5] = 0x9ABC;
 
        /* stdcx. r5, r3, r4 */
-       stepped = emulate_step(®s, TEST_STDCX(5, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_STDCX(5, 3, 4)));
 
        /*
         * Two possible scenarios that indicates successful emulation
        regs.gpr[4] = 0;
 
        /* lfsx frt10, r3, r4 */
-       stepped = emulate_step(®s, TEST_LFSX(10, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_LFSX(10, 3, 4)));
 
        if (stepped == 1)
                show_result("lfsx", "PASS");
        c.a = 678.91;
 
        /* stfsx frs10, r3, r4 */
-       stepped = emulate_step(®s, TEST_STFSX(10, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_STFSX(10, 3, 4)));
 
        if (stepped == 1 && c.b == cached_b)
                show_result("stfsx", "PASS");
        regs.gpr[4] = 0;
 
        /* lfdx frt10, r3, r4 */
-       stepped = emulate_step(®s, TEST_LFDX(10, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_LFDX(10, 3, 4)));
 
        if (stepped == 1)
                show_result("lfdx", "PASS");
        c.a = 987654.32;
 
        /* stfdx frs10, r3, r4 */
-       stepped = emulate_step(®s, TEST_STFDX(10, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_STFDX(10, 3, 4)));
 
        if (stepped == 1 && c.b == cached_b)
                show_result("stfdx", "PASS");
        regs.gpr[4] = 0;
 
        /* lvx vrt10, r3, r4 */
-       stepped = emulate_step(®s, TEST_LVX(10, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_LVX(10, 3, 4)));
 
        if (stepped == 1)
                show_result("lvx", "PASS");
        c.b[3] = 498532;
 
        /* stvx vrs10, r3, r4 */
-       stepped = emulate_step(®s, TEST_STVX(10, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_STVX(10, 3, 4)));
 
        if (stepped == 1 && cached_b[0] == c.b[0] && cached_b[1] == c.b[1] &&
            cached_b[2] == c.b[2] && cached_b[3] == c.b[3])
        regs.gpr[4] = 0;
 
        /* lxvd2x vsr39, r3, r4 */
-       stepped = emulate_step(®s, TEST_LXVD2X(39, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_LXVD2X(39, R3, R4)));
 
        if (stepped == 1 && cpu_has_feature(CPU_FTR_VSX)) {
                show_result("lxvd2x", "PASS");
        c.b[3] = 4;
 
        /* stxvd2x vsr39, r3, r4 */
-       stepped = emulate_step(®s, TEST_STXVD2X(39, 3, 4));
+       stepped = emulate_step(®s, ppc_inst(PPC_RAW_STXVD2X(39, R3, R4)));
 
        if (stepped == 1 && cached_b[0] == c.b[0] && cached_b[1] == c.b[1] &&
            cached_b[2] == c.b[2] && cached_b[3] == c.b[3] &&
                .subtests = {
                        {
                                .descr = "RA = LONG_MIN, RB = LONG_MIN",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN,
                                        .gpr[22] = LONG_MIN,
                        },
                        {
                                .descr = "RA = LONG_MIN, RB = LONG_MAX",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN,
                                        .gpr[22] = LONG_MAX,
                        },
                        {
                                .descr = "RA = LONG_MAX, RB = LONG_MAX",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MAX,
                                        .gpr[22] = LONG_MAX,
                        },
                        {
                                .descr = "RA = ULONG_MAX, RB = ULONG_MAX",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = ULONG_MAX,
                                        .gpr[22] = ULONG_MAX,
                        },
                        {
                                .descr = "RA = ULONG_MAX, RB = 0x1",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = ULONG_MAX,
                                        .gpr[22] = 0x1,
                        },
                        {
                                .descr = "RA = INT_MIN, RB = INT_MIN",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MIN,
                                        .gpr[22] = INT_MIN,
                        },
                        {
                                .descr = "RA = INT_MIN, RB = INT_MAX",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MIN,
                                        .gpr[22] = INT_MAX,
                        },
                        {
                                .descr = "RA = INT_MAX, RB = INT_MAX",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MAX,
                                        .gpr[22] = INT_MAX,
                        },
                        {
                                .descr = "RA = UINT_MAX, RB = UINT_MAX",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = UINT_MAX,
                                        .gpr[22] = UINT_MAX,
                        },
                        {
                                .descr = "RA = UINT_MAX, RB = 0x1",
-                               .instr = TEST_ADD(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = UINT_MAX,
                                        .gpr[22] = 0x1,
                        {
                                .descr = "RA = LONG_MIN, RB = LONG_MIN",
                                .flags = IGNORE_CCR,
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN,
                                        .gpr[22] = LONG_MIN,
                        },
                        {
                                .descr = "RA = LONG_MIN, RB = LONG_MAX",
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN,
                                        .gpr[22] = LONG_MAX,
                        {
                                .descr = "RA = LONG_MAX, RB = LONG_MAX",
                                .flags = IGNORE_CCR,
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MAX,
                                        .gpr[22] = LONG_MAX,
                        },
                        {
                                .descr = "RA = ULONG_MAX, RB = ULONG_MAX",
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = ULONG_MAX,
                                        .gpr[22] = ULONG_MAX,
                        },
                        {
                                .descr = "RA = ULONG_MAX, RB = 0x1",
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = ULONG_MAX,
                                        .gpr[22] = 0x1,
                        },
                        {
                                .descr = "RA = INT_MIN, RB = INT_MIN",
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MIN,
                                        .gpr[22] = INT_MIN,
                        },
                        {
                                .descr = "RA = INT_MIN, RB = INT_MAX",
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MIN,
                                        .gpr[22] = INT_MAX,
                        },
                        {
                                .descr = "RA = INT_MAX, RB = INT_MAX",
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MAX,
                                        .gpr[22] = INT_MAX,
                        },
                        {
                                .descr = "RA = UINT_MAX, RB = UINT_MAX",
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = UINT_MAX,
                                        .gpr[22] = UINT_MAX,
                        },
                        {
                                .descr = "RA = UINT_MAX, RB = 0x1",
-                               .instr = TEST_ADD_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADD_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = UINT_MAX,
                                        .gpr[22] = 0x1,
                .subtests = {
                        {
                                .descr = "RA = LONG_MIN, RB = LONG_MIN",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN,
                                        .gpr[22] = LONG_MIN,
                        },
                        {
                                .descr = "RA = LONG_MIN, RB = LONG_MAX",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN,
                                        .gpr[22] = LONG_MAX,
                        },
                        {
                                .descr = "RA = LONG_MAX, RB = LONG_MAX",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MAX,
                                        .gpr[22] = LONG_MAX,
                        },
                        {
                                .descr = "RA = ULONG_MAX, RB = ULONG_MAX",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = ULONG_MAX,
                                        .gpr[22] = ULONG_MAX,
                        },
                        {
                                .descr = "RA = ULONG_MAX, RB = 0x1",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = ULONG_MAX,
                                        .gpr[22] = 0x1,
                        },
                        {
                                .descr = "RA = INT_MIN, RB = INT_MIN",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MIN,
                                        .gpr[22] = INT_MIN,
                        },
                        {
                                .descr = "RA = INT_MIN, RB = INT_MAX",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MIN,
                                        .gpr[22] = INT_MAX,
                        },
                        {
                                .descr = "RA = INT_MAX, RB = INT_MAX",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MAX,
                                        .gpr[22] = INT_MAX,
                        },
                        {
                                .descr = "RA = UINT_MAX, RB = UINT_MAX",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = UINT_MAX,
                                        .gpr[22] = UINT_MAX,
                        },
                        {
                                .descr = "RA = UINT_MAX, RB = 0x1",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = UINT_MAX,
                                        .gpr[22] = 0x1,
                        },
                        {
                                .descr = "RA = LONG_MIN | INT_MIN, RB = LONG_MIN | INT_MIN",
-                               .instr = TEST_ADDC(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN | (uint)INT_MIN,
                                        .gpr[22] = LONG_MIN | (uint)INT_MIN,
                        {
                                .descr = "RA = LONG_MIN, RB = LONG_MIN",
                                .flags = IGNORE_CCR,
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN,
                                        .gpr[22] = LONG_MIN,
                        },
                        {
                                .descr = "RA = LONG_MIN, RB = LONG_MAX",
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN,
                                        .gpr[22] = LONG_MAX,
                        {
                                .descr = "RA = LONG_MAX, RB = LONG_MAX",
                                .flags = IGNORE_CCR,
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MAX,
                                        .gpr[22] = LONG_MAX,
                        },
                        {
                                .descr = "RA = ULONG_MAX, RB = ULONG_MAX",
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = ULONG_MAX,
                                        .gpr[22] = ULONG_MAX,
                        },
                        {
                                .descr = "RA = ULONG_MAX, RB = 0x1",
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = ULONG_MAX,
                                        .gpr[22] = 0x1,
                        },
                        {
                                .descr = "RA = INT_MIN, RB = INT_MIN",
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MIN,
                                        .gpr[22] = INT_MIN,
                        },
                        {
                                .descr = "RA = INT_MIN, RB = INT_MAX",
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MIN,
                                        .gpr[22] = INT_MAX,
                        },
                        {
                                .descr = "RA = INT_MAX, RB = INT_MAX",
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = INT_MAX,
                                        .gpr[22] = INT_MAX,
                        },
                        {
                                .descr = "RA = UINT_MAX, RB = UINT_MAX",
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = UINT_MAX,
                                        .gpr[22] = UINT_MAX,
                        },
                        {
                                .descr = "RA = UINT_MAX, RB = 0x1",
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = UINT_MAX,
                                        .gpr[22] = 0x1,
                        },
                        {
                                .descr = "RA = LONG_MIN | INT_MIN, RB = LONG_MIN | INT_MIN",
-                               .instr = TEST_ADDC_DOT(20, 21, 22),
+                               .instr = ppc_inst(PPC_RAW_ADDC_DOT(20, 21, 22)),
                                .regs = {
                                        .gpr[21] = LONG_MIN | (uint)INT_MIN,
                                        .gpr[22] = LONG_MIN | (uint)INT_MIN,