riscv-isa-sim.git
6 years agochange SV_REGCSR csrrwi to different meaning: 5-bit is num CSR entries to pop
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 23:17:24 +0000 (23:17 +0000)]
change SV_REGCSR csrrwi to different meaning: 5-bit is num CSR entries to pop

however, it has to be limited to what will fit into the return result.
so stops at 4 non-zero entries on RV64 and 2 on RV32.

perhaps use notification of use of x0 to remove all items requested?
can do a complate stack-wipe with one csrrwi instruction, then

6 years agopass in arg to set_csr from csrrwi to indicate "immediate enabled"
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 16:02:05 +0000 (16:02 +0000)]
pass in arg to set_csr from csrrwi to indicate "immediate enabled"

6 years agomodify csrrwi and csrrw back to original, change old val inside set_csr
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 15:57:59 +0000 (15:57 +0000)]
modify csrrwi and csrrw back to original, change old val inside set_csr

6 years agocsrrwi cut out extraneous get_csr
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 15:53:27 +0000 (15:53 +0000)]
csrrwi cut out extraneous get_csr

6 years agowhoops missing brackets
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 15:52:26 +0000 (15:52 +0000)]
whoops missing brackets

6 years agoalter set_csr to call get_csr, will make csrrw* easier
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 13:52:48 +0000 (13:52 +0000)]
alter set_csr to call get_csr, will make csrrw* easier

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