Andrew Waterman
94dc73b7f1
[xcc,opcodes,pk,sim] cleanup to FP ISA
- Added 5th rounding mode
- Removed MFCR/MTCR in favor of MFFSR/MTFSR (it was the only CR...)
- merged MTF.D with MTFLH.D; operation depends on RV32/RV64 mode
- made MFFL.D and MFFH.D illegal in RV64
16 years ago
Andrew Waterman
ada2fe414b
[sim] added nearest/ties to max magnitude rounding mode
16 years ago
Andrew Waterman
dc1aa62411
[sim] changed divide-by-0 semantics
now it always gives -1, no matter the signedness.
16 years ago
Andrew Waterman
76ee8711f8
[sim,opcodes] add mulhsu instruction
16 years ago
Andrew Waterman
5bae2bf372
[opcodes,pk,sim,xcc] great renumbering of 2011, part deux
16 years ago
Andrew Waterman
f0063c2e8b
[sim, pk, xcc, opcodes] great instruction renaming of 2011
16 years ago
Andrew Waterman
21ce327f5d
[opcodes, sim, xcc] made *w insns illegal in RV32
now generic variants behave differently in RV32 and RV64.
16 years ago
Andrew Waterman
5ddec097b8
[opcodes, pk, sim, xcc] removed nor, normalized macros to addi
16 years ago
Andrew Waterman
db6af47aa9
[sim] fix jalr bug
16 years ago
Yunsup Lee
1313050769
[opcodes,pk,sim,xcc] flip fields to favor little endian
16 years ago
Andrew Waterman
0ea058a5a8
[sim] fixed some compiler warnings
16 years ago
Andrew Waterman
53e36319bc
[sim] cleaned up handling of link register
16 years ago
Andrew Waterman
3ebbeba6d5
[sim] handle integer division overflow
Behavior is now same as GCC's optimizer. Previously, we just crashed :)
16 years ago
Andrew Waterman
259d20a35d
[opcodes, pk, sim, xcc] Tweaked FP encoding
16 years ago
Andrew Waterman
6d443095f9
[opcodes] generate latex and verilog correctly
16 years ago
Andrew Waterman
e59cf7ebfe
[pk] various PK cleanups/speedups
16 years ago
Andrew Waterman
7471eee0ba
[xcc, sim, pk, opcodes] new instruction encoding!
16 years ago
Andrew Waterman
3f144b12ed
[xcc, sim, pk] link register is now x1
16 years ago
Andrew Waterman
68f81d8f48
[opcodes, pk, sim, xcc] made jumps shorter and PC-relative
16 years ago
Andrew Waterman
63844a7558
[sim] removed unnecessary trap in mfcr instruction
16 years ago
Andrew Waterman
5f0b1c3e7b
[sim,xcc] fixed minor bugs related to tp/cr29
16 years ago
Yunsup Lee
78bc7d9885
[pk,sim,xcc] get rid of at register, introduce tp register
16 years ago
Andrew Waterman
2c9a832352
[sim,xcc,pk,opcodes] static rounding modes for FP insns
Now, you can either use the RM in the FSR or specify it in the insn.
(Except for FP->int; no dynamic for that.)
16 years ago
Andrew Waterman
8456c1e923
[pk, sim] added FPU emulation support to proxy kernel
16 years ago
Andrew Waterman
ab928baadb
[sim] made softfloat files C instead of C++
16 years ago
Andrew Waterman
d3cb781e16
[sim] added writeback tracing
16 years ago
Andrew Waterman
9222fb8ab8
[xcc] modified opcodes for better FP decode mapping
16 years ago
Andrew Waterman
9817b7be3d
[opcodes] added code field back to syscall/break
16 years ago
Andrew Waterman
2d58d46c89
[xcc] removed CEXC field from FSR
16 years ago
Andrew Waterman
a359d7b81a
[xcc,sim] eliminated vectored traps
now, the evec register holds the address that all traps vector to,
and the cause register is set with the trap number.
16 years ago
Andrew Waterman
fcdd030cbe
[sim, xcc] changed cvt/trunc to use GPRs for int args
this way, we don't have to futz with storing integers in recoded
floating-point registers. too bad we lose some decoupling.
16 years ago
Andrew Waterman
04fa9f8603
[xcc, sim] mff now uses rs2 for data
this is symmetric with fp stores, so we only need one decoding pipe
16 years ago
Andrew Waterman
68ddbd26c3
[opcodes, sim, xcc] added mffl.d instruction
...to be used instead of mff.s when doing int -> DP FP moves on a 32-bit cpu
16 years ago
Andrew Waterman
ee7cb7243e
[xcc, sim] eliminated zero-extended immediates
This is a big commit because it involved rewriting gcc's algorithm for
generating constants.
16 years ago
Andrew Waterman
c28cb729f9
[sim] fixed bug in which shift operands were reversed
16 years ago
Andrew Waterman
cbefaf68c7
[xcc, sim] changed instruction format so imm12 subs for rs2
16 years ago
Andrew Waterman
1583b7a9e2
[xcc, sim] replaced ble/bleu with bge/bgeu
This will simplify control logic (since every branch has a logical inverse)
16 years ago
Andrew Waterman
19b59dd9a0
[sim] renamed sllv to sll (same for other shifts)
16 years ago
Andrew Waterman
86ab285710
[xcc, sim] moved shamt field and renamed shifts
16 years ago
Andrew Waterman
ab2da3ad68
[xcc, sim] branches now are next-PC-based, not PC-based
16 years ago
Andrew Waterman
8edc1451b2
[xcc] fixed broken 32-bit FP ABI
16 years ago
Andrew Waterman
9bd1c58531
[sim, xcc] Added mffh.d/mtflh.d; fixed FP ABI for 32-bit
16 years ago
Andrew Waterman
b3dac377a1
[sim, pk] cleaned up exception vectors and FP exc flags
16 years ago
Yunsup Lee
5b9b36def0
[opcodes,xcc,sim] mffh.d,mtfh.d added (broken commit)
16 years ago
Yunsup Lee
05b409f48d
[opcodes,sim,xcc] move opcodes for 3 source instructions
16 years ago
Andrew Waterman
a71855cfd6
Revert "[xcc, sim] added slei/sleui in lieu of slti/sltiu"
This reverts commit bf5406d4df625678bc6ec20ce1d48541541dba54.
We found a clever way to efficiently implement slti/sltiu despite the
reversed operands. The trick is because of the following fact:
(a < b) === !(b <= a) === !(b-1 < a)
So just turn off the carry-in when doing the subtraction for the comparison.
16 years ago
Andrew Waterman
5c88aa157b
Merge branch 'master' of /project/eecs/parlab/git/projects/riscv
Conflicts:
sim/riscv/insns/mtpcr.h
sim/riscv/processor.cc
16 years ago
Andrew Waterman
64ec648761
[pk, sim] added interrupt support to sim; added timer interrupt
16 years ago
Yunsup Lee
a9176ab510
[sim] add while to interactive_until
16 years ago
Yunsup Lee
9beab4ff43
[sim] change applink for tohost/fromhost (forgot one file)
16 years ago