| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -38,14 +38,14 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--                        op                                            in   out   A   out  in    out  len        ext                                 pipe
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						12 =>       (ALU,    OP_ADD,       RA,         CONST_SI,    NONE, RT,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- addic
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						13 =>       (ALU,    OP_ADD,       RA,         CONST_SI,    NONE, RT,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '0', '0', ONE,  '0', '1'), -- addic.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                14 =>       (ALU,    OP_ADD,       RA_OR_ZERO, CONST_SI,    NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- addi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						15 =>       (ALU,    OP_ADD,       RA_OR_ZERO, CONST_SI_HI, NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- addis
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						28 =>       (ALU,    OP_AND,       NONE,       CONST_UI,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', ONE,  '0', '1'), -- andi.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						29 =>       (ALU,    OP_AND,       NONE,       CONST_UI_HI, RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', ONE,  '0', '1'), -- andis.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                14 =>       (ALU,    OP_ADD,       RA_OR_ZERO, CONST_SI,    NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- addi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						15 =>       (ALU,    OP_ADD,       RA_OR_ZERO, CONST_SI_HI, NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- addis
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						28 =>       (ALU,    OP_AND,       NONE,       CONST_UI,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', ONE,  '0', '0'), -- andi.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						29 =>       (ALU,    OP_AND,       NONE,       CONST_UI_HI, RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', ONE,  '0', '0'), -- andis.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						18 =>       (ALU,    OP_B,         NONE,       CONST_LI,    NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '1', '1'), -- b
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						16 =>       (ALU,    OP_BC,        NONE,       CONST_BD,    NONE, NONE, '1', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '1', '1'), -- bc
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						11 =>       (ALU,    OP_CMP,       RA,         CONST_SI,    NONE, NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- cmpi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						10 =>       (ALU,    OP_CMPL,      RA,         CONST_UI,    NONE, NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- cmpli
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						11 =>       (ALU,    OP_CMP,       RA,         CONST_SI,    NONE, NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- cmpi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						10 =>       (ALU,    OP_CMPL,      RA,         CONST_UI,    NONE, NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- cmpli
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						34 =>       (LDST,   OP_LOAD,      RA_OR_ZERO, CONST_SI,    NONE, RT,   '0', '0', '0', '0', ZERO, '0', is1B, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- lbz
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						35 =>       (LDST,   OP_LOAD,      RA_OR_ZERO, CONST_SI,    NONE, RT,   '0', '0', '0', '0', ZERO, '0', is1B, '0', '0', '1', '0', '0', '0', NONE, '0', '1'), -- lbzu
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						42 =>       (LDST,   OP_LOAD,      RA_OR_ZERO, CONST_SI,    NONE, RT,   '0', '0', '0', '0', ZERO, '0', is2B, '0', '1', '0', '0', '0', '0', NONE, '0', '1'), -- lha
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -55,11 +55,11 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						32 =>       (LDST,   OP_LOAD,      RA_OR_ZERO, CONST_SI,    NONE, RT,   '0', '0', '0', '0', ZERO, '0', is4B, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- lwz
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                33 =>       (LDST,   OP_LOAD,      RA_OR_ZERO, CONST_SI,    NONE, RT,   '0', '0', '0', '0', ZERO, '0', is4B, '0', '0', '1', '0', '0', '0', NONE, '0', '1'), -- lwzu
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						 7 =>       (MUL,    OP_MUL_L64,   RA,         CONST_SI,    NONE, RT,   '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '1', NONE, '0', '1'), -- mulli
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						24 =>       (ALU,    OP_OR,        NONE,       CONST_UI,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- ori
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						25 =>       (ALU,    OP_OR,        NONE,       CONST_UI_HI, RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- oris
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						20 =>       (ALU,    OP_RLC,       RA,         CONST_SH32,  RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '1'), -- rlwimi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						21 =>       (ALU,    OP_RLC,       NONE,       CONST_SH32,  RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '1'), -- rlwinm
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						23 =>       (ALU,    OP_RLC,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '1'), -- rlwnm
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						24 =>       (ALU,    OP_OR,        NONE,       CONST_UI,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- ori
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						25 =>       (ALU,    OP_OR,        NONE,       CONST_UI_HI, RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- oris
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						20 =>       (ALU,    OP_RLC,       RA,         CONST_SH32,  RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '0'), -- rlwimi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						21 =>       (ALU,    OP_RLC,       NONE,       CONST_SH32,  RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '0'), -- rlwinm
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						23 =>       (ALU,    OP_RLC,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '0'), -- rlwnm
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						38 =>       (LDST,   OP_STORE,     RA_OR_ZERO, CONST_SI,    RS,   NONE, '0', '0', '0', '0', ZERO, '0', is1B, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- stb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						39 =>       (LDST,   OP_STORE,     RA_OR_ZERO, CONST_SI,    RS,   NONE, '0', '0', '0', '0', ZERO, '0', is1B, '0', '0', '1', '0', '0', '0', RC,   '0', '1'), -- stbu
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						44 =>       (LDST,   OP_STORE,     RA_OR_ZERO, CONST_SI,    RS,   NONE, '0', '0', '0', '0', ZERO, '0', is2B, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- sth
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -69,8 +69,8 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						 8 =>       (ALU,    OP_ADD,       RA,         CONST_SI,    NONE, RT,   '0', '0', '1', '0', ONE,  '1', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- subfic
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						 2 =>       (ALU,    OP_TDI,       RA,         CONST_SI,    NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- tdi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--PPC_TWI 3
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						26 =>       (ALU,    OP_XOR,       NONE,       CONST_UI,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- xori
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						27 =>       (ALU,    OP_XOR,       NONE,       CONST_UI_HI, RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- xoris
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						26 =>       (ALU,    OP_XOR,       NONE,       CONST_UI,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- xori
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						27 =>       (ALU,    OP_XOR,       NONE,       CONST_UI_HI, RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- xoris
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						others   => illegal_inst
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        );
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -115,16 +115,16 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					constant decode_op_30_array : op_30_subop_array_t := (
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--                 unit    internal      in1         in2          in3   out   CR   CR   inv  inv  cry   cry  ldst  BR   sgn  upd  rsrv 32b  sgn  rc    lk   sgl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--                               op                                           in   out   A   out  in    out  len        ext                                pipe
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0100#  =>       (ALU,    OP_RLC,       NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldic
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0101#  =>       (ALU,    OP_RLC,       NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldic
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000#  =>       (ALU,    OP_RLCL,      NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldicl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001#  =>       (ALU,    OP_RLCL,      NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldicl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010#  =>       (ALU,    OP_RLCR,      NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldicr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0011#  =>       (ALU,    OP_RLCR,      NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldicr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0110#  =>       (ALU,    OP_RLC,       RA,         CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldimi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111#  =>       (ALU,    OP_RLC,       RA,         CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldimi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000#  =>       (ALU,    OP_RLCL,      NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldcl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1001#  =>       (ALU,    OP_RLCR,      NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- rldcr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0100#  =>       (ALU,    OP_RLC,       NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldic
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0101#  =>       (ALU,    OP_RLC,       NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldic
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000#  =>       (ALU,    OP_RLCL,      NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldicl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001#  =>       (ALU,    OP_RLCL,      NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldicl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010#  =>       (ALU,    OP_RLCR,      NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldicr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0011#  =>       (ALU,    OP_RLCR,      NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldicr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0110#  =>       (ALU,    OP_RLC,       RA,         CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldimi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111#  =>       (ALU,    OP_RLC,       RA,         CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldimi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000#  =>       (ALU,    OP_RLCL,      NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldcl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1001#  =>       (ALU,    OP_RLCR,      NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- rldcr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						others   => illegal_inst
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        );
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -132,23 +132,23 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					constant decode_op_31_array : op_31_subop_array_t := (
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--                       unit    internal      in1         in2          in3   out   CR   CR   inv  inv  cry   cry  ldst  BR   sgn  upd  rsrv 32b  sgn  rc    lk   sgl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						--                                    op                                            in   out   A   out  in    out  len        ext                                 pipe
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0100001010#  =>       (ALU,    OP_ADD,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- add
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0100001010#  =>       (ALU,    OP_ADD,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- add
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000001010#  =>       (ALU,    OP_ADD,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- addc
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010001010#  =>       (ALU,    OP_ADD,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', CA,   '1', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- adde
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0011101010#  =>       (ALU,    OP_ADD,       RA,         CONST_M1,    NONE, RT,   '0', '0', '0', '0', CA,   '1', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- addme
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0011001010#  =>       (ALU,    OP_ADD,       RA,         NONE,        NONE, RT,   '0', '0', '0', '0', CA,   '1', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- addze
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000011100#  =>       (ALU,    OP_AND,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- and
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000111100#  =>       (ALU,    OP_AND,       NONE,       RB,          RS,   RA,   '0', '0', '1', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- andc
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000011100#  =>       (ALU,    OP_AND,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- and
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000111100#  =>       (ALU,    OP_AND,       NONE,       RB,          RS,   RA,   '0', '0', '1', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- andc
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-- 2#0011111100# bperm
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000000000#  =>       (ALU,    OP_CMP,       RA,         RB,          NONE, NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- cmp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111111100#  =>       (ALU,    OP_CMPB,      NONE,       RB,          RS,   RA,   '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- cmpb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000000000#  =>       (ALU,    OP_CMP,       RA,         RB,          NONE, NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- cmp
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111111100#  =>       (ALU,    OP_CMPB,      NONE,       RB,          RS,   RA,   '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- cmpb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-- 2#0011100000# cmpeqb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000100000#  =>       (ALU,    OP_CMPL,      RA,         RB,          NONE, NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- cmpl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000100000#  =>       (ALU,    OP_CMPL,      RA,         RB,          NONE, NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- cmpl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-- 2#0011000000# cmprb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000111010#  =>       (ALU,    OP_CNTZ,      NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- cntlzd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000011010#  =>       (ALU,    OP_CNTZ,      NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '1'), -- cntlzw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000111010#  =>       (ALU,    OP_CNTZ,      NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- cnttzd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000011010#  =>       (ALU,    OP_CNTZ,      NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '1'), -- cnttzw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000111010#  =>       (ALU,    OP_CNTZ,      NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- cntlzd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000011010#  =>       (ALU,    OP_CNTZ,      NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '0'), -- cntlzw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000111010#  =>       (ALU,    OP_CNTZ,      NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- cnttzd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000011010#  =>       (ALU,    OP_CNTZ,      NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '0'), -- cnttzw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-- 2#1011110011# darn
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001010110#  =>       (ALU,    OP_NOP,       NONE,       NONE,        NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- dcbf
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000110110#  =>       (ALU,    OP_NOP,       NONE,       NONE,        NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- dcbst
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -163,10 +163,10 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111001011#  =>       (DIV,    OP_DIV,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- divwu
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111101001#  =>       (DIV,    OP_DIV,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- divd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111101011#  =>       (DIV,    OP_DIV,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- divw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0100011100#  =>       (ALU,    OP_XOR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '1', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- eqv
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1110111010#  =>       (ALU,    OP_EXTSB,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- extsb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1110011010#  =>       (ALU,    OP_EXTSH,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- extsh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1111011010#  =>       (ALU,    OP_EXTSW,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- extsw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0100011100#  =>       (ALU,    OP_XOR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '1', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- eqv
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1110111010#  =>       (ALU,    OP_EXTSB,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- extsb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1110011010#  =>       (ALU,    OP_EXTSH,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- extsh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1111011010#  =>       (ALU,    OP_EXTSW,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- extsw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-- 2#110111101-# extswsli
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1111010110#  =>       (ALU,    OP_NOP,       NONE,       NONE,        NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- icbi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000010110#  =>       (ALU,    OP_NOP,       NONE,       NONE,        NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- icbt
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -229,7 +229,7 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0100001011#  =>       (DIV,    OP_MOD,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- moduw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100001001#  =>       (DIV,    OP_MOD,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- modsd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100001011#  =>       (DIV,    OP_MOD,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- modsw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010010000#  =>       (ALU,    OP_MTCRF,     NONE,       NONE,        RS,   NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- mtcrf/mtocrf
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010010000#  =>       (ALU,    OP_MTCRF,     NONE,       NONE,        RS,   NONE, '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- mtcrf/mtocrf
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111010011#  =>       (ALU,    OP_MTSPR,     NONE,       NONE,        RS,   NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- mtspr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001001001#  =>       (MUL,    OP_MUL_H64,   RA,         RB,          NONE, RT,   '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '1', RC,   '0', '1'), -- mulhd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000001001#  =>       (MUL,    OP_MUL_H64,   RA,         RB,          NONE, RT,   '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- mulhdu
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -242,26 +242,26 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000001011#  =>       (MUL,    OP_MUL_H32,   RA,         RB,          NONE, RT,   '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '1'), -- mulhwu
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0011101001#  =>       (MUL,    OP_MUL_L64,   RA,         RB,          NONE, RT,   '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '1', RC,   '0', '1'), -- mulld
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0011101011#  =>       (MUL,    OP_MUL_L64,   RA,         RB,          NONE, RT,   '0', '1', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '1', RC,   '0', '1'), -- mullw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111011100#  =>       (ALU,    OP_AND,       NONE,       RB,          RS,   RA,   '0', '0', '0', '1', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- nand
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001101000#  =>       (ALU,    OP_NEG,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- neg
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001111100#  =>       (ALU,    OP_OR,        NONE,       RB,          RS,   RA,   '0', '0', '0', '1', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- nor
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0110111100#  =>       (ALU,    OP_OR,        NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- or
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0110011100#  =>       (ALU,    OP_OR,        NONE,       RB,          RS,   RA,   '0', '0', '1', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- orc
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001111010#  =>       (ALU,    OP_POPCNTB,   NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- popcntb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111111010#  =>       (ALU,    OP_POPCNTD,   NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- popcntd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0101111010#  =>       (ALU,    OP_POPCNTW,   NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- popcntw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010111010#  =>       (ALU,    OP_PRTYD,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- prtyd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010011010#  =>       (ALU,    OP_PRTYW,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- prtyw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111011100#  =>       (ALU,    OP_AND,       NONE,       RB,          RS,   RA,   '0', '0', '0', '1', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- nand
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001101000#  =>       (ALU,    OP_NEG,       RA,         RB,          NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- neg
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001111100#  =>       (ALU,    OP_OR,        NONE,       RB,          RS,   RA,   '0', '0', '0', '1', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- nor
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0110111100#  =>       (ALU,    OP_OR,        NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- or
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0110011100#  =>       (ALU,    OP_OR,        NONE,       RB,          RS,   RA,   '0', '0', '1', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- orc
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0001111010#  =>       (ALU,    OP_POPCNTB,   NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- popcntb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0111111010#  =>       (ALU,    OP_POPCNTD,   NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- popcntd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0101111010#  =>       (ALU,    OP_POPCNTW,   NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- popcntw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010111010#  =>       (ALU,    OP_PRTYD,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- prtyd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010011010#  =>       (ALU,    OP_PRTYW,     NONE,       NONE,        RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0'), -- prtyw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-- 2#0010000000# setb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000011011#  =>       (ALU,    OP_SHL,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- sld
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000011000#  =>       (ALU,    OP_SHL,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '1'), -- slw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100011010#  =>       (ALU,    OP_SHR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '0', '1', RC,   '0', '1'), -- srad
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100111010#  =>       (ALU,    OP_SHR,       NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '0', '1', RC,   '0', '1'), -- sradi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100111011#  =>       (ALU,    OP_SHR,       NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '0', '1', RC,   '0', '1'), -- sradi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100011000#  =>       (ALU,    OP_SHR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '1', '1', RC,   '0', '1'), -- sraw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100111000#  =>       (ALU,    OP_SHR,       NONE,       CONST_SH32,  RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '1', '1', RC,   '0', '1'), -- srawi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000011011#  =>       (ALU,    OP_SHR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- srd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000011000#  =>       (ALU,    OP_SHR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '1'), -- srw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000011011#  =>       (ALU,    OP_SHL,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- sld
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000011000#  =>       (ALU,    OP_SHL,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '0'), -- slw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100011010#  =>       (ALU,    OP_SHR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '0', '1', RC,   '0', '0'), -- srad
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100111010#  =>       (ALU,    OP_SHR,       NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '0', '1', RC,   '0', '0'), -- sradi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100111011#  =>       (ALU,    OP_SHR,       NONE,       CONST_SH,    RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '0', '1', RC,   '0', '0'), -- sradi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100011000#  =>       (ALU,    OP_SHR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '1', '1', RC,   '0', '0'), -- sraw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1100111000#  =>       (ALU,    OP_SHR,       NONE,       CONST_SH32,  RS,   RA,   '0', '0', '0', '0', ZERO, '1', NONE, '0', '0', '0', '0', '1', '1', RC,   '0', '0'), -- srawi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000011011#  =>       (ALU,    OP_SHR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- srd
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1000011000#  =>       (ALU,    OP_SHR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '1', '0', RC,   '0', '0'), -- srw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1010110110#  =>       (LDST,   OP_STORE,     RA_OR_ZERO, RB,          RS,   NONE, '0', '0', '0', '0', ZERO, '0', is1B, '0', '0', '0', '1', '0', '0', RC,   '0', '1'), -- stbcx
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0011110111#  =>       (LDST,   OP_STORE,     RA_OR_ZERO, RB,          RS,   NONE, '0', '0', '0', '0', ZERO, '0', is1B, '0', '0', '1', '0', '0', '0', RC,   '0', '1'), -- stbux
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0011010111#  =>       (LDST,   OP_STORE,     RA_OR_ZERO, RB,          RS,   NONE, '0', '0', '0', '0', ZERO, '0', is1B, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- stbx
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -277,7 +277,7 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010010110#  =>       (LDST,   OP_STORE,     RA_OR_ZERO, RB,          RS,   NONE, '0', '0', '0', '0', ZERO, '0', is4B, '0', '0', '0', '1', '0', '0', NONE, '0', '1'), -- stwcx
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010110111#  =>       (LDST,   OP_STORE,     RA_OR_ZERO, RB,          RS,   NONE, '0', '0', '0', '0', ZERO, '0', is4B, '0', '0', '1', '0', '0', '0', NONE, '0', '1'), -- stwux
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010010111#  =>       (LDST,   OP_STORE,     RA_OR_ZERO, RB,          RS,   NONE, '0', '0', '0', '0', ZERO, '0', is4B, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- stwx
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000101000#  =>       (ALU,    OP_ADD,       RA,         RB,          NONE, RT,   '0', '0', '1', '0', ONE,  '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- subf
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000101000#  =>       (ALU,    OP_ADD,       RA,         RB,          NONE, RT,   '0', '0', '1', '0', ONE,  '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- subf
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000001000#  =>       (ALU,    OP_ADD,       RA,         RB,          NONE, RT,   '0', '0', '1', '0', ONE,  '1', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- subfc
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0010001000#  =>       (ALU,    OP_ADD,       RA,         RB,          NONE, RT,   '0', '0', '1', '0', CA,   '1', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- subfe
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0011101000#  =>       (ALU,    OP_ADD,       RA,         CONST_M1,    NONE, RT,   '0', '0', '1', '0', CA,   '1', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- subfme
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -285,7 +285,7 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#1001010110#  =>       (ALU,    OP_NOP,       NONE,       NONE,        NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- sync
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						-- 2#0001000100# td
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0000000100#  =>       (ALU,    OP_TW,        RA,         RB,          NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1'), -- tw
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0100111100#  =>       (ALU,    OP_XOR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1'), -- xor
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						2#0100111100#  =>       (ALU,    OP_XOR,       NONE,       RB,          RS,   RA,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '0'), -- xor
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						others => illegal_inst
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -309,7 +309,7 @@ architecture behaviour of decode1 is
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        --                                       unit     internal      in1         in2          in3   out   CR   CR   inv  inv  cry   cry  ldst  BR   sgn  upd  rsrv 32b  sgn  rc    lk   sgl
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        --                                                      op                                           in   out   A   out  in    out  len        ext                                 pipe
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        constant attn_instr    : decode_rom_t := (ALU,    OP_ILLEGAL,   NONE,       NONE,        NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', RC,   '0', '1');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					constant nop_instr     : decode_rom_t := (ALU,    OP_NOP,       NONE,       NONE,        NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					constant nop_instr     : decode_rom_t := (ALU,    OP_NOP,       NONE,       NONE,        NONE, NONE, '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '0');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        constant sim_cfg_instr : decode_rom_t := (ALU,    OP_SIM_CONFIG,NONE,       NONE,        NONE, RT,   '0', '0', '0', '0', ZERO, '0', NONE, '0', '0', '0', '0', '0', '0', NONE, '0', '1');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				begin
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |