Luke Kenneth Casson Leighton [Thu, 27 Jun 2019 06:30:49 +0000 (07:30 +0100)]
add SUBVL CSR set
Luke Kenneth Casson Leighton [Thu, 27 Jun 2019 06:24:15 +0000 (07:24 +0100)]
add subvl to headers, comment out state-cfg
Luke Kenneth Casson Leighton [Thu, 27 Jun 2019 06:13:06 +0000 (07:13 +0100)]
rename packed field to fail-on-first
Luke Kenneth Casson Leighton [Thu, 29 Nov 2018 09:25:08 +0000 (09:25 +0000)]
start to update predicated Branch to latest spec
Luke Kenneth Casson Leighton [Thu, 29 Nov 2018 07:10:10 +0000 (07:10 +0000)]
on branch, obtain the predicate inversion flag
Luke Kenneth Casson Leighton [Thu, 29 Nov 2018 07:08:57 +0000 (07:08 +0000)]
get the predicate inv argument as well
Luke Kenneth Casson Leighton [Sat, 17 Nov 2018 06:58:14 +0000 (06:58 +0000)]
c_lwsp fix-up to use src_pred, and pass width not xlen into READ_REG bitwidth
Luke Kenneth Casson Leighton [Sat, 17 Nov 2018 05:35:37 +0000 (05:35 +0000)]
add element-offset mode on LD/ST when isvec=false on address
Luke Kenneth Casson Leighton [Sat, 17 Nov 2018 04:40:13 +0000 (04:40 +0000)]
predication remapping added
Luke Kenneth Casson Leighton [Thu, 15 Nov 2018 23:45:31 +0000 (23:45 +0000)]
add in predication remapping into src, dest and branch target
Luke Kenneth Casson Leighton [Thu, 15 Nov 2018 23:23:13 +0000 (23:23 +0000)]
add predication remap option
Luke Kenneth Casson Leighton [Wed, 14 Nov 2018 21:55:40 +0000 (21:55 +0000)]
comment out debug code not needed
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
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"
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
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 15:53:27 +0000 (15:53 +0000)]
csrrwi cut out extraneous get_csr
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 15:52:26 +0000 (15:52 +0000)]
whoops missing brackets
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
Luke Kenneth Casson Leighton [Tue, 13 Nov 2018 13:38:33 +0000 (13:38 +0000)]
redo SV CSRs to use a stack-based mechanism
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...
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 20:32:15 +0000 (20:32 +0000)]
macro-ify rv_sr and rv_sl
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 20:24:59 +0000 (20:24 +0000)]
remove extra rv_sl and rv_sr overload fns
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 20:21:36 +0000 (20:21 +0000)]
whitespace
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 20:08:29 +0000 (20:08 +0000)]
macro-ify 64-bit mulh fns
Luke Kenneth Casson Leighton [Sat, 10 Nov 2018 06:59:17 +0000 (06:59 +0000)]
slightly different 64-bit rv_mulhu elwidth rules
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
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 12:09:56 +0000 (12:09 +0000)]
macro-ify 32-bit mulh group
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 12:03:42 +0000 (12:03 +0000)]
mulh 32-bit elwidth
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 10:25:27 +0000 (10:25 +0000)]
macroify rv_and, rv_or, rv_xor
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
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 10:11:34 +0000 (10:11 +0000)]
macro-ify gt, ge, eq and ne
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 10:10:24 +0000 (10:10 +0000)]
bge and blt are signed ops
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 10:06:15 +0000 (10:06 +0000)]
got fed up with repeated code, using macros
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 09:54:23 +0000 (09:54 +0000)]
elwidth version of lt
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 09:53:43 +0000 (09:53 +0000)]
elwidth version of lt
Luke Kenneth Casson Leighton [Fri, 9 Nov 2018 04:35:19 +0000 (04:35 +0000)]
add mulhsu elwidth variant
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
Luke Kenneth Casson Leighton [Thu, 8 Nov 2018 18:11:43 +0000 (18:11 +0000)]
zero-extend mulhu result
Luke Kenneth Casson Leighton [Thu, 8 Nov 2018 12:10:45 +0000 (12:10 +0000)]
add comment
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
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 17:29:43 +0000 (17:29 +0000)]
whoops, must use dest bitwidth on mulhsu
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 16:55:41 +0000 (16:55 +0000)]
elwidth variant of rv_mulhu
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 11:49:00 +0000 (11:49 +0000)]
mulh* redirect through rv_mul, to save on code
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 11:42:56 +0000 (11:42 +0000)]
add mul elwidth redirection
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 11:42:10 +0000 (11:42 +0000)]
add mul elwidth redirection
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 10:37:20 +0000 (10:37 +0000)]
fix bitwidth issues for rv32 in mulh* and sra
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 09:24:12 +0000 (09:24 +0000)]
fix fsgn elwidth
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 09:20:42 +0000 (09:20 +0000)]
attempting to get rv32 mv working
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 09:14:09 +0000 (09:14 +0000)]
fix length=0 in fsw and fsd
Luke Kenneth Casson Leighton [Wed, 7 Nov 2018 07:46:44 +0000 (07:46 +0000)]
macro-ify rv op elwidth setup/teardown
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 17:51:11 +0000 (17:51 +0000)]
elwidth rv_rem
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 17:49:45 +0000 (17:49 +0000)]
unsigned version of div
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
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 16:11:12 +0000 (16:11 +0000)]
add debug info on rv_sr
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:40:22 +0000 (11:40 +0000)]
convert 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
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:35:42 +0000 (11:35 +0000)]
convert rv_sl to same extra bitwidth arg
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:33:26 +0000 (11:33 +0000)]
pass in extra arg (bitwidth) into rv_sr
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:28:14 +0000 (11:28 +0000)]
alter rv_sr to take bitwidth arg
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:20:34 +0000 (11:20 +0000)]
elwidth-ify rv_sl and rv_sr
Luke Kenneth Casson Leighton [Tue, 6 Nov 2018 11:18:43 +0000 (11:18 +0000)]
break int op down into prepare, do, and finish
Luke Kenneth Casson Leighton [Mon, 5 Nov 2018 08:55:04 +0000 (08:55 +0000)]
add CSR_USVCFG set/get
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
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
Luke Kenneth Casson Leighton [Mon, 5 Nov 2018 08:01:46 +0000 (08:01 +0000)]
add state and bank sv csr bitfields
Luke Kenneth Casson Leighton [Sun, 4 Nov 2018 16:18:06 +0000 (16:18 +0000)]
debug shape remap
Luke Kenneth Casson Leighton [Sun, 4 Nov 2018 02:27:48 +0000 (02:27 +0000)]
set isvec when predication enabled
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 15:24:14 +0000 (15:24 +0000)]
raise exception if permutation set to reserved value
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 15:22:32 +0000 (15:22 +0000)]
add comment on where reshape map is set up
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 14:00:57 +0000 (14:00 +0000)]
add reshaping algorithm for elements
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:57:49 +0000 (10:57 +0000)]
add stub "remap" of register offsets
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:32:14 +0000 (10:32 +0000)]
add sv shape CSRs
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:26:17 +0000 (10:26 +0000)]
add placeholder CSR uremap get
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:25:42 +0000 (10:25 +0000)]
add remap CSR set
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 10:17:39 +0000 (10:17 +0000)]
add reshape data structures and get_shape function
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 09:46:00 +0000 (09:46 +0000)]
add remap and shape sv csrs
Luke Kenneth Casson Leighton [Sat, 3 Nov 2018 08:01:58 +0000 (08:01 +0000)]
add debug on zeroing-predication c.mv
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
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
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
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
Luke Kenneth Casson Leighton [Fri, 2 Nov 2018 08:31:43 +0000 (08:31 +0000)]
increase regfile sizes to 128 entries
Luke Kenneth Casson Leighton [Thu, 1 Nov 2018 12:13:13 +0000 (12:13 +0000)]
reduce fp ops down to op width
Luke Kenneth Casson Leighton [Thu, 1 Nov 2018 10:03:40 +0000 (10:03 +0000)]
add instruction flen detection
Luke Kenneth Casson Leighton [Thu, 1 Nov 2018 06:14:40 +0000 (06:14 +0000)]
WRITE_FRD convert 64-bit to elwidth
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
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 14:14:39 +0000 (14:14 +0000)]
override elwidth in sv_proc_t::f64
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
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 13:14:51 +0000 (13:14 +0000)]
override elwidth in sv_proc_t::f64
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
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 07:47:05 +0000 (07:47 +0000)]
READ_FREG reads fp16 from offset into reg array
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 03:33:28 +0000 (03:33 +0000)]
add subdivisions
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 02:21:33 +0000 (02:21 +0000)]
return correct register elwidth for get_fpreg
Luke Kenneth Casson Leighton [Wed, 31 Oct 2018 00:21:51 +0000 (00:21 +0000)]
add 32-fp16 load/convert in WRITE_FRD
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
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
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
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
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
Luke Kenneth Casson Leighton [Tue, 30 Oct 2018 01:14:06 +0000 (01:14 +0000)]
add sv_proc_t f32 conversions when elwidth=16bit