implement C_GET_HIGH

This commit is contained in:
Yuecheng-CAM
2024-10-20 23:17:01 +01:00
committed by Peter Rugg
parent 6ffde560b5
commit f71a3d61a9
4 changed files with 13 additions and 1 deletions

View File

@@ -186,7 +186,9 @@ Bit #(5) f5rs2_cap_CSealEntry = 5'h11;
Bit #(5) f5rs2_cap_CLoadTags = 5'h12;
// 5'h13 unused
Bit #(5) f5rs2_cap_JALR_PCC = 5'h14;
// 5'h15-5'h1f unused (5'h1f reserved for 1-reg instructions)
// 5'h15-5'h16 unused
Bit #(5) f5rs2_cap_CGetHigh = 5'h17;
// 5'h18-5'h1f unused (5'h1f reserved for 1-reg instructions)
// ================================================================
// f7_cap_{Load, Store} opcode subdivision

View File

@@ -1327,6 +1327,13 @@ function DecodeResult decode(Instruction inst, Bool cap_mode);
regs.src1 = Valid(tagged Gpr rs1);
dInst.capFunc = CapInspect (GetType);
end
f5rs2_cap_CGetHigh: begin
legalInst = True;
dInst.iType = Cap;
regs.dst = Valid(tagged Gpr rd);
regs.src1 = Valid(tagged Gpr rs1);
dInst.capFunc = CapInspect (GetHigh);
end
f5rs2_cap_CLoadTags: begin
legalInst = True;
dInst.iType = Ld;

View File

@@ -308,6 +308,8 @@ function Data capInspect(CapPipe a, CapPipe b, CapInspectFunc func);
zeroExtend(getFlags(a));
tagged GetPerm :
zeroExtend(getPerms(a));
tagged GetHigh :
zeroExtend(tpl_2(toMem(a))[127:64]);
tagged GetType :
tpl_1(extractType(a));
tagged ToPtr :

View File

@@ -363,6 +363,7 @@ typedef union tagged {
void GetFlags;
void GetPerm;
void GetType;
void GetHigh;
void ToPtr;
} CapInspectFunc deriving(Bits, Eq, FShow);