openpower-isa.git
23 months agopower_insn: refactor operation order
Dmitry Selyutin [Sun, 4 Sep 2022 16:17:48 +0000 (19:17 +0300)]
power_insn: refactor operation order

23 months agowhoops forgot to write maxvl in PowerDecoder2
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 15:06:50 +0000 (16:06 +0100)]
whoops forgot to write maxvl in PowerDecoder2

23 months agopower_insn: drop argument in PPCDatabase
Dmitry Selyutin [Sun, 4 Sep 2022 13:28:29 +0000 (16:28 +0300)]
power_insn: drop argument in PPCDatabase

23 months agopower_table: replace prints with logging
Dmitry Selyutin [Sun, 4 Sep 2022 12:33:23 +0000 (15:33 +0300)]
power_table: replace prints with logging

23 months agopower_table: simplify the code
Dmitry Selyutin [Sun, 4 Sep 2022 12:31:35 +0000 (15:31 +0300)]
power_table: simplify the code

23 months agopower_insn: inherit PPCMultiRecord from frozenset
Dmitry Selyutin [Sun, 4 Sep 2022 12:12:01 +0000 (15:12 +0300)]
power_insn: inherit PPCMultiRecord from frozenset

23 months agopower_insn: try exact name matching first
Dmitry Selyutin [Sun, 4 Sep 2022 12:10:56 +0000 (15:10 +0300)]
power_insn: try exact name matching first

23 months agobrainmelt moment, added a comma into a comment in a csv file
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 11:35:34 +0000 (12:35 +0100)]
brainmelt moment, added a comma into a comment in a csv file

23 months agouse maxvl not vl in impicit-RS
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 11:05:33 +0000 (12:05 +0100)]
use maxvl not vl in impicit-RS

23 months agopower_insn: remove the whitespaces properly
Dmitry Selyutin [Sun, 4 Sep 2022 11:23:45 +0000 (14:23 +0300)]
power_insn: remove the whitespaces properly

23 months agocomments for 3-in 2-out ops
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 10:45:32 +0000 (11:45 +0100)]
comments for 3-in 2-out ops

23 months agowhitespace cleanup
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 10:32:08 +0000 (11:32 +0100)]
whitespace cleanup

23 months agocomments on ffmadds fft 3-in 2-out
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 10:29:05 +0000 (11:29 +0100)]
comments on ffmadds fft 3-in 2-out

23 months agoassert prints out XO
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 10:14:49 +0000 (11:14 +0100)]
assert prints out XO

23 months agomore comments
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 10:10:48 +0000 (11:10 +0100)]
more comments

23 months agopower_insn: refactor immediate operands
Dmitry Selyutin [Sun, 4 Sep 2022 10:06:24 +0000 (13:06 +0300)]
power_insn: refactor immediate operands

23 months agopower_insn: inherit Operands from tuple
Dmitry Selyutin [Sun, 4 Sep 2022 09:49:42 +0000 (12:49 +0300)]
power_insn: inherit Operands from tuple

23 months agocode-cleanup (comments) and rename "i" to "XO"
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 10:08:19 +0000 (11:08 +0100)]
code-cleanup (comments) and rename "i" to "XO"

23 months agopower_insn: support immediate operands
Dmitry Selyutin [Sun, 4 Sep 2022 09:26:48 +0000 (12:26 +0300)]
power_insn: support immediate operands

23 months agopower_insn: make operand classes public
Dmitry Selyutin [Sun, 4 Sep 2022 09:04:29 +0000 (12:04 +0300)]
power_insn: make operand classes public

23 months agoRevert "target_addr in b and bc pseudo-code has no corresponding"
Dmitry Selyutin [Sun, 4 Sep 2022 08:58:08 +0000 (11:58 +0300)]
Revert "target_addr in b and bc pseudo-code has no corresponding"

This reverts commit 7656b425de39cb28e6c52b9ee32c0f12517bae69.

23 months agoRevert "svbranch.mdwn: replace target_addr with BD"
Dmitry Selyutin [Sun, 4 Sep 2022 08:57:57 +0000 (11:57 +0300)]
Revert "svbranch.mdwn: replace target_addr with BD"

This reverts commit 617e5af215856d2b80f3c0d7c92d97e4a4e0b2fc.

23 months agopower_insn: switch back to target_addr
Dmitry Selyutin [Sun, 4 Sep 2022 09:02:41 +0000 (12:02 +0300)]
power_insn: switch back to target_addr

23 months agoreallocate opcodes for ffadds (converted to X-FORM) and fdmadds to make space for...
Jacob Lifshay [Sun, 4 Sep 2022 07:53:30 +0000 (00:53 -0700)]
reallocate opcodes for ffadds (converted to X-FORM) and fdmadds to make space for fptrans

23 months agoclear up assert, clean up table columns
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 01:18:32 +0000 (02:18 +0100)]
clear up assert, clean up table columns

23 months agofix power_table.py to use multi-entries
Luke Kenneth Casson Leighton [Sun, 4 Sep 2022 01:14:38 +0000 (02:14 +0100)]
fix power_table.py to use multi-entries

23 months agopower_insn: support SVP64 verbose mode
Dmitry Selyutin [Sat, 3 Sep 2022 21:15:22 +0000 (00:15 +0300)]
power_insn: support SVP64 verbose mode

23 months agopower_insn: refactor verbose output
Dmitry Selyutin [Sat, 3 Sep 2022 21:06:46 +0000 (00:06 +0300)]
power_insn: refactor verbose output

23 months agopower_insn: support verbose binary
Dmitry Selyutin [Sat, 3 Sep 2022 20:50:18 +0000 (23:50 +0300)]
power_insn: support verbose binary

23 months agopower_insn: support PPC multi-records
Dmitry Selyutin [Sat, 3 Sep 2022 20:15:54 +0000 (23:15 +0300)]
power_insn: support PPC multi-records

23 months agopower_insn: update disassembly target_addr
Dmitry Selyutin [Sat, 3 Sep 2022 17:44:33 +0000 (20:44 +0300)]
power_insn: update disassembly target_addr

23 months agopysvp64dis: support verbose mode
Dmitry Selyutin [Sat, 3 Sep 2022 17:07:46 +0000 (20:07 +0300)]
pysvp64dis: support verbose mode

23 months agopower_insn: support verbose disassembly mode
Dmitry Selyutin [Sat, 3 Sep 2022 14:18:39 +0000 (17:18 +0300)]
power_insn: support verbose disassembly mode

23 months agopower_insn: implement mode decoding
Dmitry Selyutin [Sat, 3 Sep 2022 10:52:05 +0000 (13:52 +0300)]
power_insn: implement mode decoding

23 months agopower_insn: support Rc detection
Dmitry Selyutin [Sat, 3 Sep 2022 14:51:48 +0000 (17:51 +0300)]
power_insn: support Rc detection

23 months agopower_insn: drop pack/unpack bit
Dmitry Selyutin [Sat, 3 Sep 2022 13:16:05 +0000 (16:16 +0300)]
power_insn: drop pack/unpack bit

23 months agopower_insn: rename normal field to simple
Dmitry Selyutin [Sat, 3 Sep 2022 11:16:30 +0000 (14:16 +0300)]
power_insn: rename normal field to simple

23 months agopower_insn: decouple IMM/IDX LD/ST modes
Dmitry Selyutin [Sat, 3 Sep 2022 11:08:47 +0000 (14:08 +0300)]
power_insn: decouple IMM/IDX LD/ST modes

23 months agopower_insn: support operands check
Dmitry Selyutin [Sat, 3 Sep 2022 10:09:30 +0000 (13:09 +0300)]
power_insn: support operands check

23 months agopower_insn: canonicalize Rc field name
Dmitry Selyutin [Sat, 3 Sep 2022 10:06:05 +0000 (13:06 +0300)]
power_insn: canonicalize Rc field name

23 months agopower_insn: support mode selector
Dmitry Selyutin [Fri, 2 Sep 2022 22:11:32 +0000 (01:11 +0300)]
power_insn: support mode selector

23 months agopower_insn: support normal mode
Dmitry Selyutin [Fri, 2 Sep 2022 22:04:48 +0000 (01:04 +0300)]
power_insn: support normal mode

23 months agopower_insn: support LD/ST indexed mode
Dmitry Selyutin [Fri, 2 Sep 2022 21:20:16 +0000 (00:20 +0300)]
power_insn: support LD/ST indexed mode

23 months agopower_insn: simplify fields
Dmitry Selyutin [Fri, 2 Sep 2022 21:17:39 +0000 (00:17 +0300)]
power_insn: simplify fields

23 months agopower_insn: decrease LDSTMode class nesting
Dmitry Selyutin [Fri, 2 Sep 2022 21:01:47 +0000 (00:01 +0300)]
power_insn: decrease LDSTMode class nesting

23 months agopower_insn: support LD/ST immediate mode
Dmitry Selyutin [Fri, 2 Sep 2022 20:46:10 +0000 (23:46 +0300)]
power_insn: support LD/ST immediate mode

23 months agopower_insn: make RM class public
Dmitry Selyutin [Fri, 2 Sep 2022 16:56:39 +0000 (19:56 +0300)]
power_insn: make RM class public

23 months agopower_insn: remap RM immediately
Dmitry Selyutin [Fri, 2 Sep 2022 16:34:21 +0000 (19:34 +0300)]
power_insn: remap RM immediately

23 months agopower_fields: allow slicing mappings
Dmitry Selyutin [Fri, 2 Sep 2022 21:34:29 +0000 (00:34 +0300)]
power_fields: allow slicing mappings

23 months agopower_fields: allow slicing fields
Dmitry Selyutin [Fri, 2 Sep 2022 16:34:11 +0000 (19:34 +0300)]
power_fields: allow slicing fields

23 months agopower_fields: create arrays from Array class
Dmitry Selyutin [Fri, 2 Sep 2022 15:04:32 +0000 (18:04 +0300)]
power_fields: create arrays from Array class

23 months agosv_binutils: shorten and simplify the output
Dmitry Selyutin [Fri, 2 Sep 2022 21:48:01 +0000 (00:48 +0300)]
sv_binutils: shorten and simplify the output

23 months agocreate list of opcodes by dict entry
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 18:38:53 +0000 (19:38 +0100)]
create list of opcodes by dict entry

23 months agocorrect table header
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 18:32:34 +0000 (19:32 +0100)]
correct table header

23 months agouse opcode directly
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 18:30:08 +0000 (19:30 +0100)]
use opcode directly

23 months agodivpoint 2 to match v3.1
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 18:07:39 +0000 (19:07 +0100)]
divpoint 2 to match v3.1

23 months agocreate correct divpoint to make match against v3.0 Appendix C
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 18:05:45 +0000 (19:05 +0100)]
create correct divpoint to make match against v3.0 Appendix C

23 months agocomplete markdown table
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 17:43:29 +0000 (18:43 +0100)]
complete markdown table

23 months agocorrect table-matching
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 17:00:54 +0000 (18:00 +0100)]
correct table-matching

23 months agoenumeration almost there
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 16:48:09 +0000 (17:48 +0100)]
enumeration almost there

23 months agoMSB0-order, xomask 31-start
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 16:37:47 +0000 (17:37 +0100)]
MSB0-order, xomask 31-start

23 months agoadd power_table.py start of creating markdown Appendix D tables
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 16:33:46 +0000 (17:33 +0100)]
add power_table.py start of creating markdown Appendix D tables

23 months agoadd svshape2 offset test demonstrating RA being offset by one
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 12:45:12 +0000 (13:45 +0100)]
add svshape2 offset test demonstrating RA being offset by one

23 months agoRevert "add inv option to svshape2 (only 1 bit)"
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 12:13:55 +0000 (13:13 +0100)]
Revert "add inv option to svshape2 (only 1 bit)"

This reverts commit 77a4f7104968859385e0b8117ea74041cbe6e436.

the reason is that the inclusion of an inv bit can only be
done by reducing the range of "offset", from 0-15 to 0-7.

as this is the *only way* to get at elements on EXTRA2-encoding
it is considered "unwise"

23 months agoadd inv option to svshape2 (only 1 bit)
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 11:59:06 +0000 (12:59 +0100)]
add inv option to svshape2 (only 1 bit)
https://bugs.libre-soc.org/show_bug.cgi?id=911

there is precious space: an sv.svshape2 can add more bits later

23 months agoupdate sv_analysis to create separate SVMode.LDST_IDX from SVMode.LDST_IMM
Luke Kenneth Casson Leighton [Sat, 3 Sep 2022 11:06:00 +0000 (12:06 +0100)]
update sv_analysis to create separate SVMode.LDST_IDX from SVMode.LDST_IMM
to help distinguish the two SVP64.RM LD/ST types

23 months agofix test_caller_svshape2.py
Jacob Lifshay [Sat, 3 Sep 2022 01:50:01 +0000 (18:50 -0700)]
fix test_caller_svshape2.py

23 months agoformat code
Jacob Lifshay [Sat, 3 Sep 2022 01:44:08 +0000 (18:44 -0700)]
format code

23 months agoadd test_caller_svshape2.py and make corrections to csv and fields.txt
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 20:46:53 +0000 (21:46 +0100)]
add test_caller_svshape2.py and make corrections to csv and fields.txt
yx needed to be SVM2-form and was in a different bitposition
offs needed to be 6:9 not 6:10
XO was off-by-one in minor_22.csv

23 months agoadd first svshape2 pseudocode, based on svindex
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 17:44:22 +0000 (18:44 +0100)]
add first svshape2 pseudocode, based on svindex
it is near-identical but is actually back to svshape in terms of
the SHAPE bits set. bits 18-20 of SVSHAPEn are set in "Matrix" mode
not "Indexed" mode though.

23 months agoadd svshape2 to ISACaller
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 17:41:52 +0000 (18:41 +0100)]
add svshape2 to ISACaller
first recognising the persistence mode bit, second as not an illegal op

23 months agoadd svshape2 to sv/trans/svp64.py
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 15:33:01 +0000 (16:33 +0100)]
add svshape2 to sv/trans/svp64.py
https://bugs.libre-soc.org/show_bug.cgi?id=911

23 months agoadd svshape2 to list of instructions in power_enums.py
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 15:29:11 +0000 (16:29 +0100)]
add svshape2 to list of instructions in power_enums.py

23 months agowhoops bit 25 is sk not vf in svshape2. matches with svindex
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 15:25:52 +0000 (16:25 +0100)]
whoops bit 25 is sk not vf in svshape2. matches with svindex

23 months agodisallow reserved SVrm values in svshape, svp64.py
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 15:16:47 +0000 (16:16 +0100)]
disallow reserved SVrm values in svshape, svp64.py

23 months agoadd svshape2 (stub pseudocode) fields, Form, and CSV file minor_22.csv
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 14:43:17 +0000 (15:43 +0100)]
add svshape2 (stub pseudocode) fields, Form, and CSV file minor_22.csv
https://bugs.libre-soc.org/show_bug.cgi?id=911

also added missing SVI-Form (svindex) SVd and rmm which are exactly
the same.  svshape2 is weird, it is a hybrid of svindex and svshapes

23 months agoadd explicit 13 patterns for svshape which make a hole for svshape2
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 14:40:59 +0000 (15:40 +0100)]
add explicit 13 patterns for svshape which make a hole for svshape2
svshape2 will take up 2 out of the 16 4-bit patterns so svshape has
to explicitly list them. this takes advantage of the new feature
added by ghostmansd: opcode merging, commit d5ec553e768

23 months agoshuffle down numbering after SVM to make room for SVM2
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 14:37:50 +0000 (15:37 +0100)]
shuffle down numbering after SVM to make room for SVM2
power_enums.py Form needs to make space for SVM2
(and svshape is no longer temporary)

23 months agoadd fix of out_sel in power_decoder.py formal proof
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 12:32:45 +0000 (13:32 +0100)]
add fix of out_sel in power_decoder.py formal proof
but there are others.  basically the list of enums needs to be
automatically listed and put into the matches

23 months agofix RCOE.RC_ONLY in formal test_decoder2.py
Luke Kenneth Casson Leighton [Fri, 2 Sep 2022 12:19:25 +0000 (13:19 +0100)]
fix RCOE.RC_ONLY in formal test_decoder2.py

23 months agopower_insn: drop custom Record representation
Dmitry Selyutin [Fri, 2 Sep 2022 08:43:06 +0000 (11:43 +0300)]
power_insn: drop custom Record representation

23 months agopower_insn: support opcode merging
Dmitry Selyutin [Thu, 1 Sep 2022 19:55:01 +0000 (22:55 +0300)]
power_insn: support opcode merging

23 months agopower_insn: support AA matching
Dmitry Selyutin [Thu, 1 Sep 2022 14:50:54 +0000 (17:50 +0300)]
power_insn: support AA matching

23 months agopower_insn: support LK matching
Dmitry Selyutin [Thu, 1 Sep 2022 13:05:36 +0000 (16:05 +0300)]
power_insn: support LK matching

23 months agopower_insn: refactor name matching algorithm
Dmitry Selyutin [Thu, 1 Sep 2022 12:55:39 +0000 (15:55 +0300)]
power_insn: refactor name matching algorithm

23 months agopower_insn: refactor databases composition
Dmitry Selyutin [Thu, 1 Sep 2022 15:04:24 +0000 (18:04 +0300)]
power_insn: refactor databases composition

23 months agopower_insn: refactor operands
Dmitry Selyutin [Thu, 1 Sep 2022 14:29:07 +0000 (17:29 +0300)]
power_insn: refactor operands

23 months agopower_insn: introduce binutils-like representation
Dmitry Selyutin [Thu, 1 Sep 2022 12:40:16 +0000 (15:40 +0300)]
power_insn: introduce binutils-like representation

23 months agopysvp64dis: refactor instruction loading
Dmitry Selyutin [Thu, 1 Sep 2022 12:32:38 +0000 (15:32 +0300)]
pysvp64dis: refactor instruction loading

23 months agopower_fields: allow comparing references
Dmitry Selyutin [Thu, 1 Sep 2022 12:32:06 +0000 (15:32 +0300)]
power_fields: allow comparing references

23 months agopower_insn: disable disassembly for prefixed instructions
Dmitry Selyutin [Thu, 1 Sep 2022 12:02:14 +0000 (15:02 +0300)]
power_insn: disable disassembly for prefixed instructions

23 months agopower_insn: switch target_addr to real fields
Dmitry Selyutin [Thu, 1 Sep 2022 11:54:11 +0000 (14:54 +0300)]
power_insn: switch target_addr to real fields

23 months agopower_insn: support GPR and FPR operands
Dmitry Selyutin [Wed, 31 Aug 2022 10:45:32 +0000 (13:45 +0300)]
power_insn: support GPR and FPR operands

23 months agopower_insn: support target_addr operands
Dmitry Selyutin [Wed, 31 Aug 2022 10:36:48 +0000 (13:36 +0300)]
power_insn: support target_addr operands

23 months agopower_insn: hide operand classes
Dmitry Selyutin [Wed, 31 Aug 2022 10:13:44 +0000 (13:13 +0300)]
power_insn: hide operand classes

23 months agopower_insn: introduce operand disassembly
Dmitry Selyutin [Wed, 31 Aug 2022 08:37:31 +0000 (11:37 +0300)]
power_insn: introduce operand disassembly

23 months agopysvp64dis: disassemble word instruction operands
Dmitry Selyutin [Tue, 30 Aug 2022 19:32:05 +0000 (22:32 +0300)]
pysvp64dis: disassemble word instruction operands

23 months agopower_insn: support operands
Dmitry Selyutin [Tue, 30 Aug 2022 19:06:00 +0000 (22:06 +0300)]
power_insn: support operands

23 months agomake tests pass again
Jacob Lifshay [Fri, 2 Sep 2022 06:34:11 +0000 (23:34 -0700)]
make tests pass again

23 months agoadd formal_test_temp to .gitignore
Jacob Lifshay [Fri, 2 Sep 2022 06:33:39 +0000 (23:33 -0700)]
add formal_test_temp to .gitignore