openpower-isa.git
2 years agouse brackets round (XLEN/2) in divw pseudocode
Luke Kenneth Casson Leighton [Fri, 3 Sep 2021 07:49:13 +0000 (08:49 +0100)]
use brackets round (XLEN/2) in divw pseudocode
[0]*XLEN/2 was being interpreted as ([0]*XLEN)/2

2 years agodetect native ppc64le
Luke Kenneth Casson Leighton [Thu, 2 Sep 2021 20:48:35 +0000 (21:48 +0100)]
detect native ppc64le

2 years agodetect native ppc64le
Luke Kenneth Casson Leighton [Thu, 2 Sep 2021 20:47:37 +0000 (21:47 +0100)]
detect native ppc64le

2 years agooff-by-one in srad, same as sld and srd: XLEN-6:XLEN-1 not XLEN-5:XLEN-1
Luke Kenneth Casson Leighton [Wed, 1 Sep 2021 19:29:24 +0000 (20:29 +0100)]
off-by-one in srad, same as sld and srd: XLEN-6:XLEN-1 not XLEN-5:XLEN-1

2 years agofixedshift: switch sradX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:28:26 +0000 (20:28 +0000)]
fixedshift: switch sradX to XLEN

2 years agooff-by-one in sld and srd, XLEN-6:XLEN-1 not XLEN-5:XLEN-1
Luke Kenneth Casson Leighton [Wed, 1 Sep 2021 19:26:33 +0000 (20:26 +0100)]
off-by-one in sld and srd, XLEN-6:XLEN-1 not XLEN-5:XLEN-1

2 years agofixedshift: switch srdX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:27:42 +0000 (20:27 +0000)]
fixedshift: switch srdX to XLEN

2 years agofixedshift: switch sldX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:26:51 +0000 (20:26 +0000)]
fixedshift: switch sldX to XLEN

2 years agofixedshift: switch srawX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:26:15 +0000 (20:26 +0000)]
fixedshift: switch srawX to XLEN

2 years agofixedshift: switch srwX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:25:04 +0000 (20:25 +0000)]
fixedshift: switch srwX to XLEN

2 years agofixedshift: switch slwX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:24:13 +0000 (20:24 +0000)]
fixedshift: switch slwX to XLEN

2 years agofixedshift: switch rldcrX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:22:14 +0000 (20:22 +0000)]
fixedshift: switch rldcrX to XLEN

2 years agofixedshift: switch rldclX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:21:40 +0000 (20:21 +0000)]
fixedshift: switch rldclX to XLEN

2 years agofixedshift: switch rlwnmX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:21:26 +0000 (20:21 +0000)]
fixedshift: switch rlwnmX to XLEN

2 years agofixedshift: switch extswsliX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:01:21 +0000 (20:01 +0000)]
fixedshift: switch extswsliX to XLEN

2 years agofixedshift: switch sradiX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:00:52 +0000 (20:00 +0000)]
fixedshift: switch sradiX to XLEN

2 years agofixedshift: switch srawiX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 20:00:08 +0000 (20:00 +0000)]
fixedshift: switch srawiX to XLEN

2 years agofixedshift: switch rldiclX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 19:58:04 +0000 (19:58 +0000)]
fixedshift: switch rldiclX to XLEN

2 years agofixedshift: switch rlwimiX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 19:48:12 +0000 (19:48 +0000)]
fixedshift: switch rlwimiX to XLEN

2 years agofixedshift: switch rlwinmX to XLEN
Dmitry Selyutin [Tue, 31 Aug 2021 19:40:55 +0000 (19:40 +0000)]
fixedshift: switch rlwinmX to XLEN

2 years agofixedarith: switch divwX to XLEN
Dmitry Selyutin [Sun, 29 Aug 2021 18:16:26 +0000 (18:16 +0000)]
fixedarith: switch divwX to XLEN

2 years agofixedarith: switch divweX to XLEN
Dmitry Selyutin [Sun, 29 Aug 2021 18:22:22 +0000 (18:22 +0000)]
fixedarith: switch divweX to XLEN

2 years agofixedarith: switch divweuX to XLEN
Dmitry Selyutin [Sun, 29 Aug 2021 19:34:42 +0000 (19:34 +0000)]
fixedarith: switch divweuX to XLEN

2 years agofixedarith: switch divdX to XLEN
Dmitry Selyutin [Sun, 29 Aug 2021 19:40:12 +0000 (19:40 +0000)]
fixedarith: switch divdX to XLEN

2 years agofixedarith: switch divdeX to XLEN
Dmitry Selyutin [Sun, 29 Aug 2021 19:44:52 +0000 (19:44 +0000)]
fixedarith: switch divdeX to XLEN

2 years agofixedarith: switch modsd to XLEN
Dmitry Selyutin [Sun, 29 Aug 2021 19:46:51 +0000 (19:46 +0000)]
fixedarith: switch modsd to XLEN

2 years agofixedarith: switch modsw to XLEN
Dmitry Selyutin [Sun, 29 Aug 2021 19:38:48 +0000 (19:38 +0000)]
fixedarith: switch modsw to XLEN

2 years agoadjusted popcntw to simplify by using temp vars
Luke Kenneth Casson Leighton [Tue, 31 Aug 2021 11:19:49 +0000 (12:19 +0100)]
adjusted popcntw to simplify by using temp vars
https://bugs.libre-soc.org/show_bug.cgi?id=671#c50
e <- (XLEN/2)-1
s <- i*XLEN/2

2 years agofixedload: switch lbz to XLEN
Dmitry Selyutin [Mon, 30 Aug 2021 08:41:16 +0000 (08:41 +0000)]
fixedload: switch lbz to XLEN

2 years agofixedload: switch lbzx to XLEN
Dmitry Selyutin [Mon, 30 Aug 2021 08:41:49 +0000 (08:41 +0000)]
fixedload: switch lbzx to XLEN

2 years agofixedload: switch lbzu to XLEN
Dmitry Selyutin [Mon, 30 Aug 2021 08:42:37 +0000 (08:42 +0000)]
fixedload: switch lbzu to XLEN

2 years agofixedload: switch lbzux to XLEN
Dmitry Selyutin [Mon, 30 Aug 2021 08:42:51 +0000 (08:42 +0000)]
fixedload: switch lbzux to XLEN

2 years agofixedload: switch lhz to XLEN
Dmitry Selyutin [Mon, 30 Aug 2021 08:43:50 +0000 (08:43 +0000)]
fixedload: switch lhz to XLEN

2 years agofixedload: switch lhzx to XLEN
Dmitry Selyutin [Mon, 30 Aug 2021 08:48:10 +0000 (08:48 +0000)]
fixedload: switch lhzx to XLEN

2 years agofixedload: switch lhzu to XLEN
Dmitry Selyutin [Mon, 30 Aug 2021 08:48:37 +0000 (08:48 +0000)]
fixedload: switch lhzu to XLEN

2 years agofixedload: switch lhzux to XLEN
Dmitry Selyutin [Mon, 30 Aug 2021 08:49:23 +0000 (08:49 +0000)]
fixedload: switch lhzux to XLEN

2 years agofixedlogical: switch cnttzd to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 15:09:14 +0000 (15:09 +0000)]
fixedlogical: switch cnttzd to XLEN

2 years agofixedlogical: bpermd fixup
Dmitry Selyutin [Mon, 30 Aug 2021 19:49:48 +0000 (19:49 +0000)]
fixedlogical: bpermd fixup

2 years agofixedlogical: switch popcntw to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 14:52:01 +0000 (14:52 +0000)]
fixedlogical: switch popcntw to XLEN

2 years agofixedarith: switch modud to XLEN
Dmitry Selyutin [Tue, 24 Aug 2021 12:01:25 +0000 (12:01 +0000)]
fixedarith: switch modud to XLEN

2 years agofixedarith: switch divdeuX to XLEN
Dmitry Selyutin [Tue, 24 Aug 2021 11:59:10 +0000 (11:59 +0000)]
fixedarith: switch divdeuX to XLEN

2 years agofixedarith: switch moduw to XLEN
Dmitry Selyutin [Mon, 23 Aug 2021 19:50:22 +0000 (19:50 +0000)]
fixedarith: switch moduw to XLEN

2 years agofixedarith: switch divwuX to XLEN
Dmitry Selyutin [Mon, 23 Aug 2021 19:04:28 +0000 (19:04 +0000)]
fixedarith: switch divwuX to XLEN

2 years agofixedarith: switch divduX to XLEN
Dmitry Selyutin [Tue, 24 Aug 2021 11:51:55 +0000 (11:51 +0000)]
fixedarith: switch divduX to XLEN

2 years agofixedarith: switch maddhd to XLEN
Dmitry Selyutin [Tue, 24 Aug 2021 11:45:36 +0000 (11:45 +0000)]
fixedarith: switch maddhd to XLEN

2 years agofixedarith: switch maddld to XLEN
Dmitry Selyutin [Tue, 24 Aug 2021 11:49:14 +0000 (11:49 +0000)]
fixedarith: switch maddld to XLEN

2 years agofixedarith: switch maddhdu to XLEN
Dmitry Selyutin [Tue, 24 Aug 2021 11:48:17 +0000 (11:48 +0000)]
fixedarith: switch maddhdu to XLEN

2 years agoadd short mulli random test
Luke Kenneth Casson Leighton [Mon, 30 Aug 2021 16:24:56 +0000 (17:24 +0100)]
add short mulli random test

2 years agofixedarith: switch mulli to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 09:06:13 +0000 (09:06 +0000)]
fixedarith: switch mulli to XLEN

2 years agofixedarith: switch mulhdu to XLEN
Dmitry Selyutin [Tue, 24 Aug 2021 11:41:45 +0000 (11:41 +0000)]
fixedarith: switch mulhdu to XLEN

2 years agoadd mulhdu random test
Luke Kenneth Casson Leighton [Mon, 30 Aug 2021 16:12:58 +0000 (17:12 +0100)]
add mulhdu random test

2 years agofixedarith: switch mulhd to XLEN
Dmitry Selyutin [Tue, 24 Aug 2021 11:41:02 +0000 (11:41 +0000)]
fixedarith: switch mulhd to XLEN

2 years agofixedarith: switch mulldX to XLEN
Dmitry Selyutin [Mon, 23 Aug 2021 19:51:28 +0000 (19:51 +0000)]
fixedarith: switch mulldX to XLEN

2 years agofixedarith: switch mulhwu to XLEN
Dmitry Selyutin [Mon, 23 Aug 2021 18:56:30 +0000 (18:56 +0000)]
fixedarith: switch mulhwu to XLEN

2 years agofixedarith: switch mullwX to XLEN
Dmitry Selyutin [Mon, 23 Aug 2021 18:55:01 +0000 (18:55 +0000)]
fixedarith: switch mullwX to XLEN

2 years agoquite a big intrusive change in auto-assignment
Luke Kenneth Casson Leighton [Mon, 30 Aug 2021 15:03:07 +0000 (16:03 +0100)]
quite a big intrusive change in auto-assignment
variables that do not exist get auto-created based on the bit-width
at which they are first encountered

    prod[0:31]

creates a variable with

    prod = concat(0, repeat=32)

however this needs to be more complicated rather than just assume
it is a pair of constants

expressions can now be

     prod[0:XLEN-1]

which gets an ast.BinOp expression created on the RHS.

therefore allow the assignment "var = concat(...., repeat=xxxx)"
to accept computed expressions by returning an ast.BinOp(UPPER, "-", LOWER)
so that the resultant python code performs the subtract calculation

2 years agoassignment test pattern-matching not adequate, adding quick test
Luke Kenneth Casson Leighton [Mon, 30 Aug 2021 14:39:12 +0000 (15:39 +0100)]
assignment test pattern-matching not adequate, adding quick test

2 years agofixedarith: switch mulhw to XLEN
Dmitry Selyutin [Mon, 23 Aug 2021 18:51:30 +0000 (18:51 +0000)]
fixedarith: switch mulhw to XLEN

2 years agofixedlogical: switch bpermd to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 15:10:48 +0000 (15:10 +0000)]
fixedlogical: switch bpermd to XLEN

2 years agofixedlogical: switch cntlzd to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 15:08:31 +0000 (15:08 +0000)]
fixedlogical: switch cntlzd to XLEN

2 years agofixedlogical: switch popcntd to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 15:07:56 +0000 (15:07 +0000)]
fixedlogical: switch popcntd to XLEN

2 years agofixedlogical: switch extsw to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 15:04:38 +0000 (15:04 +0000)]
fixedlogical: switch extsw to XLEN

2 years agofixedlogical: switch prtyw to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 15:03:59 +0000 (15:03 +0000)]
fixedlogical: switch prtyw to XLEN

2 years agofixedlogical: switch prtyd to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 15:02:14 +0000 (15:02 +0000)]
fixedlogical: switch prtyd to XLEN

2 years agofixedlogical: switch popcntb to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 14:51:11 +0000 (14:51 +0000)]
fixedlogical: switch popcntb to XLEN

2 years agofixedlogical: switch cmpb to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 13:05:42 +0000 (13:05 +0000)]
fixedlogical: switch cmpb to XLEN

2 years agofixedlogical: switch cntlzwX to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 13:03:29 +0000 (13:03 +0000)]
fixedlogical: switch cntlzwX to XLEN

2 years agofix RANGE function, reverse direction needed
Luke Kenneth Casson Leighton [Mon, 30 Aug 2021 12:50:21 +0000 (13:50 +0100)]
fix RANGE function, reverse direction needed

2 years agofixedlogical: switch xori to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 13:00:03 +0000 (13:00 +0000)]
fixedlogical: switch xori to XLEN

2 years agofixedlogical: switch xoris to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 12:59:42 +0000 (12:59 +0000)]
fixedlogical: switch xoris to XLEN

2 years agofixedlogical: switch oris to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 12:59:01 +0000 (12:59 +0000)]
fixedlogical: switch oris to XLEN

2 years agofixedlogical: switch andis. to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 12:58:37 +0000 (12:58 +0000)]
fixedlogical: switch andis. to XLEN

2 years agofixedlogical: switch ori to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 12:57:41 +0000 (12:57 +0000)]
fixedlogical: switch ori to XLEN

2 years agoalso add pattern-recognition for just
Luke Kenneth Casson Leighton [Mon, 30 Aug 2021 12:05:59 +0000 (13:05 +0100)]
also add pattern-recognition for just

     [0] * XLEN

have to keep a close eye on this

2 years agofix pattern-match for an expression such as "XLEN-16" when looking
Luke Kenneth Casson Leighton [Mon, 30 Aug 2021 12:03:53 +0000 (13:03 +0100)]
fix pattern-match for an expression such as "XLEN-16" when looking
for concat substitutions

[item] * NUMBER was replaced with
concat(item, repeat=NUMBER)

but [item] * (XLEN-16) was not matching

by adding a HACK which spots ast.Binop then [item]*(XLEN-16) can be
recognised

2 years agomissed data_o/i to i/o_data conversion
Luke Kenneth Casson Leighton [Mon, 30 Aug 2021 11:36:29 +0000 (12:36 +0100)]
missed data_o/i to i/o_data conversion

2 years agofixedlogical: switch andi. to XLEN
Dmitry Selyutin [Wed, 25 Aug 2021 12:57:18 +0000 (12:57 +0000)]
fixedlogical: switch andi. to XLEN

2 years agopywriter: support RANGE helper
Dmitry Selyutin [Wed, 25 Aug 2021 14:44:23 +0000 (14:44 +0000)]
pywriter: support RANGE helper

2 years agoparser: support unary minus properly
Dmitry Selyutin [Sun, 22 Aug 2021 19:19:00 +0000 (19:19 +0000)]
parser: support unary minus properly

2 years agolexer: t_NUMBER should not grab minus sign
Dmitry Selyutin [Sun, 22 Aug 2021 18:27:09 +0000 (18:27 +0000)]
lexer: t_NUMBER should not grab minus sign

2 years agoadd another quick test to pseudo parser
Luke Kenneth Casson Leighton [Sun, 22 Aug 2021 19:49:01 +0000 (20:49 +0100)]
add another quick test to pseudo parser

2 years agoset XLEN=64 in ISACaller
Luke Kenneth Casson Leighton [Sat, 21 Aug 2021 11:52:13 +0000 (12:52 +0100)]
set XLEN=64 in ISACaller

2 years agotest_caller_bcd: make bit changes more VHDL-like
Dmitry Selyutin [Thu, 19 Aug 2021 17:50:17 +0000 (17:50 +0000)]
test_caller_bcd: make bit changes more VHDL-like

2 years agotest_caller_bcd: fix and refactor addg6s test loop
Dmitry Selyutin [Thu, 19 Aug 2021 17:30:42 +0000 (17:30 +0000)]
test_caller_bcd: fix and refactor addg6s test loop

2 years agotest_caller_bcd: drop dead code
Dmitry Selyutin [Thu, 19 Aug 2021 16:09:58 +0000 (16:09 +0000)]
test_caller_bcd: drop dead code

2 years agotest_caller_bcd: mention reference implementation
Dmitry Selyutin [Thu, 19 Aug 2021 15:46:06 +0000 (15:46 +0000)]
test_caller_bcd: mention reference implementation

2 years agotest_caller_bcd: refactor addg6s test
Dmitry Selyutin [Thu, 19 Aug 2021 15:40:32 +0000 (15:40 +0000)]
test_caller_bcd: refactor addg6s test

This patch should vastly simplify and speed up the addg6s test. Most
importantly, we drop half adders and full adders, making use of the
fact that Python uses big integers directly. Also, we don't bother
generating all posible products of BCD numbers; instead, we simply
resort to random number generator. Note, however, that we only check
the numbers that are correct from BCD point of view.

2 years agowhitespace, below 80 char limit
Luke Kenneth Casson Leighton [Thu, 19 Aug 2021 16:52:20 +0000 (17:52 +0100)]
whitespace, below 80 char limit

2 years agotest_caller_bcd: mark addg6s test as slowpoke
Dmitry Selyutin [Wed, 18 Aug 2021 20:03:01 +0000 (20:03 +0000)]
test_caller_bcd: mark addg6s test as slowpoke

2 years agotest_caller_bcd: addg6s sketch
Dmitry Selyutin [Wed, 18 Aug 2021 19:57:47 +0000 (19:57 +0000)]
test_caller_bcd: addg6s sketch

2 years agotest_caller_bcd: align tables with spec and cases
Dmitry Selyutin [Tue, 17 Aug 2021 19:04:22 +0000 (19:04 +0000)]
test_caller_bcd: align tables with spec and cases

2 years agotest_caller_bcd: drop temporary code
Dmitry Selyutin [Tue, 17 Aug 2021 19:03:15 +0000 (19:03 +0000)]
test_caller_bcd: drop temporary code

2 years agobring qemu sim size down to 1GB
Luke Kenneth Casson Leighton [Mon, 16 Aug 2021 19:52:56 +0000 (20:52 +0100)]
bring qemu sim size down to 1GB

2 years agoadd subTest back in to bcd tst
Luke Kenneth Casson Leighton [Sun, 15 Aug 2021 22:07:28 +0000 (23:07 +0100)]
add subTest back in to bcd tst

2 years agowhitespace (keep below 80 chars)
Luke Kenneth Casson Leighton [Sun, 15 Aug 2021 21:59:35 +0000 (22:59 +0100)]
whitespace (keep below 80 chars)

2 years agowhitespace (below 80 chars)
Luke Kenneth Casson Leighton [Sun, 15 Aug 2021 21:56:26 +0000 (22:56 +0100)]
whitespace (below 80 chars)

2 years agotake copy of GPR/FPR inputs into ISACaller
Luke Kenneth Casson Leighton [Sun, 15 Aug 2021 21:53:52 +0000 (22:53 +0100)]
take copy of GPR/FPR inputs into ISACaller

2 years agoallow constructor of SelectableInt to pass in (and copy)
Luke Kenneth Casson Leighton [Sun, 15 Aug 2021 21:52:58 +0000 (22:52 +0100)]
allow constructor of SelectableInt to pass in (and copy)
another SelectableInt

2 years agotest_caller_bcd: basic batch mode support
Dmitry Selyutin [Sun, 15 Aug 2021 18:01:23 +0000 (18:01 +0000)]
test_caller_bcd: basic batch mode support

2 years agono python files to be committed in isafunctions
Luke Kenneth Casson Leighton [Sun, 15 Aug 2021 18:14:28 +0000 (19:14 +0100)]
no python files to be committed in isafunctions