implement C_GET_HIGH
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 :
|
||||
|
||||
@@ -363,6 +363,7 @@ typedef union tagged {
|
||||
void GetFlags;
|
||||
void GetPerm;
|
||||
void GetType;
|
||||
void GetHigh;
|
||||
void ToPtr;
|
||||
} CapInspectFunc deriving(Bits, Eq, FShow);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user