openpower-isa.git
2 years agopower_insn: decouple base normal RM
Dmitry Selyutin [Sat, 17 Sep 2022 18:43:01 +0000 (21:43 +0300)]
power_insn: decouple base normal RM

2 years agopower_insn: support saturation mode
Dmitry Selyutin [Sat, 17 Sep 2022 16:17:33 +0000 (19:17 +0300)]
power_insn: support saturation mode

2 years agopower_insn: support dz/sz specifiers
Dmitry Selyutin [Sat, 17 Sep 2022 16:07:53 +0000 (19:07 +0300)]
power_insn: support dz/sz specifiers

2 years agoadd zz mode to sv/trans/svp64.py as a hack
Luke Kenneth Casson Leighton [Sat, 17 Sep 2022 19:48:57 +0000 (20:48 +0100)]
add zz mode to sv/trans/svp64.py as a hack

2 years agoremove sv.setvl/pk/up/pu - these are all gone in favour of using
Luke Kenneth Casson Leighton [Sat, 17 Sep 2022 18:53:34 +0000 (19:53 +0100)]
remove sv.setvl/pk/up/pu - these are all gone in favour of using
a hack-job on svstep 0b11nn

2 years agoadd MASK_SRC to power_insn.py (SVmask_src from enums)
Luke Kenneth Casson Leighton [Sat, 17 Sep 2022 18:46:18 +0000 (19:46 +0100)]
add MASK_SRC to power_insn.py (SVmask_src from enums)

2 years agoadd SVmask_src enum, rename fields to EN and NO to make it easier
Luke Kenneth Casson Leighton [Sat, 17 Sep 2022 18:37:52 +0000 (19:37 +0100)]
add SVmask_src enum, rename fields to EN and NO to make it easier
to detect/read

2 years agoas a double-check sv_analysis new CSV column "SM" was all set to zero
Luke Kenneth Casson Leighton [Sat, 17 Sep 2022 18:31:30 +0000 (19:31 +0100)]
as a double-check sv_analysis new CSV column "SM" was all set to zero
by now changing it to 1, this diff/commit shows exactly which
files are now classified as MASK_SRC=enabled

2 years agoadd a "SM" column into RM*.csv (and LDSTRM*.csv) identifying if MASK_SRC
Luke Kenneth Casson Leighton [Sat, 17 Sep 2022 18:23:25 +0000 (19:23 +0100)]
add a "SM" column into RM*.csv (and LDSTRM*.csv) identifying if MASK_SRC
is active.  this makes disassembly much easier, no need to check RM type
or count the number of registers

2 years agoadd sv.add/ew=XX test to test_pysvp64dis.py
Luke Kenneth Casson Leighton [Sat, 17 Sep 2022 17:50:41 +0000 (18:50 +0100)]
add sv.add/ew=XX test to test_pysvp64dis.py

2 years agoremove pack/unpack modes from power_insn.py, they no longer exist
Luke Kenneth Casson Leighton [Sat, 17 Sep 2022 17:11:33 +0000 (18:11 +0100)]
remove pack/unpack modes from power_insn.py, they no longer exist

2 years agoselectable_int: drop redundant operators
Dmitry Selyutin [Sat, 17 Sep 2022 15:42:17 +0000 (18:42 +0300)]
selectable_int: drop redundant operators

2 years agopower_insn: support vec2/vec3/vec4
Dmitry Selyutin [Sat, 17 Sep 2022 13:54:01 +0000 (16:54 +0300)]
power_insn: support vec2/vec3/vec4

2 years agopower_insn: support specifiers
Dmitry Selyutin [Sat, 17 Sep 2022 13:52:34 +0000 (16:52 +0300)]
power_insn: support specifiers

2 years agopower_fields: fix comparison operators
Dmitry Selyutin [Sat, 17 Sep 2022 13:51:50 +0000 (16:51 +0300)]
power_fields: fix comparison operators

2 years agopower_insn: refactor and fix RM mappings
Dmitry Selyutin [Sat, 17 Sep 2022 13:03:30 +0000 (16:03 +0300)]
power_insn: refactor and fix RM mappings

2 years agopower_fields: fix field slicing
Dmitry Selyutin [Sat, 17 Sep 2022 12:57:40 +0000 (15:57 +0300)]
power_fields: fix field slicing

2 years agopower_insn: fix mapping bits accessors
Dmitry Selyutin [Sat, 17 Sep 2022 12:44:28 +0000 (15:44 +0300)]
power_insn: fix mapping bits accessors

2 years agopower_fields: support traversing over instances
Dmitry Selyutin [Sat, 17 Sep 2022 12:41:59 +0000 (15:41 +0300)]
power_fields: support traversing over instances

2 years agopower_insn: drop redundant table
Dmitry Selyutin [Sat, 17 Sep 2022 09:13:35 +0000 (12:13 +0300)]
power_insn: drop redundant table

2 years agopower_fields: inherit docstrings upon remap
Dmitry Selyutin [Sat, 17 Sep 2022 09:13:11 +0000 (12:13 +0300)]
power_fields: inherit docstrings upon remap

2 years agoadd vec2/3/4 test_pysvp64dis test
Luke Kenneth Casson Leighton [Sat, 17 Sep 2022 15:53:28 +0000 (16:53 +0100)]
add vec2/3/4 test_pysvp64dis test

2 years agocomments on test_9_fptrans
Luke Kenneth Casson Leighton [Fri, 16 Sep 2022 21:44:45 +0000 (22:44 +0100)]
comments on test_9_fptrans

2 years agotest_power_decoder: mark minor_19.csv as opint
Dmitry Selyutin [Fri, 16 Sep 2022 19:50:40 +0000 (22:50 +0300)]
test_power_decoder: mark minor_19.csv as opint

2 years agotest_pysvp64dis: test fptrans
Dmitry Selyutin [Fri, 16 Sep 2022 16:54:04 +0000 (19:54 +0300)]
test_pysvp64dis: test fptrans

2 years agoselectable_int: replace bit_count with bit_length
Dmitry Selyutin [Fri, 16 Sep 2022 16:54:04 +0000 (19:54 +0300)]
selectable_int: replace bit_count with bit_length

2 years agosv_binutils_fptrans: adopt script for reuse
Dmitry Selyutin [Fri, 16 Sep 2022 16:54:04 +0000 (19:54 +0300)]
sv_binutils_fptrans: adopt script for reuse

2 years agopower_insn: postpone updating per-instruction operands
Dmitry Selyutin [Fri, 16 Sep 2022 14:39:51 +0000 (17:39 +0300)]
power_insn: postpone updating per-instruction operands

2 years agopower_insn: perform faster PPC database lookups
Dmitry Selyutin [Thu, 15 Sep 2022 20:56:49 +0000 (23:56 +0300)]
power_insn: perform faster PPC database lookups

2 years agosv_binutils_fptrans: fix disassembly
Dmitry Selyutin [Wed, 14 Sep 2022 23:04:35 +0000 (02:04 +0300)]
sv_binutils_fptrans: fix disassembly

2 years agosv_binutils_fptrans: fptrans binutils generator
Dmitry Selyutin [Wed, 14 Sep 2022 23:04:35 +0000 (02:04 +0300)]
sv_binutils_fptrans: fptrans binutils generator

2 years agopower_insn: support instruction bytes conversion
Dmitry Selyutin [Wed, 14 Sep 2022 23:04:12 +0000 (02:04 +0300)]
power_insn: support instruction bytes conversion

2 years agoselectable_int: allow setting multiple bit
Dmitry Selyutin [Wed, 14 Sep 2022 22:50:10 +0000 (01:50 +0300)]
selectable_int: allow setting multiple bit

2 years agopower_insn: allow accessing instruction bits
Dmitry Selyutin [Wed, 14 Sep 2022 22:49:15 +0000 (01:49 +0300)]
power_insn: allow accessing instruction bits

2 years agoadd minor_4.csv for maddld/maddhdu/maddhd and to insn_db.csv
Luke Kenneth Casson Leighton [Thu, 15 Sep 2022 20:48:28 +0000 (21:48 +0100)]
add minor_4.csv for maddld/maddhdu/maddhd and to insn_db.csv
also add test_pysvp64dis.py to check it asm/disasms

2 years agofix sprset mtspr/mfspr pseudocode with wrong definition of
Luke Kenneth Casson Leighton [Thu, 15 Sep 2022 00:46:14 +0000 (01:46 +0100)]
fix sprset mtspr/mfspr pseudocode with wrong definition of
spr, not existent in the Power v3.0 spec.

https://bugs.libre-soc.org/show_bug.cgi?id=917#c54
works fine, required removal of hack in ISACaller to uppercase spr
to SPR

2 years agoadd svp64 fptrans tests
Jacob Lifshay [Wed, 14 Sep 2022 15:35:03 +0000 (08:35 -0700)]
add svp64 fptrans tests

2 years agoinclude *all* fprs/gprs/cr-fields in SimState
Jacob Lifshay [Wed, 14 Sep 2022 15:33:55 +0000 (08:33 -0700)]
include *all* fprs/gprs/cr-fields in SimState

2 years agofix sv_analysis for fpown and frootn
Jacob Lifshay [Wed, 14 Sep 2022 15:33:10 +0000 (08:33 -0700)]
fix sv_analysis for fpown and frootn

2 years agofix some typos
Jacob Lifshay [Wed, 14 Sep 2022 15:31:34 +0000 (08:31 -0700)]
fix some typos

2 years agopower_insn: support signed operands
Dmitry Selyutin [Tue, 13 Sep 2022 19:12:37 +0000 (22:12 +0300)]
power_insn: support signed operands

2 years agopower_insn: support branch RM
Dmitry Selyutin [Tue, 13 Sep 2022 12:18:41 +0000 (15:18 +0300)]
power_insn: support branch RM

2 years agopower_insn: support CR RM
Dmitry Selyutin [Tue, 13 Sep 2022 11:48:40 +0000 (14:48 +0300)]
power_insn: support CR RM

2 years agopower_enums: convert SVExtra to RegType
Dmitry Selyutin [Tue, 13 Sep 2022 13:09:52 +0000 (16:09 +0300)]
power_enums: convert SVExtra to RegType

2 years agopower_insn: refactor RM mapping
Dmitry Selyutin [Mon, 12 Sep 2022 19:28:52 +0000 (22:28 +0300)]
power_insn: refactor RM mapping

2 years agosv_binutils: support multiple opcodes; minor fixes
Dmitry Selyutin [Mon, 12 Sep 2022 19:28:24 +0000 (22:28 +0300)]
sv_binutils: support multiple opcodes; minor fixes

2 years agocorrect assrmbler in test_pysvpy4dis.py
Luke Kenneth Casson Leighton [Tue, 13 Sep 2022 19:31:45 +0000 (20:31 +0100)]
correct assrmbler in test_pysvpy4dis.py

2 years agofix X-FORM lines for fptrans -- I forgot Rc
Jacob Lifshay [Tue, 13 Sep 2022 18:01:29 +0000 (11:01 -0700)]
fix X-FORM lines for fptrans -- I forgot Rc

2 years agoadd missing X-FORM lines for fptrans
Jacob Lifshay [Tue, 13 Sep 2022 17:59:22 +0000 (10:59 -0700)]
add missing X-FORM lines for fptrans

2 years agoadd comment that fptrans test cases output values are probably not all correct
Jacob Lifshay [Tue, 13 Sep 2022 17:30:55 +0000 (10:30 -0700)]
add comment that fptrans test cases output values are probably not all correct

[skip ci]

2 years agoadd new fptrans unit tests
Jacob Lifshay [Tue, 13 Sep 2022 17:19:57 +0000 (10:19 -0700)]
add new fptrans unit tests

2 years agoadd fptrans support to isa caller
Jacob Lifshay [Tue, 13 Sep 2022 17:19:06 +0000 (10:19 -0700)]
add fptrans support to isa caller

2 years agoadd fp support to TestRunnerBase
Jacob Lifshay [Tue, 13 Sep 2022 17:18:40 +0000 (10:18 -0700)]
add fp support to TestRunnerBase

2 years agoadd first pack/unpack to ISACaller
Luke Kenneth Casson Leighton [Tue, 13 Sep 2022 15:23:54 +0000 (16:23 +0100)]
add first pack/unpack to ISACaller

2 years agoadd setter/getter properties to SVP64State, minor code-morph in ISACaller
Luke Kenneth Casson Leighton [Tue, 13 Sep 2022 13:42:53 +0000 (14:42 +0100)]
add setter/getter properties to SVP64State, minor code-morph in ISACaller

2 years agoremove pack/unpack from SVP64RMModeDecode, it is now in SVSTATE
Luke Kenneth Casson Leighton [Tue, 13 Sep 2022 13:38:15 +0000 (14:38 +0100)]
remove pack/unpack from SVP64RMModeDecode, it is now in SVSTATE

2 years agoadd batch of instructions from
Luke Kenneth Casson Leighton [Tue, 13 Sep 2022 12:15:31 +0000 (13:15 +0100)]
add batch of instructions from
https://bugs.libre-soc.org/show_bug.cgi?id=917#c25

2 years agoadd hack overloaded meaning of destwid to be pack/unpack.
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 21:36:29 +0000 (22:36 +0100)]
add hack overloaded meaning of destwid to be pack/unpack.
only supposed to be used on sv.setvl

2 years agopower_insn: refactor RM mapping
Dmitry Selyutin [Mon, 12 Sep 2022 19:28:52 +0000 (22:28 +0300)]
power_insn: refactor RM mapping

2 years agosv_binutils: support multiple opcodes; minor fixes
Dmitry Selyutin [Mon, 12 Sep 2022 19:28:24 +0000 (22:28 +0300)]
sv_binutils: support multiple opcodes; minor fixes

2 years agopower_insn: call sv_spec_leave unconditionally
Dmitry Selyutin [Mon, 12 Sep 2022 18:04:43 +0000 (21:04 +0300)]
power_insn: call sv_spec_leave unconditionally

2 years agopower_enums: consider CRIn2Sel
Dmitry Selyutin [Mon, 12 Sep 2022 17:35:29 +0000 (20:35 +0300)]
power_enums: consider CRIn2Sel

2 years agopower_insn: fix RCOE check
Dmitry Selyutin [Mon, 12 Sep 2022 17:32:49 +0000 (20:32 +0300)]
power_insn: fix RCOE check

2 years agopower_insn: introduce pseudo cr_in2
Dmitry Selyutin [Sun, 11 Sep 2022 20:40:40 +0000 (23:40 +0300)]
power_insn: introduce pseudo cr_in2

2 years agopower_enums: strict selectors conversion
Dmitry Selyutin [Sun, 11 Sep 2022 19:55:25 +0000 (22:55 +0300)]
power_enums: strict selectors conversion

2 years agopower_insn: fix typo
Dmitry Selyutin [Sun, 11 Sep 2022 18:45:28 +0000 (21:45 +0300)]
power_insn: fix typo

2 years agopower_insn: support BRANCH and CR mode stubs
Dmitry Selyutin [Sun, 11 Sep 2022 18:15:52 +0000 (21:15 +0300)]
power_insn: support BRANCH and CR mode stubs

2 years agopower_insn: refactor register operands
Dmitry Selyutin [Sun, 11 Sep 2022 12:42:20 +0000 (15:42 +0300)]
power_insn: refactor register operands

2 years agoadd pseudocode for all fptrans ops
Jacob Lifshay [Mon, 12 Sep 2022 17:23:20 +0000 (10:23 -0700)]
add pseudocode for all fptrans ops

2 years agoadd fptrans helpers, switching existing uses to new helpers
Jacob Lifshay [Mon, 12 Sep 2022 17:04:03 +0000 (10:04 -0700)]
add fptrans helpers, switching existing uses to new helpers

2 years agoadd hphint and pack/unpack into SVSTATE SPR layout
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 16:33:49 +0000 (17:33 +0100)]
add hphint and pack/unpack into SVSTATE SPR layout

2 years agoadd fptrans ops to src/openpower/sv/trans/svp64.py
Jacob Lifshay [Mon, 12 Sep 2022 16:04:44 +0000 (09:04 -0700)]
add fptrans ops to src/openpower/sv/trans/svp64.py

2 years agoadd rest of new fptrans ops to CSVs
Jacob Lifshay [Mon, 12 Sep 2022 15:43:40 +0000 (08:43 -0700)]
add rest of new fptrans ops to CSVs

2 years agoremove pack/unpack - now part of sv.setvl
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 15:34:27 +0000 (16:34 +0100)]
remove pack/unpack - now part of sv.setvl

2 years agoadd rudimentary sv.setvl unit test to just check that the syntax
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 15:26:28 +0000 (16:26 +0100)]
add rudimentary sv.setvl unit test to just check that the syntax
is correct.  going beyond RT=0..31 currently fails

2 years agoadd sv.setvl to instructions as a major hack
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 15:25:55 +0000 (16:25 +0100)]
add sv.setvl to instructions as a major hack
so that pack/unpack can be implemented
https://bugs.libre-soc.org/show_bug.cgi?id=871

2 years agosplit out setvl from sv.setvl test in test_pysvp64dis.py
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 14:43:22 +0000 (15:43 +0100)]
split out setvl from sv.setvl test in test_pysvp64dis.py
setvl. still failing (no idea why)

2 years agoadd extra tests "add." "addo" etc. to test_pysvp64dis.py
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 14:31:30 +0000 (15:31 +0100)]
add extra tests "add." "addo" etc. to test_pysvp64dis.py

2 years agodemo that "setvl." is not reconstructed with Rc=1 mode
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 14:29:42 +0000 (15:29 +0100)]
demo that "setvl." is not reconstructed with Rc=1 mode

2 years agosome weird moving of opcodes around, probably because their
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 14:25:21 +0000 (15:25 +0100)]
some weird moving of opcodes around, probably because their
XO changed. looks like the actual RM*.csv definitions themselves
remained the same. TODO: sort opcodes (alphabetically will do it)

2 years agoskip addpcis for now, needs properly qualifying
Luke Kenneth Casson Leighton [Mon, 12 Sep 2022 09:55:11 +0000 (10:55 +0100)]
skip addpcis for now, needs properly qualifying

2 years agofix svanalysis failing due to missing comma in addpcis csv entry
Jacob Lifshay [Mon, 12 Sep 2022 08:15:34 +0000 (01:15 -0700)]
fix svanalysis failing due to missing comma in addpcis csv entry

2 years agoadd new CRIn2Sel for later, for getting rid of CRInSel.BA_BB
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 20:53:00 +0000 (21:53 +0100)]
add new CRIn2Sel for later, for getting rid of CRInSel.BA_BB

2 years agoBFT does not exist
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 16:55:41 +0000 (17:55 +0100)]
BFT does not exist

2 years agoadd sv.isel 12,2,3,*99 test to test_pysvp64dis.py
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 14:03:53 +0000 (15:03 +0100)]
add sv.isel 12,2,3,*99 test to test_pysvp64dis.py

2 years agoadd some CR3 pysvp64dis.py tests, sv.crand
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 13:37:35 +0000 (14:37 +0100)]
add some CR3 pysvp64dis.py tests, sv.crand

2 years agopower_insn: check exact matches directly in set
Dmitry Selyutin [Sat, 10 Sep 2022 19:38:30 +0000 (22:38 +0300)]
power_insn: check exact matches directly in set

2 years agopower_insn: group opcodes and names
Dmitry Selyutin [Sat, 10 Sep 2022 19:37:51 +0000 (22:37 +0300)]
power_insn: group opcodes and names

2 years agoadd sv.isel asm-disasm tests to test_pysvp64dis.py
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 11:03:14 +0000 (12:03 +0100)]
add sv.isel asm-disasm tests to test_pysvp64dis.py

2 years agoadd missing addpcis to power_enums.py and minor_19.csv
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 11:00:56 +0000 (12:00 +0100)]
add missing addpcis to power_enums.py and minor_19.csv

2 years agoconvert minor_19 to bitpattern (for adding addpcis)
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 10:57:20 +0000 (11:57 +0100)]
convert minor_19 to bitpattern (for adding addpcis)

2 years agowhoops lsbshf=2 for CR5
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 10:39:10 +0000 (11:39 +0100)]
whoops lsbshf=2 for CR5

2 years agowhoops missed lsb-shift parameter
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 09:58:29 +0000 (10:58 +0100)]
whoops missed lsb-shift parameter

2 years agoadd comments into CR5Operand class
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 09:54:24 +0000 (10:54 +0100)]
add comments into CR5Operand class

2 years agoadd CR5Operand and CR3Operand to power_insns.py
Luke Kenneth Casson Leighton [Sun, 11 Sep 2022 00:40:56 +0000 (01:40 +0100)]
add CR5Operand and CR3Operand to power_insns.py

2 years agohuhn? addpcis converts to .long? huhn?
Luke Kenneth Casson Leighton [Sat, 10 Sep 2022 23:54:49 +0000 (00:54 +0100)]
huhn? addpcis converts to .long? huhn?

2 years agofix issue with pysvp64dis.py load() reading from stdin
Luke Kenneth Casson Leighton [Sat, 10 Sep 2022 23:54:29 +0000 (00:54 +0100)]
fix issue with pysvp64dis.py load() reading from stdin
take a copy of the input and allow "seek()" on the copy (BytesIO)

2 years agopower_insn: perform minor opcodes cleanup
Dmitry Selyutin [Sat, 10 Sep 2022 19:18:08 +0000 (22:18 +0300)]
power_insn: perform minor opcodes cleanup

2 years agopower_insn: hopefully final take on the opcodes
Dmitry Selyutin [Sat, 10 Sep 2022 18:18:14 +0000 (21:18 +0300)]
power_insn: hopefully final take on the opcodes

2 years agopower_insn: yet another take on the opcodes
Dmitry Selyutin [Sat, 10 Sep 2022 15:07:02 +0000 (18:07 +0300)]
power_insn: yet another take on the opcodes