Kaynağa Gözat

Fix LUI and AUIPC instructions

sindre-ex1
Sindre Stephansen 6 yıl önce
ebeveyn
işleme
85ecef54b2
2 değiştirilmiş dosya ile 6 ekleme ve 4 silme
  1. +4
    -2
      src/main/scala/ALU.scala
  2. +2
    -2
      src/main/scala/Decoder.scala

+ 4
- 2
src/main/scala/ALU.scala Dosyayı Görüntüle

@@ -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(


+ 2
- 2
src/main/scala/Decoder.scala Dosyayı Görüntüle

@@ -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),


Yükleniyor…
İptal
Kaydet