riscv-isa-sim.git
6 years agoredo SV CSRs to use a stack-based mechanism
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 13:38:33 +0000 (13:38 +0000)]
redo SV CSRs to use a stack-based mechanism

6 years agoc_lwsp and c_swsp were not working correctly
Luke Kenneth Casson Leighton [Sun, 11 Nov 2018 20:20:11 +0000 (20:20 +0000)]
c_lwsp and c_swsp were not working correctly

needed to be in ADDRmode (dropping down to mmu_t::load_xxx not sv_mmu_t)
and also needed to stop using reg_spec.offset.  added an extra
argument to rvc_sp() which is "use_offset=true/false".

switching to use_offset=false for c_lwsp and c_swsp, and getting them
to both NOT be in the normal ADDRmode for LD/ST, we get an
increment on the registers from SP.

really should redirect the CSRs to not use SP, x28-x30 instead or
something, in the unit tests...

6 years agomacro-ify rv_sr and rv_sl
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 20:32:15 +0000 (20:32 +0000)]
macro-ify rv_sr and rv_sl

6 years agoremove extra rv_sl and rv_sr overload fns
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 20:24:59 +0000 (20:24 +0000)]
remove extra rv_sl and rv_sr overload fns

6 years agowhitespace
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 20:21:36 +0000 (20:21 +0000)]
whitespace

6 years agomacro-ify 64-bit mulh fns
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 20:08:29 +0000 (20:08 +0000)]
macro-ify 64-bit mulh fns

6 years agoslightly different 64-bit rv_mulhu elwidth rules
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 06:59:17 +0000 (06:59 +0000)]
slightly different 64-bit rv_mulhu elwidth rules

6 years agorealised that the bitwidth sign-extension needs to be FROM the
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 06:27:52 +0000 (06:27 +0000)]
realised that the bitwidth sign-extension needs to be FROM the
source bitwidth not TO the TARGET bitwidth

6 years agomacro-ify 32-bit mulh group
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 12:09:56 +0000 (12:09 +0000)]
macro-ify 32-bit mulh group

6 years agomulh 32-bit elwidth
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 12:03:42 +0000 (12:03 +0000)]
mulh 32-bit elwidth

6 years agomacroify rv_and, rv_or, rv_xor
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 10:25:27 +0000 (10:25 +0000)]
macroify rv_and, rv_or, rv_xor

6 years agogot fed up with repeated code on s/u-ops, use macros
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 10:21:43 +0000 (10:21 +0000)]
got fed up with repeated code on s/u-ops, use macros

6 years agomacro-ify gt, ge, eq and ne
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 10:11:34 +0000 (10:11 +0000)]
macro-ify gt, ge, eq and ne

6 years agobge and blt are signed ops
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 10:10:24 +0000 (10:10 +0000)]
bge and blt are signed ops

6 years agogot fed up with repeated code, using macros
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 10:06:15 +0000 (10:06 +0000)]
got fed up with repeated code, using macros

6 years agoelwidth version of lt
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 09:54:23 +0000 (09:54 +0000)]
elwidth version of lt

6 years agoelwidth version of lt
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 09:53:43 +0000 (09:53 +0000)]
elwidth version of lt

6 years agoadd mulhsu elwidth variant
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 04:35:19 +0000 (04:35 +0000)]
add mulhsu elwidth variant

6 years agovery bad hack on xlen=32 to sign-extend out into top bits of 64-bit register
Luke Kenneth Casson Leighton [Thu, 8 Nov 2018 18:12:08 +0000 (18:12 +0000)]
very bad hack on xlen=32 to sign-extend out into top bits of 64-bit register

6 years agozero-extend mulhu result
Luke Kenneth Casson Leighton [Thu, 8 Nov 2018 18:11:43 +0000 (18:11 +0000)]
zero-extend mulhu result

6 years agoadd comment
Luke Kenneth Casson Leighton [Thu, 8 Nov 2018 12:10:45 +0000 (12:10 +0000)]
add comment

6 years agoannoyingly, have to modify rv_mulhu to take source reg width as basis
Luke Kenneth Casson Leighton [Thu, 8 Nov 2018 11:08:18 +0000 (11:08 +0000)]
annoyingly, have to modify rv_mulhu to take source reg width as basis

6 years agowhoops, must use dest bitwidth on mulhsu
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 17:29:43 +0000 (17:29 +0000)]
whoops, must use dest bitwidth on mulhsu

6 years agoelwidth variant of rv_mulhu
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 16:55:41 +0000 (16:55 +0000)]
elwidth variant of rv_mulhu

6 years agomulh* redirect through rv_mul, to save on code
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 11:49:00 +0000 (11:49 +0000)]
mulh* redirect through rv_mul, to save on code

6 years agoadd mul elwidth redirection
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 11:42:56 +0000 (11:42 +0000)]
add mul elwidth redirection

6 years agoadd mul elwidth redirection
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 11:42:10 +0000 (11:42 +0000)]
add mul elwidth redirection

6 years agofix bitwidth issues for rv32 in mulh* and sra
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 10:37:20 +0000 (10:37 +0000)]
fix bitwidth issues for rv32 in mulh* and sra

6 years agofix fsgn elwidth
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 09:24:12 +0000 (09:24 +0000)]
fix fsgn elwidth

6 years agoattempting to get rv32 mv working
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 09:20:42 +0000 (09:20 +0000)]
attempting to get rv32 mv working

6 years agofix length=0 in fsw and fsd
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 09:14:09 +0000 (09:14 +0000)]
fix length=0 in fsw and fsd

6 years agomacro-ify rv op elwidth setup/teardown
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 07:46:44 +0000 (07:46 +0000)]
macro-ify rv op elwidth setup/teardown

6 years agoelwidth rv_rem
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 17:51:11 +0000 (17:51 +0000)]
elwidth rv_rem

6 years agounsigned version of div
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 17:49:45 +0000 (17:49 +0000)]
unsigned version of div

6 years agoadd unsigned versions of rv_int_op_prepare and finish
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 17:45:15 +0000 (17:45 +0000)]
add unsigned versions of rv_int_op_prepare and finish

6 years agoadd debug info on rv_sr
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 16:11:12 +0000 (16:11 +0000)]
add debug info on rv_sr

6 years agoconvert rv_sl to same extra bitwidth arg
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:40:22 +0000 (11:40 +0000)]
convert rv_sl to same extra bitwidth arg

6 years agoconvert rv_sl to same extra bitwidth arg
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:36:43 +0000 (11:36 +0000)]
convert rv_sl to same extra bitwidth arg

6 years agoconvert rv_sl to same extra bitwidth arg
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:35:42 +0000 (11:35 +0000)]
convert rv_sl to same extra bitwidth arg

6 years agopass in extra arg (bitwidth) into rv_sr
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:33:26 +0000 (11:33 +0000)]
pass in extra arg (bitwidth) into rv_sr

6 years agoalter rv_sr to take bitwidth arg
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:28:14 +0000 (11:28 +0000)]
alter rv_sr to take bitwidth arg

6 years agoelwidth-ify rv_sl and rv_sr
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:20:34 +0000 (11:20 +0000)]
elwidth-ify rv_sl and rv_sr

6 years agobreak int op down into prepare, do, and finish
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:18:43 +0000 (11:18 +0000)]
break int op down into prepare, do, and finish

6 years agoadd CSR_USVCFG set/get
Luke Kenneth Casson Leighton [Mon, 5 Nov 2018 08:55:04 +0000 (08:55 +0000)]
add CSR_USVCFG set/get

6 years agocorrect bank and size, use in setting up CSR tables
Luke Kenneth Casson Leighton [Mon, 5 Nov 2018 08:51:49 +0000 (08:51 +0000)]
correct bank and size, use in setting up CSR tables

6 years agomove csr reg and predicate table unpack to separate function
Luke Kenneth Casson Leighton [Mon, 5 Nov 2018 08:07:57 +0000 (08:07 +0000)]
move csr reg and predicate table unpack to separate function

6 years agoadd state and bank sv csr bitfields
Luke Kenneth Casson Leighton [Mon, 5 Nov 2018 08:01:46 +0000 (08:01 +0000)]
add state and bank sv csr bitfields

6 years agodebug shape remap
Luke Kenneth Casson Leighton [Sun, 4 Nov 2018 16:18:06 +0000 (16:18 +0000)]
debug shape remap

6 years agoset isvec when predication enabled
Luke Kenneth Casson Leighton [Sun, 4 Nov 2018 02:27:48 +0000 (02:27 +0000)]
set isvec when predication enabled

6 years agoraise exception if permutation set to reserved value
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 15:24:14 +0000 (15:24 +0000)]
raise exception if permutation set to reserved value

6 years agoadd comment on where reshape map is set up
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 15:22:32 +0000 (15:22 +0000)]
add comment on where reshape map is set up

6 years agoadd reshaping algorithm for elements
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 14:00:57 +0000 (14:00 +0000)]
add reshaping algorithm for elements

6 years agoadd stub "remap" of register offsets
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:57:49 +0000 (10:57 +0000)]
add stub "remap" of register offsets

6 years agoadd sv shape CSRs
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:32:14 +0000 (10:32 +0000)]
add sv shape CSRs

6 years agoadd placeholder CSR uremap get
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:26:17 +0000 (10:26 +0000)]
add placeholder CSR uremap get

6 years agoadd remap CSR set
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:25:42 +0000 (10:25 +0000)]
add remap CSR set

6 years agoadd reshape data structures and get_shape function
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:17:39 +0000 (10:17 +0000)]
add reshape data structures and get_shape function

6 years agoadd remap and shape sv csrs
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 09:46:00 +0000 (09:46 +0000)]
add remap and shape sv csrs

6 years agoadd debug on zeroing-predication c.mv
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 08:01:58 +0000 (08:01 +0000)]
add debug on zeroing-predication c.mv

6 years agoadd state redirection for CSR get/set depending on processor mode
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 06:56:49 +0000 (06:56 +0000)]
add state redirection for CSR get/set depending on processor mode

6 years agoadd twin src and dest flen instruction testing
Luke Kenneth Casson Leighton [Fri, 2 Nov 2018 13:45:56 +0000 (13:45 +0000)]
add twin src and dest flen instruction testing

WRITE_FREG and READ_FREG need different flen inputs.  start differentiating

6 years agoexpand register size to 128 long, add exceptions if bounds exceeded
Luke Kenneth Casson Leighton [Fri, 2 Nov 2018 11:26:44 +0000 (11:26 +0000)]
expand register size to 128 long, add exceptions if bounds exceeded

also adding debug prints for tracking down obscure fmv bug

6 years agoobscure fmv bug where fp reg size was not defined
Luke Kenneth Casson Leighton [Fri, 2 Nov 2018 11:25:21 +0000 (11:25 +0000)]
obscure fmv bug where fp reg size was not defined

6 years agoincrease regfile sizes to 128 entries
Luke Kenneth Casson Leighton [Fri, 2 Nov 2018 08:31:43 +0000 (08:31 +0000)]
increase regfile sizes to 128 entries

6 years agoreduce fp ops down to op width
Luke Kenneth Casson Leighton [Thu, 1 Nov 2018 12:13:13 +0000 (12:13 +0000)]
reduce fp ops down to op width

6 years agoadd instruction flen detection
Luke Kenneth Casson Leighton [Thu, 1 Nov 2018 10:03:40 +0000 (10:03 +0000)]
add instruction flen detection

6 years agoWRITE_FRD convert 64-bit to elwidth
Luke Kenneth Casson Leighton [Thu, 1 Nov 2018 06:14:40 +0000 (06:14 +0000)]
WRITE_FRD convert 64-bit to elwidth

6 years agoconvert sv_proc_t::f128 to sv_freg_t type so it carries reg_spec_t state
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 14:26:59 +0000 (14:26 +0000)]
convert sv_proc_t::f128 to sv_freg_t type so it carries reg_spec_t state

6 years agooverride elwidth in sv_proc_t::f64
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 14:14:39 +0000 (14:14 +0000)]
override elwidth in sv_proc_t::f64

6 years agowhoops nbytes in DO_WRITE_FREG has to be flen not xlen based
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 13:19:22 +0000 (13:19 +0000)]
whoops nbytes in DO_WRITE_FREG has to be flen not xlen based

6 years agooverride elwidth in sv_proc_t::f64
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 13:14:51 +0000 (13:14 +0000)]
override elwidth in sv_proc_t::f64

6 years agoadd packed (non-default) elwidth support in DO_WRITE_FREG
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 11:37:15 +0000 (11:37 +0000)]
add packed (non-default) elwidth support in DO_WRITE_FREG

6 years agoREAD_FREG reads fp16 from offset into reg array
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 07:47:05 +0000 (07:47 +0000)]
READ_FREG reads fp16 from offset into reg array

6 years agoadd subdivisions
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 03:33:28 +0000 (03:33 +0000)]
add subdivisions

6 years agoreturn correct register elwidth for get_fpreg
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 02:21:33 +0000 (02:21 +0000)]
return correct register elwidth for get_fpreg

6 years agoadd 32-fp16 load/convert in WRITE_FRD
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 00:21:51 +0000 (00:21 +0000)]
add 32-fp16 load/convert in WRITE_FRD

6 years agostart modifying DO_WRITE_FREG to store elwidth-based fp
Luke Kenneth Casson Leighton [Tue, 30 Oct 2018 09:44:40 +0000 (09:44 +0000)]
start modifying DO_WRITE_FREG to store elwidth-based fp

6 years agomodify debug statement on WRITE_FRD to display hex of number
Luke Kenneth Casson Leighton [Tue, 30 Oct 2018 07:53:07 +0000 (07:53 +0000)]
modify debug statement on WRITE_FRD to display hex of number

6 years agoon scalar redirected reg, break hardware loop at first dest-store
Luke Kenneth Casson Leighton [Tue, 30 Oct 2018 06:09:50 +0000 (06:09 +0000)]
on scalar redirected reg, break hardware loop at first dest-store

6 years agoon scalar operation, sign-extend / zero-extend to full reg width
Luke Kenneth Casson Leighton [Tue, 30 Oct 2018 06:09:20 +0000 (06:09 +0000)]
on scalar operation, sign-extend / zero-extend to full reg width

6 years agodown-convert floating-point 32-bit to fp 16-bit then return 16-bit uint
Luke Kenneth Casson Leighton [Tue, 30 Oct 2018 02:55:22 +0000 (02:55 +0000)]
down-convert floating-point 32-bit to fp 16-bit then return 16-bit uint

this to be used just before MMU store

6 years agoadd sv_proc_t f32 conversions when elwidth=16bit
Luke Kenneth Casson Leighton [Tue, 30 Oct 2018 01:14:06 +0000 (01:14 +0000)]
add sv_proc_t f32 conversions when elwidth=16bit

6 years agoset elwidth (carry through) from MMU
Luke Kenneth Casson Leighton [Tue, 30 Oct 2018 00:45:15 +0000 (00:45 +0000)]
set elwidth (carry through) from MMU

6 years agomorph conversion of floating-point for storing, through sv_proc_t
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 14:10:13 +0000 (14:10 +0000)]
morph conversion of floating-point for storing, through sv_proc_t

6 years agoadd explicit get of data inside sv_freg_t, float32_t etc.
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 10:08:52 +0000 (10:08 +0000)]
add explicit get of data inside sv_freg_t, float32_t etc.

6 years agoadd redirector operators for sv_freg_t to uint32 and uint64
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 09:54:21 +0000 (09:54 +0000)]
add redirector operators for sv_freg_t to uint32 and uint64

6 years agoredirect store insns through sv_proc_t for elwidth adjustment
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 06:39:41 +0000 (06:39 +0000)]
redirect store insns through sv_proc_t for elwidth adjustment

6 years agooverride and redirect mmu store functions to sv_proc_t
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 06:31:25 +0000 (06:31 +0000)]
override and redirect mmu store functions to sv_proc_t

6 years agoremove unneeded commented-out code
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 06:07:37 +0000 (06:07 +0000)]
remove unneeded commented-out code

6 years agoremove unnecessary function for mmu elwidth load
Luke Kenneth Casson Leighton [Mon, 29 Oct 2018 04:22:25 +0000 (04:22 +0000)]
remove unnecessary function for mmu elwidth load

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