Jacob Lifshay [Tue, 16 May 2023 04:34:20 +0000 (21:34 -0700)]
auto-compute FPSCR exception summary bits
Luke Kenneth Casson Leighton [Tue, 16 May 2023 01:31:43 +0000 (02:31 +0100)]
replace self.insnlog.append with self.trace function
that is explicitly inactive if the (new) insnlog input is None
https://bugs.libre-soc.org/show_bug.cgi?id=1039
Luke Kenneth Casson Leighton [Tue, 16 May 2023 01:30:40 +0000 (02:30 +0100)]
whoops no self.record, must be record argument
Luke Kenneth Casson Leighton [Tue, 16 May 2023 01:03:30 +0000 (02:03 +0100)]
add hazard profiles, add read_file function for tracelog
Luke Kenneth Casson Leighton [Mon, 15 May 2023 22:36:45 +0000 (23:36 +0100)]
skip reading ewsrc when SVMode is CROP
Luke Kenneth Casson Leighton [Mon, 15 May 2023 20:47:18 +0000 (21:47 +0100)]
add "WRONG" sv.cmp in test_pysvp64dis.py
Luke Kenneth Casson Leighton [Mon, 15 May 2023 20:46:18 +0000 (21:46 +0100)]
fix sv_analysis ldux, missing s/d:RA
Luke Kenneth Casson Leighton [Mon, 15 May 2023 20:43:41 +0000 (21:43 +0100)]
sort out sv.cmp zz (and correct unit tests)
Luke Kenneth Casson Leighton [Mon, 15 May 2023 20:06:56 +0000 (21:06 +0100)]
CROpFF3RM and CROpFF5RM were swapped round.
FF3 has the CR-bit
(and only zz - bit 6)
FF5 has only the inv-bit
Luke Kenneth Casson Leighton [Mon, 15 May 2023 19:47:02 +0000 (20:47 +0100)]
found the location to cut/paste the disassembly extra from
https://bugs.libre-soc.org/show_bug.cgi?id=1084
Luke Kenneth Casson Leighton [Mon, 15 May 2023 19:38:34 +0000 (20:38 +0100)]
RC1 does not exist in CROps, the selection of behaviour *called* RC1
is whether the CROp destination is a 3-bit CR *field* (RC1=0)
or if it is a 5-bit CR *bit* (RC1=1)
Luke Kenneth Casson Leighton [Mon, 15 May 2023 19:16:15 +0000 (20:16 +0100)]
fix empty slot in EXTRA
move (swap) Mode[0] and Mode[1] in CROps,
ff y/n is now Mode[1], VLI is now Mode[0].
https://bugs.libre-soc.org/show_bug.cgi?id=1083
Luke Kenneth Casson Leighton [Mon, 15 May 2023 19:01:38 +0000 (20:01 +0100)]
extraneous space
Luke Kenneth Casson Leighton [Mon, 15 May 2023 18:58:13 +0000 (19:58 +0100)]
remove extraneous space
Luke Kenneth Casson Leighton [Mon, 15 May 2023 15:38:01 +0000 (16:38 +0100)]
some empty slots now in RM and also source=dest in EXTRA
Luke Kenneth Casson Leighton [Mon, 15 May 2023 15:37:26 +0000 (16:37 +0100)]
ld/st mismatch in power_insn.py and sv_analysis.py
some EXTRA slots run empty now due to source/dest being the same
register (s:RA;d:RA)
Luke Kenneth Casson Leighton [Mon, 15 May 2023 15:12:42 +0000 (16:12 +0100)]
add sv.ffmadds test to test_pysvp64dis.py
Luke Kenneth Casson Leighton [Mon, 15 May 2023 15:07:04 +0000 (16:07 +0100)]
in DCT/FFT 3-in 2-out set had to make RT same source-dest EXTRA
puzzlingly this frees up 2 bits but still cannot do EXTRA3 due to needing
1 bit for selecting RS=RT+MAXVL or RS=RC
Luke Kenneth Casson Leighton [Mon, 15 May 2023 12:44:09 +0000 (13:44 +0100)]
move RG bit in CRops to Mode[2] from Mode[3] MSB0-numbering
Luke Kenneth Casson Leighton [Mon, 15 May 2023 11:55:20 +0000 (12:55 +0100)]
got linked-list-pointer-chasing working
including with LD/ST-with-update
https://bugs.libre-soc.org/show_bug.cgi?id=1047
Luke Kenneth Casson Leighton [Mon, 15 May 2023 11:46:29 +0000 (12:46 +0100)]
bug in power_insn.py where record.svp64 is None (??)
Luke Kenneth Casson Leighton [Mon, 15 May 2023 10:30:18 +0000 (11:30 +0100)]
have to now add LD/ST-update instructions to list of explicit-allowed
(as .long) due to extension of RA/RT with EXTRAs, the test RA!=RT is not
a 5-bit test it is a 7-bit test
Luke Kenneth Casson Leighton [Mon, 15 May 2023 10:15:48 +0000 (11:15 +0100)]
prevent duplicate EXTRA2/3 in power_insndb when assembling/disassembling
https://bugs.libre-soc.org/show_bug.cgi?id=1084
Dmitry Selyutin [Sun, 14 May 2023 20:25:34 +0000 (20:25 +0000)]
power_insn: filter out empty pcode lines
Dmitry Selyutin [Sun, 14 May 2023 20:15:09 +0000 (20:15 +0000)]
power_insn: fix verbose assembly extra info
Luke Kenneth Casson Leighton [Sun, 14 May 2023 16:34:10 +0000 (17:34 +0100)]
attempting to get LD/ST-Update SVP64 EXTRA3 working, getting some
interesting behaviour in pysvp64dis
https://bugs.libre-soc.org/show_bug.cgi?id=1084
Luke Kenneth Casson Leighton [Sun, 14 May 2023 15:44:24 +0000 (16:44 +0100)]
classify LD/ST-Immediate-Update as EXTRA3.
this allows continuous range on registers up to 128
Luke Kenneth Casson Leighton [Sun, 14 May 2023 15:35:41 +0000 (16:35 +0100)]
whitespace cleanup and remove as many PHP-style-formatters as i can stand
Jacob Lifshay [Sat, 13 May 2023 01:06:47 +0000 (18:06 -0700)]
add rest of bfp_* helpers needed to run fcvt js test
Jacob Lifshay [Sat, 13 May 2023 01:05:24 +0000 (18:05 -0700)]
fix `even` polarity in bfp_ROUND_TO_INTEGER
Jacob Lifshay [Sat, 13 May 2023 01:04:39 +0000 (18:04 -0700)]
ignore FPSCR in fcvt js test
Jacob Lifshay [Sat, 13 May 2023 01:03:58 +0000 (18:03 -0700)]
allow ignoring FPSCR in tests
Jacob Lifshay [Sat, 13 May 2023 01:02:56 +0000 (18:02 -0700)]
pow should not become self.pow
Jacob Lifshay [Sat, 13 May 2023 00:59:40 +0000 (17:59 -0700)]
fix bugs in fcvt* pseudocode
Luke Kenneth Casson Leighton [Fri, 12 May 2023 20:01:52 +0000 (21:01 +0100)]
check expected CR fields in Data-Dependent Fail-First
Jacob Lifshay [Fri, 12 May 2023 06:48:06 +0000 (23:48 -0700)]
add some bfp_* functions -- this isn't yet enough to run fcvt*
Jacob Lifshay [Fri, 12 May 2023 06:44:51 +0000 (23:44 -0700)]
make truediv available to pseudocode
technically `/` in pseudocode is supposed to be real number division,
with `รท` being division with result truncated to integer, however
luke decided to just use `/` for integer division in pseudocode,
so we need a way to work around that.
Jacob Lifshay [Fri, 12 May 2023 06:43:41 +0000 (23:43 -0700)]
add bfp classification predicates
Jacob Lifshay [Fri, 12 May 2023 06:38:09 +0000 (23:38 -0700)]
allow assigning BFPState and SelectableMSB0Fraction values in pseudo-code
Jacob Lifshay [Fri, 12 May 2023 06:35:41 +0000 (23:35 -0700)]
add support for *_flag global variables needed by bfp_* functions
Jacob Lifshay [Fri, 12 May 2023 06:32:16 +0000 (23:32 -0700)]
make lexer replace class with class_ since it's a python keyword
Jacob Lifshay [Fri, 12 May 2023 06:31:02 +0000 (23:31 -0700)]
fix SelectableMSB0Fraction's constructor
Jacob Lifshay [Fri, 12 May 2023 06:30:12 +0000 (23:30 -0700)]
undefined is a function that needs to be called
Jacob Lifshay [Fri, 12 May 2023 05:49:34 +0000 (22:49 -0700)]
fix broken FPSCR fields
Jacob Lifshay [Fri, 12 May 2023 01:53:59 +0000 (18:53 -0700)]
Revert "add stub reset_xflags function"
the function actually should be in pseudocode
This reverts commit
c44cd164b385a18fb635e7087c2a253c30d9c81c.
Luke Kenneth Casson Leighton [Thu, 11 May 2023 20:02:37 +0000 (21:02 +0100)]
corrections to dd-ffirst tests when VLi=0, the write to regfile
is *not* carried out on the failed test. but Rc=1 does (TODO)
Jacob Lifshay [Thu, 11 May 2023 08:05:04 +0000 (01:05 -0700)]
SelectableMSB0Fraction is now basically complete and correct afaict
Luke Kenneth Casson Leighton [Wed, 10 May 2023 22:10:16 +0000 (23:10 +0100)]
add very very very basic write-out of instruction log
Jacob Lifshay [Wed, 10 May 2023 19:54:28 +0000 (12:54 -0700)]
Merge branch 'support-fields'
https://bugs.libre-soc.org/show_bug.cgi?id=1072#c17
Luke Kenneth Casson Leighton [Wed, 10 May 2023 18:30:51 +0000 (19:30 +0100)]
add ld/st data-dependent fail-first /vli (inclusive)
Luke Kenneth Casson Leighton [Wed, 10 May 2023 18:28:27 +0000 (19:28 +0100)]
fix data-dependent fail-first on load
Dmitry Selyutin [Wed, 10 May 2023 17:17:58 +0000 (17:17 +0000)]
power_insn: remove redundant logs
Dmitry Selyutin [Wed, 10 May 2023 11:54:23 +0000 (04:54 -0700)]
cyclemodel/inorder: hide set inheritance
Dmitry Selyutin [Wed, 10 May 2023 11:52:49 +0000 (04:52 -0700)]
cyclemodel/inorder: fix coding style
Luke Kenneth Casson Leighton [Wed, 10 May 2023 11:33:26 +0000 (12:33 +0100)]
extend previous hard-coded magic constant (256) used to indicate
"effectively unlimited" (see check_extsign) out to 1024. it would be
better to set this at the bare-minimum limit (257, 258) as it requests
that python runtime create massive-large ints
Jacob Lifshay [Wed, 10 May 2023 08:21:00 +0000 (01:21 -0700)]
add WIP fp_working_format.py
Jacob Lifshay [Wed, 10 May 2023 05:17:49 +0000 (22:17 -0700)]
change FPSCR to a required parameter of ISACallerHelper
Jacob Lifshay [Wed, 10 May 2023 04:58:02 +0000 (21:58 -0700)]
Revert "remove now-unnecessary SO global, since XER[SO] syntax now translates to XER.SO"
luke wants the SO global to stay even though it's unnecessary
This reverts commit
a50eb1eb70ee305ba3091455cf1473abd4a74fb2.
Jacob Lifshay [Wed, 10 May 2023 02:30:03 +0000 (19:30 -0700)]
switch to using self.FPSCR
Jacob Lifshay [Wed, 10 May 2023 02:27:41 +0000 (19:27 -0700)]
switch to using FPSCRState for double2single.mdwn
Jacob Lifshay [Wed, 10 May 2023 02:16:37 +0000 (19:16 -0700)]
add self.FPSCR
Jacob Lifshay [Wed, 10 May 2023 02:12:01 +0000 (19:12 -0700)]
remove now-unnecessary SO global, since XER[SO] syntax now translates to XER.SO
Jacob Lifshay [Wed, 10 May 2023 01:54:26 +0000 (18:54 -0700)]
support FPSCR[RN] syntax that translates to FPSCR.RN
Jacob Lifshay [Wed, 10 May 2023 01:48:47 +0000 (18:48 -0700)]
add support for accessing XER using XER.SO syntax -- intended for new pseudocode
Luke Kenneth Casson Leighton [Tue, 9 May 2023 17:26:49 +0000 (18:26 +0100)]
separate ISAPages out from inherited ISA Class
Jacob Lifshay [Tue, 9 May 2023 07:27:19 +0000 (00:27 -0700)]
SetFX is not a normal function -- it can assign to its input
Jacob Lifshay [Tue, 9 May 2023 07:25:23 +0000 (00:25 -0700)]
switch fpcvt over to using FPSCR attributes
Jacob Lifshay [Tue, 9 May 2023 07:22:57 +0000 (00:22 -0700)]
add parser support for attributes like FPSCR.RN
Jacob Lifshay [Tue, 9 May 2023 07:13:08 +0000 (00:13 -0700)]
move apply_trailer into parser class
Jacob Lifshay [Tue, 9 May 2023 07:10:27 +0000 (00:10 -0700)]
bypass ply's eating SyntaxErrors
Jacob Lifshay [Tue, 9 May 2023 07:06:30 +0000 (00:06 -0700)]
FPSCR.FPRF can be assigned strings
Jacob Lifshay [Tue, 9 May 2023 07:05:30 +0000 (00:05 -0700)]
add XERState since XER has fields too
Jacob Lifshay [Tue, 9 May 2023 06:10:29 +0000 (23:10 -0700)]
fix some broken FieldSelectableInt handling
Luke Kenneth Casson Leighton [Sun, 7 May 2023 09:44:36 +0000 (10:44 +0100)]
comment TODO on Load-Fault in strncpy example
Luke Kenneth Casson Leighton [Sun, 7 May 2023 09:12:41 +0000 (10:12 +0100)]
add stub reset_xflags function
Dmitry Selyutin [Sun, 7 May 2023 08:13:46 +0000 (11:13 +0300)]
minor_19.csv: convert RA to RA0 for minmax
Luke Kenneth Casson Leighton [Sat, 6 May 2023 13:31:13 +0000 (14:31 +0100)]
add FPSCR to Test API (ExpectedState, SimState). untested
Luke Kenneth Casson Leighton [Sat, 6 May 2023 13:26:39 +0000 (14:26 +0100)]
add FPSCR to ISACaller
Luke Kenneth Casson Leighton [Sat, 6 May 2023 13:22:44 +0000 (14:22 +0100)]
notes: make FPSCR definition more like MSR (see openpower/consts.py)
Luke Kenneth Casson Leighton [Sat, 6 May 2023 13:21:04 +0000 (14:21 +0100)]
drastically simplify fpscr.py. extreme overcomplexity introducing
an entirely new paradigm - without discussion - creates a maintenance
headache we cannot afford
Luke Kenneth Casson Leighton [Sat, 6 May 2023 09:07:28 +0000 (10:07 +0100)]
add comment about why the new check has been added
Luke Kenneth Casson Leighton [Sat, 6 May 2023 09:02:43 +0000 (10:02 +0100)]
get table down to under 80 chars per line
Jacob Lifshay [Sat, 6 May 2023 03:38:22 +0000 (20:38 -0700)]
fix fpscr table parser error reporting
Jacob Lifshay [Sat, 6 May 2023 03:34:18 +0000 (20:34 -0700)]
add FPSCRState and FPSCRRecord and a FPSCR smoke-test
Jacob Lifshay [Fri, 5 May 2023 02:19:29 +0000 (19:19 -0700)]
add initial fmv/fcvt tests, though they're broken due to FPSCR being unimplemented
Jacob Lifshay [Fri, 5 May 2023 00:55:15 +0000 (17:55 -0700)]
add check that generated .py files are in .gitignore
Jacob Lifshay [Fri, 5 May 2023 00:34:27 +0000 (17:34 -0700)]
verify fields.txt forms' field separators ('|') line up with headers'
Konstantinos Margaritis [Thu, 4 May 2023 15:38:33 +0000 (15:38 +0000)]
merge maddrs/msubrs, unit tests changed accordingly
Konstantinos Margaritis [Thu, 4 May 2023 14:11:31 +0000 (14:11 +0000)]
Add 2 more instructions to help with 2-coeff butterfly
fdct_round_shift(a*c1 +/- b*c2)
They are to be used complementary to maddsubrs, so one can now
do this calculation in 3 instructions.
Added some unit tests to demonstrate the operation.
Konstantinos Margaritis [Mon, 1 May 2023 18:05:10 +0000 (18:05 +0000)]
use a simpler way to do the same thing
Konstantinos Margaritis [Sun, 30 Apr 2023 21:29:47 +0000 (21:29 +0000)]
Handle large 64-bit values, but only the low 64-bit half of the multiplication, add more tests
Konstantinos Margaritis [Sun, 30 Apr 2023 18:10:35 +0000 (18:10 +0000)]
do proper rounding, no rounding for SH=0 (for now), add tests
Konstantinos Margaritis [Sat, 29 Apr 2023 15:29:32 +0000 (15:29 +0000)]
Result needs rounding so add +1 to prod*
Konstantinos Margaritis [Fri, 28 Apr 2023 16:41:22 +0000 (16:41 +0000)]
handle negatives correctly by adding sign bit to final result
Konstantinos Margaritis [Fri, 28 Apr 2023 16:02:26 +0000 (16:02 +0000)]
almost there, positive values work, negative values differ by 1
Konstantinos Margaritis [Fri, 28 Apr 2023 11:48:48 +0000 (11:48 +0000)]
use proper register sizes
Konstantinos Margaritis [Fri, 28 Apr 2023 11:41:02 +0000 (11:41 +0000)]
MULS instead of MUL, RA instead of RT in in1
Konstantinos Margaritis [Fri, 28 Apr 2023 11:26:11 +0000 (11:26 +0000)]
Turns out DCTI-Form is another variant of A-Form
Konstantinos Margaritis [Fri, 28 Apr 2023 11:10:24 +0000 (11:10 +0000)]
minor fixes in pseudocode, CONST_UI->CONST_SH in minor_22.csv
Konstantinos Margaritis [Fri, 28 Apr 2023 09:46:45 +0000 (09:46 +0000)]
WIP: maddsubrs initial approach