openpower-isa.git
20 months agooppc/code: assume 1 bit for subscript expr
Dmitry Selyutin [Sun, 14 Jan 2024 20:49:17 +0000 (23:49 +0300)]
oppc/code: assume 1 bit for subscript expr

20 months agooppc/code: fix comparisons
Dmitry Selyutin [Sun, 14 Jan 2024 20:48:00 +0000 (23:48 +0300)]
oppc/code: fix comparisons

20 months agooppc/code: fix subscript exprs
Dmitry Selyutin [Sun, 14 Jan 2024 20:29:29 +0000 (23:29 +0300)]
oppc/code: fix subscript exprs

20 months agooppc/code: support TRAP
Dmitry Selyutin [Sun, 14 Jan 2024 20:25:11 +0000 (23:25 +0300)]
oppc/code: support TRAP

20 months agooppc/code: support GRP0
Dmitry Selyutin [Sun, 14 Jan 2024 20:17:22 +0000 (23:17 +0300)]
oppc/code: support GRP0

20 months agooppc/code: support basic fields initialization
Dmitry Selyutin [Sun, 14 Jan 2024 20:00:49 +0000 (23:00 +0300)]
oppc/code: support basic fields initialization

20 months agooppc/code: deprecate redundant node arguments
Dmitry Selyutin [Sun, 14 Jan 2024 19:13:03 +0000 (22:13 +0300)]
oppc/code: deprecate redundant node arguments

20 months agooppc/code: introduce insn argument
Dmitry Selyutin [Sun, 14 Jan 2024 18:57:13 +0000 (21:57 +0300)]
oppc/code: introduce insn argument

20 months agooppc: pass insndb record
Dmitry Selyutin [Sun, 14 Jan 2024 18:56:05 +0000 (21:56 +0300)]
oppc: pass insndb record

20 months agooppc: print C code instead of pseudocode
Dmitry Selyutin [Sun, 14 Jan 2024 18:51:34 +0000 (21:51 +0300)]
oppc: print C code instead of pseudocode

20 months agooppc/code: support multiple assignments
Dmitry Selyutin [Sun, 14 Jan 2024 18:41:16 +0000 (21:41 +0300)]
oppc/code: support multiple assignments

20 months agooppc/code: support string literals
Dmitry Selyutin [Sun, 14 Jan 2024 18:23:43 +0000 (21:23 +0300)]
oppc/code: support string literals

20 months agooppc: support attributes
Dmitry Selyutin [Sun, 14 Jan 2024 18:12:03 +0000 (21:12 +0300)]
oppc: support attributes

20 months agooppc: decouple attribute name
Dmitry Selyutin [Sun, 14 Jan 2024 18:05:05 +0000 (21:05 +0300)]
oppc: decouple attribute name

20 months agooppc/code: rename ccall into call
Dmitry Selyutin [Sun, 14 Jan 2024 15:35:32 +0000 (18:35 +0300)]
oppc/code: rename ccall into call

20 months agooppc/code: support leave keyword
Dmitry Selyutin [Sun, 14 Jan 2024 14:43:19 +0000 (17:43 +0300)]
oppc/code: support leave keyword

20 months agooppc/code: support more special symbols
Dmitry Selyutin [Sun, 14 Jan 2024 14:40:46 +0000 (17:40 +0300)]
oppc/code: support more special symbols

20 months agooppc/code: fix if exprs check
Dmitry Selyutin [Sun, 14 Jan 2024 14:19:58 +0000 (17:19 +0300)]
oppc/code: fix if exprs check

20 months agooppc/pseudocode: support switches
Dmitry Selyutin [Sun, 14 Jan 2024 14:15:19 +0000 (17:15 +0300)]
oppc/pseudocode: support switches

20 months agooppc/pseudocode: always use keywords for emit calls
Dmitry Selyutin [Sun, 14 Jan 2024 13:50:30 +0000 (16:50 +0300)]
oppc/pseudocode: always use keywords for emit calls

20 months agooppc/code: support concatenation
Dmitry Selyutin [Sun, 14 Jan 2024 13:44:25 +0000 (16:44 +0300)]
oppc/code: support concatenation

20 months agooppc/code: support unsigned comparisons
Dmitry Selyutin [Sun, 14 Jan 2024 13:43:00 +0000 (16:43 +0300)]
oppc/code: support unsigned comparisons

20 months agooppc/code: rename oppc_int to oppc_value
Dmitry Selyutin [Sun, 14 Jan 2024 13:34:36 +0000 (16:34 +0300)]
oppc/code: rename oppc_int to oppc_value

20 months agooppc/code: support ternary expr inside binary and unary
Dmitry Selyutin [Sun, 14 Jan 2024 13:22:34 +0000 (16:22 +0300)]
oppc/code: support ternary expr inside binary and unary

20 months agooppc/code: align ternary if expressions
Dmitry Selyutin [Sun, 14 Jan 2024 13:20:37 +0000 (16:20 +0300)]
oppc/code: align ternary if expressions

20 months agooppc/code: eliminate redundant pseudocode
Dmitry Selyutin [Sun, 14 Jan 2024 12:56:43 +0000 (15:56 +0300)]
oppc/code: eliminate redundant pseudocode

20 months agooppc/code: emit symbol pseudocode
Dmitry Selyutin [Sun, 14 Jan 2024 12:46:49 +0000 (15:46 +0300)]
oppc/code: emit symbol pseudocode

20 months agooppc/code: drop explicit ctx argument
Dmitry Selyutin [Sun, 14 Jan 2024 12:30:42 +0000 (15:30 +0300)]
oppc/code: drop explicit ctx argument

20 months agooppc/code: introduce ccall
Dmitry Selyutin [Sun, 14 Jan 2024 12:24:39 +0000 (15:24 +0300)]
oppc/code: introduce ccall

20 months agooppc/code: introduce transient
Dmitry Selyutin [Sun, 14 Jan 2024 11:25:17 +0000 (14:25 +0300)]
oppc/code: introduce transient

20 months agooppc/ast: hash node by id
Dmitry Selyutin [Sun, 14 Jan 2024 12:17:18 +0000 (15:17 +0300)]
oppc/ast: hash node by id

20 months agooppc/main: parse all insndb instructions
Dmitry Selyutin [Sat, 13 Jan 2024 15:30:02 +0000 (18:30 +0300)]
oppc/main: parse all insndb instructions

20 months agooppc/code: convert everything into calls
Dmitry Selyutin [Sat, 13 Jan 2024 12:33:48 +0000 (15:33 +0300)]
oppc/code: convert everything into calls

20 months agooppc/util: simplify empty statements
Dmitry Selyutin [Sat, 13 Jan 2024 12:30:54 +0000 (15:30 +0300)]
oppc/util: simplify empty statements

20 months agooppc/parser: check for regs in trailerlist
Dmitry Selyutin [Fri, 12 Jan 2024 20:47:00 +0000 (23:47 +0300)]
oppc/parser: check for regs in trailerlist

20 months agooppc/code: support ternary conditionals
Dmitry Selyutin [Fri, 12 Jan 2024 20:23:36 +0000 (23:23 +0300)]
oppc/code: support ternary conditionals

20 months agooppc/code: support if exprs
Dmitry Selyutin [Fri, 12 Jan 2024 20:16:17 +0000 (23:16 +0300)]
oppc/code: support if exprs

20 months agooppc/pseudocode: simplify call arguments
Dmitry Selyutin [Fri, 12 Jan 2024 20:13:34 +0000 (23:13 +0300)]
oppc/pseudocode: simplify call arguments

20 months agooppc/code: support for exprs
Dmitry Selyutin [Fri, 12 Jan 2024 20:07:18 +0000 (23:07 +0300)]
oppc/code: support for exprs

20 months agooppc/code: support calls
Dmitry Selyutin [Fri, 12 Jan 2024 19:52:30 +0000 (22:52 +0300)]
oppc/code: support calls

20 months agooppc/code: support subscript assignments
Dmitry Selyutin [Fri, 12 Jan 2024 19:47:48 +0000 (22:47 +0300)]
oppc/code: support subscript assignments

20 months agooppc/code: support subscript exprs
Dmitry Selyutin [Fri, 12 Jan 2024 19:28:58 +0000 (22:28 +0300)]
oppc/code: support subscript exprs

20 months agooppc/code: support XLEN
Dmitry Selyutin [Fri, 12 Jan 2024 19:33:05 +0000 (22:33 +0300)]
oppc/code: support XLEN

20 months agooppc: consider subscripts exprs
Dmitry Selyutin [Fri, 12 Jan 2024 19:24:22 +0000 (22:24 +0300)]
oppc: consider subscripts exprs

20 months agooppc/code: support repeat expr
Dmitry Selyutin [Fri, 12 Jan 2024 19:24:22 +0000 (22:24 +0300)]
oppc/code: support repeat expr

20 months agooppc/code: simplify exprs and regs
Dmitry Selyutin [Fri, 12 Jan 2024 19:24:22 +0000 (22:24 +0300)]
oppc/code: simplify exprs and regs

20 months agooppc/code: support bitwise operations
Dmitry Selyutin [Fri, 12 Jan 2024 19:24:22 +0000 (22:24 +0300)]
oppc/code: support bitwise operations

20 months agooppc/code: support simple conditions
Dmitry Selyutin [Fri, 12 Jan 2024 19:24:22 +0000 (22:24 +0300)]
oppc/code: support simple conditions

20 months agooppc/code: support binary mul/div/mod
Dmitry Selyutin [Fri, 12 Jan 2024 19:24:22 +0000 (22:24 +0300)]
oppc/code: support binary mul/div/mod

20 months agooppc/code: support binary add/sub
Dmitry Selyutin [Fri, 12 Jan 2024 19:24:22 +0000 (22:24 +0300)]
oppc/code: support binary add/sub

20 months agooppc/code: refactor unary exprs
Dmitry Selyutin [Fri, 12 Jan 2024 19:24:22 +0000 (22:24 +0300)]
oppc/code: refactor unary exprs

20 months agooppc/code: support simple constant unary exprs
Dmitry Selyutin [Wed, 10 Jan 2024 21:09:37 +0000 (00:09 +0300)]
oppc/code: support simple constant unary exprs

20 months agooppc/code: support simple constant assignments
Dmitry Selyutin [Wed, 10 Jan 2024 20:49:22 +0000 (23:49 +0300)]
oppc/code: support simple constant assignments

20 months agooppc/code: introduce header and footer
Dmitry Selyutin [Wed, 10 Jan 2024 20:43:59 +0000 (23:43 +0300)]
oppc/code: introduce header and footer

20 months agooppc: introduce C generator skeleton
Dmitry Selyutin [Tue, 9 Jan 2024 21:26:03 +0000 (00:26 +0300)]
oppc: introduce C generator skeleton

20 months agooppc: check for special symbols
Dmitry Selyutin [Tue, 9 Jan 2024 19:48:26 +0000 (22:48 +0300)]
oppc: check for special symbols

20 months agooppc: decouple common code
Dmitry Selyutin [Tue, 9 Jan 2024 18:23:44 +0000 (21:23 +0300)]
oppc: decouple common code

20 months agooppc: simplify ternary conditionals
Dmitry Selyutin [Tue, 9 Jan 2024 18:29:45 +0000 (21:29 +0300)]
oppc: simplify ternary conditionals

20 months agooppc: decouple pseudocode module
Dmitry Selyutin [Tue, 9 Jan 2024 18:08:41 +0000 (21:08 +0300)]
oppc: decouple pseudocode module

20 months agooppc: decouple call name class
Dmitry Selyutin [Tue, 9 Jan 2024 15:49:56 +0000 (18:49 +0300)]
oppc: decouple call name class

20 months agooppc: rename Assign classes
Dmitry Selyutin [Mon, 8 Jan 2024 20:26:32 +0000 (23:26 +0300)]
oppc: rename Assign classes

20 months agooppc: swap declaration
Dmitry Selyutin [Mon, 8 Jan 2024 13:19:38 +0000 (16:19 +0300)]
oppc: swap declaration

20 months agooppc: introduce GPRZero class
Dmitry Selyutin [Mon, 8 Jan 2024 12:48:13 +0000 (15:48 +0300)]
oppc: introduce GPRZero class

20 months agopywriter: convert pcode to tree and back to pcode
Dmitry Selyutin [Mon, 8 Jan 2024 08:34:02 +0000 (11:34 +0300)]
pywriter: convert pcode to tree and back to pcode

20 months agooppc: introduce openpower pseudocode
Dmitry Selyutin [Sun, 7 Jan 2024 22:57:51 +0000 (01:57 +0300)]
oppc: introduce openpower pseudocode

20 months agoinsndb/db: update walker
Dmitry Selyutin [Fri, 5 Jan 2024 20:39:48 +0000 (23:39 +0300)]
insndb/db: update walker

20 months agofixedsync.mdwn: change sync from v3.1B version to v3.0B version
Jacob Lifshay [Tue, 16 Jan 2024 09:18:58 +0000 (01:18 -0800)]
fixedsync.mdwn: change sync from v3.1B version to v3.0B version

to use the v3.1B version requires fixing fields.text to use the new
L and SC fields, which requires deciphering all the places where the
current L (named L2) field is used and making sure they'll be correct still.

using the old interpretation of sync should be correct, but less optimal,
assuming OpenPower got their backwards compatibility correct.

20 months agobug 1251: WIP stbcx removed
Luke Kenneth Casson Leighton [Sun, 14 Jan 2024 19:36:18 +0000 (19:36 +0000)]
bug 1251: WIP stbcx removed

20 months agofix memory locations in linked-list test_caller_svp64_ldst.py
Luke Kenneth Casson Leighton [Mon, 8 Jan 2024 13:53:39 +0000 (13:53 +0000)]
fix memory locations in linked-list test_caller_svp64_ldst.py

20 months agofptrans.mdwn: don't parenthesize register being assigned to
Jacob Lifshay [Tue, 9 Jan 2024 08:01:44 +0000 (00:01 -0800)]
fptrans.mdwn: don't parenthesize register being assigned to

Fixes: https://bugs.libre-soc.org/show_bug.cgi?id=1247
20 months agowhitespace
Luke Kenneth Casson Leighton [Thu, 21 Dec 2023 17:22:52 +0000 (17:22 +0000)]
whitespace

21 months ago.gitlab-ci.yml: re-add maxschedchunk, it provides massive speedups -- ~2x on CI
Jacob Lifshay [Tue, 19 Dec 2023 01:46:13 +0000 (17:46 -0800)]
.gitlab-ci.yml: re-add maxschedchunk, it provides massive speedups -- ~2x on CI

this essentially reverts bfb9d7f312ebb5f394414b5e1ea8f03728af4489

on CI, bfb9d7f312ebb5f394414b5e1ea8f03728af4489 took 5h45m:
https://salsa.debian.org/Kazan-team/mirrors/openpower-isa/-/jobs/5038101
the parent commit took 2h37m:
https://salsa.debian.org/Kazan-team/mirrors/openpower-isa/-/jobs/5034703

21 months agobug 1183: correct comments from cut/paste
Luke Kenneth Casson Leighton [Fri, 15 Dec 2023 23:22:16 +0000 (23:22 +0000)]
bug 1183: correct comments from cut/paste

21 months agoremove pytest option which hard-codes assumptions about installed version
lkcl [Wed, 13 Dec 2023 22:36:45 +0000 (22:36 +0000)]
remove pytest option which hard-codes assumptions about installed version

21 months agoelf/simple_cases: disable case_static_glibc for now, re-enable when we work on it... 1228-elf-dynamic
Jacob Lifshay [Tue, 12 Dec 2023 18:20:03 +0000 (10:20 -0800)]
elf/simple_cases: disable case_static_glibc for now, re-enable when we work on it again.

21 months agoadd make_gdb_vm_image.sh script, it doesn't work yet but could be useful
Jacob Lifshay [Tue, 12 Dec 2023 18:11:04 +0000 (10:11 -0800)]
add make_gdb_vm_image.sh script, it doesn't work yet but could be useful

see https://bugs.libre-soc.org/show_bug.cgi?id=1228#c15

21 months agoload_elf: dump a sequence of gdb commands for easy debugging
Jacob Lifshay [Thu, 7 Dec 2023 08:55:22 +0000 (00:55 -0800)]
load_elf: dump a sequence of gdb commands for easy debugging

dumps a sequence of gdb commands that can easily be copied from
the output and pasted into gdb to reset the stack to what load_elf
uses, instead of what gdb's execve does.

21 months agoMemMMap: fix brk_syscall -- use unrounded input address as heap end
Jacob Lifshay [Thu, 7 Dec 2023 08:53:20 +0000 (00:53 -0800)]
MemMMap: fix brk_syscall -- use unrounded input address as heap end

it should use the input address as given when tracking the end of
the heap and returning addresses. it still needs to align addresses
when mapping/unmapping pages.

21 months agoload_elf: add forgotten auxv entries
Jacob Lifshay [Thu, 7 Dec 2023 08:52:48 +0000 (00:52 -0800)]
load_elf: add forgotten auxv entries

21 months agoload_elf: copy linux's auxv, argv, and env layout
Jacob Lifshay [Thu, 7 Dec 2023 07:36:14 +0000 (23:36 -0800)]
load_elf: copy linux's auxv, argv, and env layout

21 months agoload_elf: match linux better for statically-linked binaries
Jacob Lifshay [Wed, 6 Dec 2023 09:11:56 +0000 (01:11 -0800)]
load_elf: match linux better for statically-linked binaries

we still need more auxv entries, but the rest should match close
enough now.

21 months agoelf/simple_cases: enable debug info for statically-linked glibc demo
Jacob Lifshay [Wed, 6 Dec 2023 09:09:42 +0000 (01:09 -0800)]
elf/simple_cases: enable debug info for statically-linked glibc demo

21 months agoMemMMap: raise error for bad load/fetch addresses when emulating mmap
Jacob Lifshay [Wed, 6 Dec 2023 09:08:25 +0000 (01:08 -0800)]
MemMMap: raise error for bad load/fetch addresses when emulating mmap

21 months agocaller.py: don't try to make zero-sized memory accesses, they error
Jacob Lifshay [Wed, 6 Dec 2023 09:07:42 +0000 (01:07 -0800)]
caller.py: don't try to make zero-sized memory accesses, they error

21 months agotest/elf/__init__: make objdump go to default log kind -- it's quieter
Jacob Lifshay [Wed, 6 Dec 2023 09:06:26 +0000 (01:06 -0800)]
test/elf/__init__: make objdump go to default log kind -- it's quieter

21 months agocaller.py: implement writev syscall
Jacob Lifshay [Mon, 4 Dec 2023 10:15:47 +0000 (02:15 -0800)]
caller.py: implement writev syscall

21 months agofixedsync.mdwn: add sync instruction
Jacob Lifshay [Mon, 4 Dec 2023 10:15:30 +0000 (02:15 -0800)]
fixedsync.mdwn: add sync instruction

21 months agoMemMMap: use modified_pages.discard instead of remove since pages may not be modified
Jacob Lifshay [Mon, 4 Dec 2023 10:13:52 +0000 (02:13 -0800)]
MemMMap: use modified_pages.discard instead of remove since pages may not be modified

21 months agotest/ldst: add fixedsync tests for b/h/w/d ll/sc, but not quadword
Jacob Lifshay [Mon, 4 Dec 2023 09:45:23 +0000 (01:45 -0800)]
test/ldst: add fixedsync tests for b/h/w/d ll/sc, but not quadword

quadword probably doesn't work correctly and probably requires a bit of work

21 months agomajor/minor_62: add FIXMEs to lq/stq to match the FIXMEs on lqarx/stqcx.
Jacob Lifshay [Mon, 4 Dec 2023 09:43:26 +0000 (01:43 -0800)]
major/minor_62: add FIXMEs to lq/stq to match the FIXMEs on lqarx/stqcx.

21 months agofixedsync/minor_31: add stqcx. because I'm adding the others anyway
Jacob Lifshay [Mon, 4 Dec 2023 09:42:31 +0000 (01:42 -0800)]
fixedsync/minor_31: add stqcx. because I'm adding the others anyway

21 months agofixedsync/minor_31: add lqarx because I'm adding the others anyway
Jacob Lifshay [Mon, 4 Dec 2023 09:41:04 +0000 (01:41 -0800)]
fixedsync/minor_31: add lqarx because I'm adding the others anyway

21 months agominor_62.csv: add unofficial and comment2 fields
Jacob Lifshay [Mon, 4 Dec 2023 09:37:29 +0000 (01:37 -0800)]
minor_62.csv: add unofficial and comment2 fields

21 months agomajor.csv: add unofficial and comment2 fields
Jacob Lifshay [Mon, 4 Dec 2023 09:36:57 +0000 (01:36 -0800)]
major.csv: add unofficial and comment2 fields

21 months agofixedsync.mdwn: implement other sizes: lbarx lharx ldarx stbcx. sthcx. stdcx.
Jacob Lifshay [Mon, 4 Dec 2023 08:23:09 +0000 (00:23 -0800)]
fixedsync.mdwn: implement other sizes: lbarx lharx ldarx stbcx. sthcx. stdcx.

still unimplemented: lqarx and stqcx.

21 months agofixedsync.mdwn: fix stwcx. pseudocode
Jacob Lifshay [Mon, 4 Dec 2023 08:21:15 +0000 (00:21 -0800)]
fixedsync.mdwn: fix stwcx. pseudocode

21 months agoISACaller: add PowerISA spec. reference for real_page_size
Jacob Lifshay [Mon, 4 Dec 2023 08:19:31 +0000 (00:19 -0800)]
ISACaller: add PowerISA spec. reference for real_page_size

21 months agoISACaller: implement real_addr pseudo-code helper
Jacob Lifshay [Mon, 4 Dec 2023 08:18:10 +0000 (00:18 -0800)]
ISACaller: implement real_addr pseudo-code helper

21 months agotest/state: support memory in ExpectedState
Jacob Lifshay [Mon, 4 Dec 2023 08:17:02 +0000 (00:17 -0800)]
test/state: support memory in ExpectedState

21 months agoadd initial lwarx unit test and pseudocode
Luke Kenneth Casson Leighton [Sun, 3 Dec 2023 20:30:27 +0000 (20:30 +0000)]
add initial lwarx unit test and pseudocode