diff options
| author | Robert Norton | 2016-10-27 16:42:27 +0100 |
|---|---|---|
| committer | Robert Norton | 2016-10-27 16:42:38 +0100 |
| commit | 42df1991945372e63cb5c8d078e13b4163784147 (patch) | |
| tree | e8baa35dc7449f7f3a00a36436e854b0253fdf0f /mips/mips_regfp.sail | |
| parent | 5cbc35eb6d253e87185bbf247aa1e3db12d998d8 (diff) | |
add hgen for J branches
Diffstat (limited to 'mips/mips_regfp.sail')
| -rw-r--r-- | mips/mips_regfp.sail | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/mips/mips_regfp.sail b/mips/mips_regfp.sail index ca781d23..6cfa3230 100644 --- a/mips/mips_regfp.sail +++ b/mips/mips_regfp.sail @@ -355,22 +355,26 @@ function (regfps,regfps,regfps,nias,dia,instruction_kind) initial_analysis (inst case (J(offset)) -> { (* XXX actually unconditional jump *) ik := IK_cond_branch; - (* Nias := XXX *) + Dia := DIA_concrete((PC + 4)[63..28] : offset : 0b00); } case (JAL(offset)) -> { (* XXX actually unconditional jump *) ik := IK_cond_branch; oR := RFull("GPR31") :: oR; + Dia := DIA_concrete((PC + 4)[63..28] : offset : 0b00); } case (JR(rs)) -> { (* XXX actually unconditional jump *) ik := IK_cond_branch; iR := RFull(GPRs[rs]) :: iR; + Dia := DIA_reg(RFull(GPRs[rs])); } case (JALR(rs, rd)) -> { + (* XXX actually unconditional jump *) ik := IK_cond_branch; iR := RFull(GPRs[rs]) :: iR; oR := RFull("GPR31") :: oR; + Dia := DIA_reg(RFull(GPRs[rs])); } case (BEQ(rs, rd, imm, ne, likely)) -> { ik := IK_cond_branch; |
