riscv-isa-sim.git
13 years ago[opcodes, sim, xcc] made *w insns illegal in RV32
Andrew Waterman [Wed, 19 Jan 2011 01:51:52 +0000 (17:51 -0800)]
[opcodes, sim, xcc] made *w insns illegal in RV32

now generic variants behave differently in RV32 and RV64.

13 years ago[opcodes, pk, sim, xcc] removed nor, normalized macros to addi
Andrew Waterman [Mon, 17 Jan 2011 09:13:50 +0000 (01:13 -0800)]
[opcodes, pk, sim, xcc] removed nor, normalized macros to addi

13 years ago[sim] fix jalr bug
Andrew Waterman [Wed, 12 Jan 2011 03:02:20 +0000 (19:02 -0800)]
[sim] fix jalr bug

13 years ago[opcodes,pk,sim,xcc] flip fields to favor little endian
Yunsup Lee [Tue, 4 Jan 2011 03:12:24 +0000 (19:12 -0800)]
[opcodes,pk,sim,xcc] flip fields to favor little endian

13 years ago[sim] fixed some compiler warnings
Andrew Waterman [Mon, 27 Dec 2010 23:34:05 +0000 (15:34 -0800)]
[sim] fixed some compiler warnings

13 years ago[sim] cleaned up handling of link register
Andrew Waterman [Mon, 27 Dec 2010 22:28:45 +0000 (14:28 -0800)]
[sim] cleaned up handling of link register

13 years ago[sim] handle integer division overflow
Andrew Waterman [Thu, 11 Nov 2010 23:49:21 +0000 (15:49 -0800)]
[sim] handle integer division overflow

Behavior is now same as GCC's optimizer.  Previously, we just crashed :)

13 years ago[opcodes, pk, sim, xcc] Tweaked FP encoding
Andrew Waterman [Tue, 9 Nov 2010 23:31:00 +0000 (15:31 -0800)]
[opcodes, pk, sim, xcc] Tweaked FP encoding

13 years ago[opcodes] generate latex and verilog correctly
Andrew Waterman [Sun, 7 Nov 2010 00:44:56 +0000 (17:44 -0700)]
[opcodes] generate latex and verilog correctly

13 years ago[pk] various PK cleanups/speedups
Andrew Waterman [Fri, 5 Nov 2010 23:46:36 +0000 (16:46 -0700)]
[pk] various PK cleanups/speedups

13 years ago[xcc, sim, pk, opcodes] new instruction encoding!
Andrew Waterman [Fri, 5 Nov 2010 21:06:12 +0000 (14:06 -0700)]
[xcc, sim, pk, opcodes] new instruction encoding!

13 years ago[xcc, sim, pk] link register is now x1
Andrew Waterman [Tue, 2 Nov 2010 23:00:37 +0000 (16:00 -0700)]
[xcc, sim, pk] link register is now x1

13 years ago[opcodes, pk, sim, xcc] made jumps shorter and PC-relative
Andrew Waterman [Tue, 2 Nov 2010 19:19:52 +0000 (12:19 -0700)]
[opcodes, pk, sim, xcc] made jumps shorter and PC-relative

13 years ago[sim] removed unnecessary trap in mfcr instruction
Andrew Waterman [Tue, 26 Oct 2010 22:04:05 +0000 (15:04 -0700)]
[sim] removed unnecessary trap in mfcr instruction

13 years ago[sim,xcc] fixed minor bugs related to tp/cr29
Andrew Waterman [Tue, 26 Oct 2010 20:46:15 +0000 (13:46 -0700)]
[sim,xcc] fixed minor bugs related to tp/cr29

13 years ago[pk,sim,xcc] get rid of at register, introduce tp register
Yunsup Lee [Tue, 26 Oct 2010 09:20:44 +0000 (02:20 -0700)]
[pk,sim,xcc] get rid of at register, introduce tp register

13 years ago[sim,xcc,pk,opcodes] static rounding modes for FP insns
Andrew Waterman [Tue, 26 Oct 2010 02:41:39 +0000 (19:41 -0700)]
[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.)

13 years ago[pk, sim] added FPU emulation support to proxy kernel
Andrew Waterman [Sat, 16 Oct 2010 00:51:37 +0000 (17:51 -0700)]
[pk, sim] added FPU emulation support to proxy kernel

13 years ago[sim] made softfloat files C instead of C++
Andrew Waterman [Fri, 15 Oct 2010 23:17:53 +0000 (16:17 -0700)]
[sim] made softfloat files C instead of C++

13 years ago[sim] added writeback tracing
Andrew Waterman [Tue, 12 Oct 2010 00:16:00 +0000 (17:16 -0700)]
[sim] added writeback tracing

13 years ago[xcc] modified opcodes for better FP decode mapping
Andrew Waterman [Thu, 7 Oct 2010 07:55:14 +0000 (00:55 -0700)]
[xcc] modified opcodes for better FP decode mapping

13 years ago[opcodes] added code field back to syscall/break
Andrew Waterman [Wed, 6 Oct 2010 02:21:55 +0000 (19:21 -0700)]
[opcodes] added code field back to syscall/break

13 years ago[xcc] removed CEXC field from FSR
Andrew Waterman [Wed, 6 Oct 2010 00:35:22 +0000 (17:35 -0700)]
[xcc] removed CEXC field from FSR

13 years ago[xcc,sim] eliminated vectored traps
Andrew Waterman [Tue, 5 Oct 2010 22:08:18 +0000 (15:08 -0700)]
[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.

13 years ago[sim, xcc] changed cvt/trunc to use GPRs for int args
Andrew Waterman [Sun, 3 Oct 2010 00:45:29 +0000 (17:45 -0700)]
[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.

13 years ago[xcc, sim] mff now uses rs2 for data
Andrew Waterman [Sun, 3 Oct 2010 00:19:42 +0000 (17:19 -0700)]
[xcc, sim] mff now uses rs2 for data

this is symmetric with fp stores, so we only need one decoding pipe

13 years ago[opcodes, sim, xcc] added mffl.d instruction
Andrew Waterman [Wed, 29 Sep 2010 00:17:04 +0000 (17:17 -0700)]
[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

13 years ago[xcc, sim] eliminated zero-extended immediates
Andrew Waterman [Thu, 23 Sep 2010 20:00:01 +0000 (13:00 -0700)]
[xcc, sim] eliminated zero-extended immediates

This is a big commit because it involved rewriting gcc's algorithm for
generating constants.

13 years ago[sim] fixed bug in which shift operands were reversed
Andrew Waterman [Wed, 22 Sep 2010 21:02:28 +0000 (14:02 -0700)]
[sim] fixed bug in which shift operands were reversed

13 years ago[xcc, sim] changed instruction format so imm12 subs for rs2
Andrew Waterman [Tue, 21 Sep 2010 02:01:40 +0000 (19:01 -0700)]
[xcc, sim] changed instruction format so imm12 subs for rs2

13 years ago[xcc, sim] replaced ble/bleu with bge/bgeu
Andrew Waterman [Tue, 14 Sep 2010 01:00:08 +0000 (18:00 -0700)]
[xcc, sim] replaced ble/bleu with bge/bgeu

This will simplify control logic (since every branch has a logical inverse)

13 years ago[sim] renamed sllv to sll (same for other shifts)
Andrew Waterman [Mon, 13 Sep 2010 02:13:48 +0000 (19:13 -0700)]
[sim] renamed sllv to sll (same for other shifts)

13 years ago[xcc, sim] moved shamt field and renamed shifts
Andrew Waterman [Mon, 13 Sep 2010 01:23:36 +0000 (18:23 -0700)]
[xcc, sim] moved shamt field and renamed shifts

13 years ago[xcc, sim] branches now are next-PC-based, not PC-based
Andrew Waterman [Mon, 13 Sep 2010 00:03:47 +0000 (17:03 -0700)]
[xcc, sim] branches now are next-PC-based, not PC-based

13 years ago[xcc] fixed broken 32-bit FP ABI
Andrew Waterman [Sat, 11 Sep 2010 22:56:12 +0000 (15:56 -0700)]
[xcc] fixed broken 32-bit FP ABI

13 years ago[sim, xcc] Added mffh.d/mtflh.d; fixed FP ABI for 32-bit
Andrew Waterman [Sat, 11 Sep 2010 04:13:55 +0000 (21:13 -0700)]
[sim, xcc] Added mffh.d/mtflh.d; fixed FP ABI for 32-bit

13 years ago[sim, pk] cleaned up exception vectors and FP exc flags
Andrew Waterman [Sat, 11 Sep 2010 04:02:38 +0000 (21:02 -0700)]
[sim, pk] cleaned up exception vectors and FP exc flags

13 years ago[opcodes,xcc,sim] mffh.d,mtfh.d added (broken commit)
Yunsup Lee [Sat, 11 Sep 2010 01:08:52 +0000 (18:08 -0700)]
[opcodes,xcc,sim] mffh.d,mtfh.d added (broken commit)

13 years ago[opcodes,sim,xcc] move opcodes for 3 source instructions
Yunsup Lee [Fri, 10 Sep 2010 06:21:11 +0000 (23:21 -0700)]
[opcodes,sim,xcc] move opcodes for 3 source instructions

13 years agoRevert "[xcc, sim] added slei/sleui in lieu of slti/sltiu"
Andrew Waterman [Fri, 10 Sep 2010 00:50:10 +0000 (17:50 -0700)]
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.

13 years agoMerge branch 'master' of /project/eecs/parlab/git/projects/riscv
Andrew Waterman [Thu, 9 Sep 2010 22:41:59 +0000 (15:41 -0700)]
Merge branch 'master' of /project/eecs/parlab/git/projects/riscv

Conflicts:
sim/riscv/insns/mtpcr.h
sim/riscv/processor.cc

13 years ago[pk, sim] added interrupt support to sim; added timer interrupt
Andrew Waterman [Thu, 9 Sep 2010 22:39:40 +0000 (15:39 -0700)]
[pk, sim] added interrupt support to sim; added timer interrupt

13 years ago[sim] add while to interactive_until
Yunsup Lee [Wed, 8 Sep 2010 22:58:39 +0000 (15:58 -0700)]
[sim] add while to interactive_until

13 years ago[sim] change applink for tohost/fromhost (forgot one file)
Yunsup Lee [Wed, 8 Sep 2010 21:17:12 +0000 (14:17 -0700)]
[sim] change applink for tohost/fromhost (forgot one file)

13 years ago[sim] change applink for tohost/fromhost
Yunsup Lee [Wed, 8 Sep 2010 21:16:13 +0000 (14:16 -0700)]
[sim] change applink for tohost/fromhost

13 years ago[xcc, sim] added slei/sleui in lieu of slti/sltiu
Andrew Waterman [Tue, 7 Sep 2010 23:04:57 +0000 (16:04 -0700)]
[xcc, sim] added slei/sleui in lieu of slti/sltiu

Rationale was that since we have the datapath for rc = (ra < rb),
it's straightforward to also add rc = !(imm < rb) = (rb <= imm).

13 years ago[sim] yet another fix stdint.h __STDC_LIMIT_MACROS problem
Yunsup Lee [Tue, 7 Sep 2010 07:30:20 +0000 (00:30 -0700)]
[sim] yet another fix stdint.h __STDC_LIMIT_MACROS problem

13 years ago[sim] fix stdint.h __STDC_LIMIT_MACROS problem
Yunsup Lee [Tue, 7 Sep 2010 07:28:19 +0000 (00:28 -0700)]
[sim] fix stdint.h __STDC_LIMIT_MACROS problem

13 years ago[sim, xcc] branches now have 2-byte-aligned displacements
Andrew Waterman [Tue, 7 Sep 2010 07:19:19 +0000 (00:19 -0700)]
[sim, xcc] branches now have 2-byte-aligned displacements

This will facilitate 16-bit instructions later on

13 years ago[sim, xcc] added PCRs to replace k0 and k1
Andrew Waterman [Tue, 7 Sep 2010 05:48:37 +0000 (22:48 -0700)]
[sim, xcc] added PCRs to replace k0 and k1

13 years ago[sim, xcc] bthread threading model exposed; insn encoding cleaned up
Andrew Waterman [Tue, 7 Sep 2010 05:22:09 +0000 (22:22 -0700)]
[sim, xcc] bthread threading model exposed; insn encoding cleaned up

13 years ago[sim] fixed bug in msub.d; added ability to print FPRs in debug mode
Andrew Waterman [Tue, 7 Sep 2010 00:06:50 +0000 (17:06 -0700)]
[sim] fixed bug in msub.d; added ability to print FPRs in debug mode

13 years ago[sim] added atomic memory operations
Andrew Waterman [Mon, 6 Sep 2010 23:04:52 +0000 (16:04 -0700)]
[sim] added atomic memory operations

13 years ago[xcc] argc/argv work for 32b programs
Andrew Waterman [Tue, 24 Aug 2010 10:13:02 +0000 (03:13 -0700)]
[xcc] argc/argv work for 32b programs

Some patch-up code runs as soon as the 32b version of crt1 begins running
that massages the pointers accordingly.

13 years ago[sim] privileged mode support for 32-bit operation
Andrew Waterman [Tue, 24 Aug 2010 09:18:23 +0000 (02:18 -0700)]
[sim] privileged mode support for 32-bit operation

13 years ago[xcc,sim] added fused multiply-add and its cousins
Andrew Waterman [Mon, 23 Aug 2010 05:13:51 +0000 (22:13 -0700)]
[xcc,sim] added fused multiply-add and its cousins

13 years ago[xcc,sim] Eliminated slori instruction
Andrew Waterman [Mon, 23 Aug 2010 04:25:59 +0000 (21:25 -0700)]
[xcc,sim] Eliminated slori instruction

the "li" macro in RISC-V assembly isn't as efficient anymore for 64b
constants, and "la" doesn't work for 64b addresses with ".set noat".
But it's worth it to remove an ugly instruction.

13 years ago[pk,fesvr] improved proxykernel build system
Andrew Waterman [Thu, 19 Aug 2010 01:24:55 +0000 (18:24 -0700)]
[pk,fesvr] improved proxykernel build system

Now uses a modified MCPPBS.  Add --host=riscv to configure path.

Front-end server now just searches PATH for riscv-pk, so just install the pk
to somewhere in your path.

13 years ago[sim] integrated SoftFloat-3 with ISA sim; removed SoftFloat-2b
Andrew Waterman [Wed, 18 Aug 2010 21:34:42 +0000 (14:34 -0700)]
[sim] integrated SoftFloat-3 with ISA sim; removed SoftFloat-2b

13 years ago[sim] specialized softfloat for riscv
Andrew Waterman [Wed, 18 Aug 2010 00:46:52 +0000 (17:46 -0700)]
[sim] specialized softfloat for riscv

13 years ago[sim] added riscv folder to softfloat
Andrew Waterman [Wed, 18 Aug 2010 00:34:14 +0000 (17:34 -0700)]
[sim] added riscv folder to softfloat

13 years ago[sim] added SoftFloat-3 source
Andrew Waterman [Wed, 18 Aug 2010 00:10:28 +0000 (17:10 -0700)]
[sim] added SoftFloat-3 source

13 years ago[xcc,sim] implement FP using softfloat
Andrew Waterman [Tue, 10 Aug 2010 03:51:44 +0000 (20:51 -0700)]
[xcc,sim] implement FP using softfloat

The intersection of the Hauser FP and MIPS FP is implemented.

13 years ago[sim] removed unused elf loader
Andrew Waterman [Tue, 10 Aug 2010 00:04:30 +0000 (17:04 -0700)]
[sim] removed unused elf loader

13 years ago[sim] added softfloat
Andrew Waterman [Mon, 9 Aug 2010 23:59:14 +0000 (16:59 -0700)]
[sim] added softfloat

13 years ago[sim,xcc] Added first few Hauser FP insns (sign-injection)
Andrew Waterman [Fri, 6 Aug 2010 00:59:34 +0000 (17:59 -0700)]
[sim,xcc] Added first few Hauser FP insns (sign-injection)

Also updated FPmove test case to test negation and moving between FP regs

13 years ago[sim] Bug fixes in shifts, plus a new test case
Andrew Waterman [Thu, 5 Aug 2010 03:28:47 +0000 (20:28 -0700)]
[sim] Bug fixes in shifts, plus a new test case

13 years ago[xcc] Removed ctc1, cfc1 instructions; added fp move test case
Andrew Waterman [Thu, 5 Aug 2010 01:31:04 +0000 (18:31 -0700)]
[xcc] Removed ctc1, cfc1 instructions; added fp move test case

13 years ago[xcc,pk,sim] Added first part of FP support
Andrew Waterman [Thu, 5 Aug 2010 00:04:24 +0000 (17:04 -0700)]
[xcc,pk,sim] Added first part of FP support

In particular, FP loads, stores, and moves now work.

13 years ago[sim,xcc] removed sll32/srl32/sra32 opcodes
Andrew Waterman [Wed, 4 Aug 2010 04:09:14 +0000 (21:09 -0700)]
[sim,xcc] removed sll32/srl32/sra32 opcodes

These instructions handled static shift amounts >= 32.  Since we have
a 6-bit shift amount field, these opcodes are no longer necessary.

13 years ago[pk,sim,xcc] Renamed instructions to RISC-V spec
Andrew Waterman [Wed, 4 Aug 2010 03:48:02 +0000 (20:48 -0700)]
[pk,sim,xcc] Renamed instructions to RISC-V spec

All word-sized arithmetic operations are now postfixed with 'w',
and all double-word-sized arithmetic operations are no longer
prefixed with 'd'.  mtc0/mfc0 are removed and replaced with
mfpcr/mtpcr/mwfpcr/mwtpcr.

13 years ago[gcc] generate code for complex branches
Andrew Waterman [Thu, 29 Jul 2010 05:36:04 +0000 (22:36 -0700)]
[gcc] generate code for complex branches

13 years ago[sim,xcc] Changed instruction format to RISC-V
Andrew Waterman [Thu, 29 Jul 2010 02:08:04 +0000 (19:08 -0700)]
[sim,xcc] Changed instruction format to RISC-V

Massive changes to gcc, binutils to support new instruction encoding.
Simulator reflects these changes.

13 years ago[sim] various fixes to get the sim work with the fesvr
Yunsup Lee [Fri, 23 Jul 2010 01:38:01 +0000 (18:38 -0700)]
[sim] various fixes to get the sim work with the fesvr

13 years ago[pk,sim] removed cop0 console i/o support
Andrew Waterman [Thu, 22 Jul 2010 06:30:28 +0000 (23:30 -0700)]
[pk,sim] removed cop0 console i/o support

13 years ago[pk,sim] first cut of appserver communication link
Andrew Waterman [Thu, 22 Jul 2010 03:12:09 +0000 (20:12 -0700)]
[pk,sim] first cut of appserver communication link

13 years ago[pk,sim] added temporary "exit" functionality
Andrew Waterman [Tue, 20 Jul 2010 05:58:42 +0000 (22:58 -0700)]
[pk,sim] added temporary "exit" functionality

13 years agoReorganized directory structure
Andrew Waterman [Mon, 19 Jul 2010 01:28:05 +0000 (18:28 -0700)]
Reorganized directory structure

Moved cross-compiler to /xcc/ rather than /
Added ISA sim in /sim/
Added Proxy Kernel in /pk/ (to be cleaned up)
Added opcode map to /opcodes/ (ditto)
Added documentation to /doc/