From 85ecef54b2b4ec1f448633f61e6c38b8efdaa278 Mon Sep 17 00:00:00 2001 From: Sindre Stephansen Date: Wed, 16 Oct 2019 23:37:10 +0200 Subject: [PATCH] Fix LUI and AUIPC instructions --- src/main/scala/ALU.scala | 6 ++++-- src/main/scala/Decoder.scala | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/scala/ALU.scala b/src/main/scala/ALU.scala index c8c29c4..d802b98 100644 --- a/src/main/scala/ALU.scala +++ b/src/main/scala/ALU.scala @@ -34,8 +34,10 @@ class ALU extends Module { ALUOps.COPY_A -> (data1U), ALUOps.COPY_B -> (data2U), ALUOps.ADDR -> ((data1S + data2S) & 0xFFFFFFFE.S).asUInt, - ALUOps.LUI -> (data2U << 12.U).asUInt, - ALUOps.AUIPC -> (data1U + (data2U << 12.U)), + // These two are a remenant from an older version. I could use COPY_B and ADD instead. + // But they don't do any harm, and it's more work to removing them + ALUOps.LUI -> data2U, + ALUOps.AUIPC -> (data1U + data2U), ) io.result := MuxLookup( diff --git a/src/main/scala/Decoder.scala b/src/main/scala/Decoder.scala index 2e93759..4d62546 100644 --- a/src/main/scala/Decoder.scala +++ b/src/main/scala/Decoder.scala @@ -57,8 +57,8 @@ class Decoder() extends Module { BGE -> List(N, N, N, N, Y, Y, N, branchType.gte, BTYPE, ALUOps.ADD), BGEU -> List(N, N, N, N, Y, Y, N, branchType.gteu, BTYPE, ALUOps.ADD), - LUI -> List(N, Y, N, N, Y, N, N, branchType.DC, ImmFormat.DC, ALUOps.LUI), - AUIPC -> List(N, Y, N, N, Y, N, N, branchType.DC, ImmFormat.DC, ALUOps.AUIPC), + LUI -> List(N, Y, N, N, Y, N, N, branchType.DC, UTYPE, ALUOps.LUI), + AUIPC -> List(N, Y, N, N, Y, N, N, branchType.DC, UTYPE, ALUOps.AUIPC), ADD -> List(N, Y, N, N, N, N, N, branchType.DC, ImmFormat.DC, ALUOps.ADD), ADDI -> List(N, Y, N, N, Y, N, N, branchType.DC, ITYPE, ALUOps.ADD),