riscv-isa-sim.git
6 years agofix niggles in offset calculation for LD with elwidth
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 04:16:59 +0000 (04:16 +0000)]
fix niggles in offset calculation for LD with elwidth

6 years agoadd in addrmode
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 02:17:10 +0000 (02:17 +0000)]
add in addrmode

6 years agostarting to put in addr_mode
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 02:00:17 +0000 (02:00 +0000)]
starting to put in addr_mode

6 years agoredirect READ_REG to add addr_mode
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 01:50:15 +0000 (01:50 +0000)]
redirect READ_REG to add addr_mode

6 years agodynamically redirect mmu load into single sv_proc_t::mmu_load fn
Luke Kenneth Casson Leighton [Sun, 28 Oct 2018 20:01:45 +0000 (20:01 +0000)]
dynamically redirect mmu load into single sv_proc_t::mmu_load fn

6 years agoadjust mmu load to take reg_spec_t so that proper offset-adjustments can be made
Luke Kenneth Casson Leighton [Sun, 28 Oct 2018 15:24:07 +0000 (15:24 +0000)]
adjust mmu load to take reg_spec_t so that proper offset-adjustments can be made

the adding of the immediate plus the relevant offset to the relevant
register needs to be calculated before the load takes place.  algorithm
is slightly different from the one used in rv_add

6 years agoredirect mmu load function(s) through sv_proc_t
Luke Kenneth Casson Leighton [Sun, 28 Oct 2018 13:16:14 +0000 (13:16 +0000)]
redirect mmu load function(s) through sv_proc_t

6 years agomove mmu macros to cc file
Luke Kenneth Casson Leighton [Sun, 28 Oct 2018 00:06:22 +0000 (01:06 +0100)]
move mmu macros to cc file

6 years agoUpdating python files and riscv for calling from any directory.
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 22:53:29 +0000 (23:53 +0100)]
Updating python files and riscv for calling from any directory.

6 years agoredirect float128_t through sv_float128_t class instead of typedef
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 08:03:34 +0000 (09:03 +0100)]
redirect float128_t through sv_float128_t class instead of typedef

6 years agoreplace sv_float64_t typedef with class derived from sv_regbase_t
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 07:40:15 +0000 (08:40 +0100)]
replace sv_float64_t typedef with class derived from sv_regbase_t

6 years agoredirect freg through getter macro, to keep elwidth state
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 07:19:54 +0000 (08:19 +0100)]
redirect freg through getter macro, to keep elwidth state

6 years agoadd sv_float32_t override, use explicit float32_t typecast for now
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 06:50:08 +0000 (07:50 +0100)]
add sv_float32_t override, use explicit float32_t typecast for now

6 years agoreplace freg_t typedef with actual sv_freg_t class derived from sv_regbase_t
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 06:20:24 +0000 (07:20 +0100)]
replace freg_t typedef with actual sv_freg_t class derived from sv_regbase_t

6 years agoREAD_FREG not to return an alternative type
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 06:07:59 +0000 (07:07 +0100)]
READ_FREG not to return an alternative type

6 years agoredirect freg_t to sv_freg_t
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 04:14:28 +0000 (05:14 +0100)]
redirect freg_t to sv_freg_t

6 years agoput in typedef sv_floatNN_t
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 04:03:23 +0000 (05:03 +0100)]
put in typedef sv_floatNN_t

6 years agoadd f128 sv_proc_t redirect
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 03:48:31 +0000 (04:48 +0100)]
add f128 sv_proc_t redirect

6 years agoadd f32 redirects in sv_proc_t
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 03:41:53 +0000 (04:41 +0100)]
add f32 redirects in sv_proc_t

6 years agoadd f64 redirection to sv_proc_t
Luke Kenneth Casson Leighton [Sat, 27 Oct 2018 03:38:37 +0000 (04:38 +0100)]
add f64 redirection to sv_proc_t

6 years agoforgot to mask off data being written within element
Luke Kenneth Casson Leighton [Fri, 26 Oct 2018 06:57:42 +0000 (07:57 +0100)]
forgot to mask off data being written within element

6 years agoadd debug printfs
Luke Kenneth Casson Leighton [Fri, 26 Oct 2018 05:46:27 +0000 (06:46 +0100)]
add debug printfs

6 years agoadd max elwidth resolver on add operation
Luke Kenneth Casson Leighton [Fri, 26 Oct 2018 03:27:32 +0000 (04:27 +0100)]
add max elwidth resolver on add operation

result now respects the element width of the 2 source operands

6 years agoadd to_elwidth function, not complete: needs to use source elwidths
Luke Kenneth Casson Leighton [Fri, 26 Oct 2018 03:16:12 +0000 (04:16 +0100)]
add to_elwidth function, not complete: needs to use source elwidths

6 years agosign/zero-extend result as well
Luke Kenneth Casson Leighton [Fri, 26 Oct 2018 03:12:39 +0000 (04:12 +0100)]
sign/zero-extend result as well

6 years agoalter operation width based on max bitwidth, and sign/zero-extend
Luke Kenneth Casson Leighton [Fri, 26 Oct 2018 03:09:43 +0000 (04:09 +0100)]
alter operation width based on max bitwidth, and sign/zero-extend

6 years agopass in sign-extend argument for use in non-default bitwidth
Luke Kenneth Casson Leighton [Fri, 26 Oct 2018 01:43:21 +0000 (02:43 +0100)]
pass in sign-extend argument for use in non-default bitwidth

6 years agoadd variable bitwidth on read/write regs
Luke Kenneth Casson Leighton [Thu, 25 Oct 2018 23:57:56 +0000 (00:57 +0100)]
add variable bitwidth on read/write regs

6 years agobreak register down in non-default elwidth case
Luke Kenneth Casson Leighton [Thu, 25 Oct 2018 09:10:50 +0000 (10:10 +0100)]
break register down in non-default elwidth case

6 years agoadd isvec to reg_spec_t, bit of cleanup
Luke Kenneth Casson Leighton [Thu, 25 Oct 2018 08:55:46 +0000 (09:55 +0100)]
add isvec to reg_spec_t, bit of cleanup

6 years agoredirect DO_WRITE_FREG and READ_FREG and others
Luke Kenneth Casson Leighton [Thu, 25 Oct 2018 08:28:33 +0000 (09:28 +0100)]
redirect DO_WRITE_FREG and READ_FREG and others

no longer adding the offset onto the register in sv_insn_t,
now to be done in sv_proc_t WRITE_REG/READ_REG, where the
element width can be examined (finally)

6 years agooverload READ_REG
Luke Kenneth Casson Leighton [Thu, 25 Oct 2018 07:30:41 +0000 (08:30 +0100)]
overload READ_REG

6 years agoremove offset argument from predicated fn, offset now stored in reg_spec_t
Luke Kenneth Casson Leighton [Thu, 25 Oct 2018 06:34:17 +0000 (07:34 +0100)]
remove offset argument from predicated fn, offset now stored in reg_spec_t

6 years agomake reg_spec_t offset a pointer, sometimes it needs to be NULL
Luke Kenneth Casson Leighton [Thu, 25 Oct 2018 06:28:49 +0000 (07:28 +0100)]
make reg_spec_t offset a pointer, sometimes it needs to be NULL

6 years agouse reg_spec_t which passes reg + offset into sv_proc_t
Luke Kenneth Casson Leighton [Thu, 25 Oct 2018 05:36:06 +0000 (06:36 +0100)]
use reg_spec_t which passes reg + offset into sv_proc_t

6 years agomake common function for getting bitwidth
Luke Kenneth Casson Leighton [Wed, 24 Oct 2018 04:39:20 +0000 (05:39 +0100)]
make common function for getting bitwidth

6 years agoadd type signed identification, add lh/sh to insn ld/store types
Luke Kenneth Casson Leighton [Tue, 23 Oct 2018 05:13:53 +0000 (06:13 +0100)]
add type signed identification, add lh/sh to insn ld/store types

6 years agoadd type store categorisation
Luke Kenneth Casson Leighton [Tue, 23 Oct 2018 05:11:32 +0000 (06:11 +0100)]
add type store categorisation

6 years agocalculate src bitwidth - very time-consuming, optimise later
Luke Kenneth Casson Leighton [Sun, 21 Oct 2018 08:14:21 +0000 (09:14 +0100)]
calculate src bitwidth - very time-consuming, optimise later

6 years agomove sv_insn_t constructor to c file
Luke Kenneth Casson Leighton [Sun, 21 Oct 2018 07:53:58 +0000 (08:53 +0100)]
move sv_insn_t constructor to c file

6 years agoshuffle to calculate actual bitwidth
Luke Kenneth Casson Leighton [Sat, 20 Oct 2018 09:21:51 +0000 (10:21 +0100)]
shuffle to calculate actual bitwidth

6 years agomake sv_regbase_t public
Luke Kenneth Casson Leighton [Sat, 20 Oct 2018 01:13:28 +0000 (02:13 +0100)]
make sv_regbase_t public

6 years agoadd sign-extension bitwidth macros
Luke Kenneth Casson Leighton [Sat, 20 Oct 2018 01:11:09 +0000 (02:11 +0100)]
add sign-extension bitwidth macros

6 years agosplit out sv_reg_t elwidth into separate base class
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 23:56:34 +0000 (00:56 +0100)]
split out sv_reg_t elwidth into separate base class

6 years agofixed memory corruption due to use of auto on load_uint64, put elwidth back
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 23:51:44 +0000 (00:51 +0100)]
fixed memory corruption due to use of auto on load_uint64, put elwidth back

6 years agostop using auto in mmu.h macro, use type##_t
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 23:51:15 +0000 (00:51 +0100)]
stop using auto in mmu.h macro, use type##_t

6 years agowhoops load_uint64 with auto returned sv_reg_t not uint64_t
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 23:37:59 +0000 (00:37 +0100)]
whoops load_uint64 with auto returned sv_reg_t not uint64_t

6 years agoconst& on more sv_sreg_t usage
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 22:46:00 +0000 (23:46 +0100)]
const& on more sv_sreg_t usage

6 years agoconst sv_mmu_t functions
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 22:44:00 +0000 (23:44 +0100)]
const sv_mmu_t functions

6 years agostop addr++ in interactive loop
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 22:40:15 +0000 (23:40 +0100)]
stop addr++ in interactive loop

6 years agouse const& for operators in sv_reg_t
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 22:25:08 +0000 (23:25 +0100)]
use const& for operators in sv_reg_t

6 years agomake 2-op rv* const
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 22:18:20 +0000 (23:18 +0100)]
make 2-op rv* const

6 years agotemporarily comment out setting of elwidth
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 22:11:43 +0000 (23:11 +0100)]
temporarily comment out setting of elwidth

sv_reg_t seems to be being typecast somewhere, probably to a uint64_t,
and accessing the elwidth corrupts memory

6 years agoredirect obtaining registers through a common function, get_intreg
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 13:52:15 +0000 (14:52 +0100)]
redirect obtaining registers through a common function, get_intreg

6 years agoredirect through element width, obtain elwidth from CSR reg tables
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 13:44:09 +0000 (14:44 +0100)]
redirect through element width, obtain elwidth from CSR reg tables

6 years agoremove more get_data calls
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 12:20:59 +0000 (13:20 +0100)]
remove more get_data calls

6 years agoremove more get_data calls
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 12:19:58 +0000 (13:19 +0100)]
remove more get_data calls

6 years agoremove unneeded get_data calls
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 12:17:51 +0000 (13:17 +0100)]
remove unneeded get_data calls

6 years agoadd sv_mmu.h
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 12:17:37 +0000 (13:17 +0100)]
add sv_mmu.h

6 years agoclean up sv_reg_t class
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 11:22:53 +0000 (12:22 +0100)]
clean up sv_reg_t class

6 years agouse class-based sv_reg_t and sv_sreg_t
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 10:58:25 +0000 (11:58 +0100)]
use class-based sv_reg_t and sv_sreg_t

6 years agobring in new version of sv_reg.h
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 08:35:12 +0000 (09:35 +0100)]
bring in new version of sv_reg.h

6 years agoprovide sv_reg_t overrides of more functions so that sv_reg_t can be a class
Luke Kenneth Casson Leighton [Fri, 19 Oct 2018 08:33:27 +0000 (09:33 +0100)]
provide sv_reg_t overrides of more functions so that sv_reg_t can be a class

6 years agoput sv_mmu override class in place
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:53:53 +0000 (23:53 +0100)]
put sv_mmu override class in place

6 years agofix debug printfs
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:43:38 +0000 (23:43 +0100)]
fix debug printfs

6 years agosrrl srli srai etc
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:40:47 +0000 (23:40 +0100)]
srrl srli srai etc

6 years agoslli
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:38:55 +0000 (23:38 +0100)]
slli

6 years agosll
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:38:33 +0000 (23:38 +0100)]
sll

6 years agojalr, mul, rem
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:38:06 +0000 (23:38 +0100)]
jalr, mul, rem

6 years agofmv/mvlq/fsq
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:31:58 +0000 (23:31 +0100)]
fmv/mvlq/fsq

6 years agodiv, fcvt
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:30:04 +0000 (23:30 +0100)]
div, fcvt

6 years agodivuw
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:28:24 +0000 (23:28 +0100)]
divuw

6 years agodivu
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:27:24 +0000 (23:27 +0100)]
divu

6 years agodiv
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:26:40 +0000 (23:26 +0100)]
div

6 years agocsrs
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:24:25 +0000 (23:24 +0100)]
csrs

6 years agocsrrc
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:23:06 +0000 (23:23 +0100)]
csrrc

6 years agoc_srli
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:22:07 +0000 (23:22 +0100)]
c_srli

6 years agoc_slli c_srai
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:21:18 +0000 (23:21 +0100)]
c_slli c_srai

6 years agoc_lui
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:18:51 +0000 (23:18 +0100)]
c_lui

6 years agoc_jalr
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:17:49 +0000 (23:17 +0100)]
c_jalr

6 years agoc_jal
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:17:04 +0000 (23:17 +0100)]
c_jal

6 years agoc_beqz
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:16:24 +0000 (23:16 +0100)]
c_beqz

6 years agoaddi4spn
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:15:14 +0000 (23:15 +0100)]
addi4spn

6 years agoredirect sreg_t casts through function
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:14:36 +0000 (23:14 +0100)]
redirect sreg_t casts through function

6 years agotypedef on sv_reg_t to reg_t (and signed variant)
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:12:00 +0000 (23:12 +0100)]
typedef on sv_reg_t to reg_t (and signed variant)

still working on redirecting everything through a planned class
that can be polymorphic overloaded... eventually

6 years agouse unsigned long shift on sv csr setting
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 22:11:08 +0000 (23:11 +0100)]
use unsigned long shift on sv csr setting

6 years agoforgot to set clroffset
Luke Kenneth Casson Leighton [Thu, 18 Oct 2018 17:14:36 +0000 (18:14 +0100)]
forgot to set clroffset

6 years agoallow 4 CSR entries to be set at a time, on RV64
Luke Kenneth Casson Leighton [Wed, 17 Oct 2018 09:56:30 +0000 (10:56 +0100)]
allow 4 CSR entries to be set at a time, on RV64

6 years agominor alteration to CSRRWI SETVL / SETMVL to offset immediate by 1
Luke Kenneth Casson Leighton [Wed, 17 Oct 2018 00:58:15 +0000 (01:58 +0100)]
minor alteration to CSRRWI SETVL / SETMVL to offset immediate by 1

allows CSRRWI to make maximum use of only 5-bit immediate

6 years agoshuffle CSR offsets around, offset VL and MVL by one
Luke Kenneth Casson Leighton [Tue, 16 Oct 2018 22:40:26 +0000 (23:40 +0100)]
shuffle CSR offsets around, offset VL and MVL by one

VL and MVL now span from 1 to XLEN rather than 0 to XLEN-1

also making room for M-Mode and S-Mode CSRs

6 years agofix compiler warnings on printfs
Luke Kenneth Casson Leighton [Mon, 15 Oct 2018 11:56:24 +0000 (12:56 +0100)]
fix compiler warnings on printfs

6 years agofix annoying printf warning on fp compiles
Luke Kenneth Casson Leighton [Mon, 15 Oct 2018 11:55:38 +0000 (12:55 +0100)]
fix annoying printf warning on fp compiles

6 years agowhoops deref null pointer
Luke Kenneth Casson Leighton [Mon, 15 Oct 2018 09:26:14 +0000 (10:26 +0100)]
whoops deref null pointer

6 years agoc_beqz sv operational
Luke Kenneth Casson Leighton [Mon, 15 Oct 2018 08:58:22 +0000 (09:58 +0100)]
c_beqz sv operational

6 years agoput RVC_SP at back of cintpatterns list
Luke Kenneth Casson Leighton [Mon, 15 Oct 2018 07:56:51 +0000 (08:56 +0100)]
put RVC_SP at back of cintpatterns list

6 years agoadd rvc_sp redirection/offset overload
Luke Kenneth Casson Leighton [Mon, 15 Oct 2018 06:49:26 +0000 (07:49 +0100)]
add rvc_sp redirection/offset overload

also found weird bug where RVC_FRS1/2 were not being detected,
how it was not found earlier is a mystery, code should not
have compiled!

6 years agoneed to check whether SP (reg 2) is used, without redirection
Luke Kenneth Casson Leighton [Mon, 15 Oct 2018 05:52:02 +0000 (06:52 +0100)]
need to check whether SP (reg 2) is used, without redirection

6 years agoadd overload/redirection for WRITE_REG
Luke Kenneth Casson Leighton [Mon, 15 Oct 2018 05:43:24 +0000 (06:43 +0100)]
add overload/redirection for WRITE_REG

6 years agomove design to separate document
Luke Kenneth Casson Leighton [Sun, 14 Oct 2018 21:29:34 +0000 (22:29 +0100)]
move design to separate document

6 years agodrop all lui from restriction on parallelism
Luke Kenneth Casson Leighton [Sun, 14 Oct 2018 21:29:22 +0000 (22:29 +0100)]
drop all lui from restriction on parallelism