mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	rotate instructions now handled in ZBB unit
This commit is contained in:
		
							parent
							
								
									e47cc222a6
								
							
						
					
					
						commit
						bec2905ee5
					
				@ -145,7 +145,7 @@ module alu #(parameter WIDTH=32) (
 | 
			
		||||
  end else assign ZBCResult = 0;
 | 
			
		||||
 | 
			
		||||
  if (`ZBB_SUPPORTED) begin: zbb
 | 
			
		||||
    zbb #(WIDTH) ZBB(.A(A), .B(B), .W64(W64), .ZBBSelect(ZBBSelect), .ZBBResult(ZBBResult));
 | 
			
		||||
    zbb #(WIDTH) ZBB(.A(A), .B(B), .ALUResult(ALUResult), .W64(W64), .ZBBSelect(ZBBSelect), .ZBBResult(ZBBResult));
 | 
			
		||||
  end else assign ZBBResult = 0;
 | 
			
		||||
  
 | 
			
		||||
  // Final Result B instruction select mux
 | 
			
		||||
@ -156,6 +156,7 @@ module alu #(parameter WIDTH=32) (
 | 
			
		||||
        4'b0001: Result = FullResult;
 | 
			
		||||
        4'b0010: Result = ZBCResult;
 | 
			
		||||
        4'b1000: Result = FullResult; // NOTE: We don't use ALUResult because ZBA instructions don't sign extend the MSB of the right-hand word.
 | 
			
		||||
        4'b0100: Result = ZBBResult;
 | 
			
		||||
        default: Result = ALUResult;
 | 
			
		||||
      endcase
 | 
			
		||||
  end else assign Result = ALUResult;
 | 
			
		||||
 | 
			
		||||
@ -32,6 +32,7 @@
 | 
			
		||||
 | 
			
		||||
module zbb #(parameter WIDTH=32) (
 | 
			
		||||
  input  logic [WIDTH-1:0] A, B,         // Operands
 | 
			
		||||
  input  logic [WIDTH-1:0] ALUResult,    // ALU Result
 | 
			
		||||
  input  logic             W64,          // Indicates word operation
 | 
			
		||||
  input  logic [2:0]       ZBBSelect,    // Indicates word operation
 | 
			
		||||
  output logic [WIDTH-1:0] ZBBResult);   // ZBB result
 | 
			
		||||
@ -57,6 +58,7 @@ module zbb #(parameter WIDTH=32) (
 | 
			
		||||
  //can replace with structural mux by looking at bit 4 in rs2 field
 | 
			
		||||
  always_comb begin 
 | 
			
		||||
      case (ZBBSelect)
 | 
			
		||||
      3'b111: ZBBResult = ALUResult;
 | 
			
		||||
      /*15'b0010100_101_00111: ZBBResult = OrcBResult;
 | 
			
		||||
      15'b0110100_101_11000: ZBBResult = Rev8Result;
 | 
			
		||||
      15'b0110101_101_11000: ZBBResult = Rev8Result;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user