Add a decode for the nop instruction
authorAnton Blanchard <anton@linux.ibm.com>
Sun, 15 Sep 2019 08:18:24 +0000 (18:18 +1000)
committerAnton Blanchard <anton@ozlabs.org>
Sun, 15 Sep 2019 08:18:24 +0000 (18:18 +1000)
We want these to go out without any GPR dependencies, so add
a specific entry in decode for them.

Signed-off-by: Anton Blanchard <anton@linux.ibm.com>
decode1.vhdl
decode_types.vhdl

index d33c4d0df1f5d8bf4cf1ae673f10a17c0a05b211..5d76537a76b7f655307b83b7ee007b0bade852bc 100644 (file)
@@ -157,6 +157,7 @@ architecture behaviour of decode1 is
                PPC_MULLW      =>       (MUL,    OP_MUL_L64,   RA,         RB,          NONE, RT,   NONE, NONE, NONE, '0', '1', '0', '0', NONE, '0', '0', '0', '0', '1', '1', RC,   '0', '1'),
                PPC_NAND       =>       (ALU,    OP_NAND,      RS,         RB,          NONE, RA,   NONE, NONE, NONE, '0', '0', '0', '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'),
                PPC_NEG        =>       (ALU,    OP_NEG,       RA,         RB,          NONE, RT,   NONE, NONE, NONE, '0', '0', '0', '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'),
+               PPC_NOP        =>       (ALU,    OP_NOP,       NONE,       NONE,        NONE, NONE, NONE, NONE, NONE, '0', '0', '0', '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'),
                PPC_NOR        =>       (ALU,    OP_NOR,       RS,         RB,          NONE, RA,   NONE, NONE, NONE, '0', '0', '0', '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'),
                PPC_OR         =>       (ALU,    OP_OR,        RS,         RB,          NONE, RA,   NONE, NONE, NONE, '0', '0', '0', '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'),
                PPC_ORC        =>       (ALU,    OP_ORC,       RS,         RB,          NONE, RA,   NONE, NONE, NONE, '0', '0', '0', '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'),
@@ -644,6 +645,10 @@ begin
                        elsif std_match(f_in.insn, "011111---------------0110011100-") then
                                report "PPC_orc";
                                ppc_insn := PPC_ORC;
+                               -- Has to be before ori
+                       elsif std_match(f_in.insn, "01100000000000000000000000000000") then
+                               report "PPC_nop";
+                               ppc_insn := PPC_NOP;
                        elsif std_match(f_in.insn, "011000--------------------------") then
                                report "PPC_ori";
                                ppc_insn := PPC_ORI;
index faf1305c7e5b90a327bfb3b288a62f02dfa5a5d7..93783033a5539703fbfbac7b486d83954a64aab4 100644 (file)
@@ -25,7 +25,7 @@ package decode_types is
                PPC_MODSD, PPC_MODSW, PPC_MODUD, PPC_MODUW, PPC_MTCRF,
                PPC_MFCTR, PPC_MTCTR, PPC_MFLR, PPC_MTLR, PPC_MTOCRF,
                PPC_MTSPR, PPC_MULHD, PPC_MULHDU, PPC_MULHW, PPC_MULHWU,
-               PPC_MULLD, PPC_MULLI, PPC_MULLW, PPC_NAND, PPC_NEG, PPC_NOR,
+               PPC_MULLD, PPC_MULLI, PPC_MULLW, PPC_NAND, PPC_NEG, PPC_NOR, PPC_NOP,
                PPC_OR, PPC_ORC, PPC_ORI, PPC_ORIS, PPC_POPCNTB, PPC_POPCNTD,
                PPC_POPCNTW, PPC_PRTYD, PPC_PRTYW, PPC_RLDCL, PPC_RLDCR,
                PPC_RLDIC, PPC_RLDICL, PPC_RLDICR, PPC_RLDIMI, PPC_RLWIMI,