Skip to content

Commit 5b43c3e

Browse files
committed
Add synopsys generation
1 parent 7d8f4a1 commit 5b43c3e

File tree

4 files changed

+119
-43
lines changed

4 files changed

+119
-43
lines changed

instr-encoding-privileged.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
==== SFENCE_VMA
22

3-
Synopsis::
3+
Synopsis:: No synopsis available.
44

55
Mnemonic::
66
+
@@ -54,7 +54,7 @@ Included in:: RV(32/64)S
5454

5555
==== SRET
5656

57-
Synopsis::
57+
Synopsis:: No synopsis available.
5858

5959
Mnemonic::
6060
+

instr-encoding-unprivileged.adoc

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
==== ADD
22

3-
Synopsis::
3+
Synopsis:: Add
44

55
Mnemonic::
66
+
@@ -51,7 +51,7 @@ Included in:: RV(32/64)I
5151

5252
==== ADDI
5353

54-
Synopsis::
54+
Synopsis:: Add Immediate
5555

5656
Mnemonic::
5757
+
@@ -101,7 +101,7 @@ Included in:: RV(32/64)I
101101

102102
==== AND
103103

104-
Synopsis::
104+
Synopsis:: AND
105105

106106
Mnemonic::
107107
+
@@ -152,7 +152,7 @@ Included in:: RV(32/64)I
152152

153153
==== ANDI
154154

155-
Synopsis::
155+
Synopsis:: AND Immediate
156156

157157
Mnemonic::
158158
+
@@ -202,7 +202,7 @@ Included in:: RV(32/64)I
202202

203203
==== AUIPC
204204

205-
Synopsis::
205+
Synopsis:: Add Upper Immediate to PC
206206

207207
Mnemonic::
208208
+
@@ -248,7 +248,7 @@ Included in:: RV(32/64)I
248248

249249
==== BEQ
250250

251-
Synopsis::
251+
Synopsis:: Branch if Equal
252252

253253
Mnemonic::
254254
+
@@ -319,7 +319,7 @@ Included in:: RV(32/64)I
319319

320320
==== BGE
321321

322-
Synopsis::
322+
Synopsis:: Branch if Greater than or Equal (Signed)
323323

324324
Mnemonic::
325325
+
@@ -390,7 +390,7 @@ Included in:: RV(32/64)I
390390

391391
==== BGEU
392392

393-
Synopsis::
393+
Synopsis:: Branch if Greater than or Equal (Unsigned)
394394

395395
Mnemonic::
396396
+
@@ -461,7 +461,7 @@ Included in:: RV(32/64)I
461461

462462
==== BLT
463463

464-
Synopsis::
464+
Synopsis:: Branch if Less Than (Signed)
465465

466466
Mnemonic::
467467
+
@@ -532,7 +532,7 @@ Included in:: RV(32/64)I
532532

533533
==== BLTU
534534

535-
Synopsis::
535+
Synopsis:: Branch if Less Than (Unsigned)
536536

537537
Mnemonic::
538538
+
@@ -603,7 +603,7 @@ Included in:: RV(32/64)I
603603

604604
==== BNE
605605

606-
Synopsis::
606+
Synopsis:: Branch if Not Equal
607607

608608
Mnemonic::
609609
+
@@ -674,7 +674,7 @@ Included in:: RV(32/64)I
674674

675675
==== EBREAK
676676

677-
Synopsis::
677+
Synopsis:: 31..20=0x001 19..7=0 6..2=0x1C 1..0=3
678678

679679
Mnemonic::
680680
+
@@ -714,7 +714,7 @@ Included in:: RV(32/64)I
714714

715715
==== ECALL
716716

717-
Synopsis::
717+
Synopsis:: 31..20=0x000 19..7=0 6..2=0x1C 1..0=3
718718

719719
Mnemonic::
720720
+
@@ -762,7 +762,7 @@ Included in:: RV(32/64)I
762762

763763
==== FENCE
764764

765-
Synopsis::
765+
Synopsis:: Fence
766766

767767
Mnemonic::
768768
+
@@ -831,7 +831,7 @@ Included in:: RV(32/64)I
831831

832832
==== JAL
833833

834-
Synopsis::
834+
Synopsis:: Jump and Link
835835

836836
Mnemonic::
837837
+
@@ -896,7 +896,7 @@ Included in:: RV(32/64)I
896896

897897
==== JALR
898898

899-
Synopsis::
899+
Synopsis:: Jump and Link Register
900900

901901
Mnemonic::
902902
+
@@ -937,7 +937,7 @@ Included in:: RV(32/64)I
937937

938938
==== LB
939939

940-
Synopsis::
940+
Synopsis:: Load Byte
941941

942942
Mnemonic::
943943
+
@@ -978,7 +978,7 @@ Included in:: RV(32/64)I
978978

979979
==== LBU
980980

981-
Synopsis::
981+
Synopsis:: Load Byte (Unsigned)
982982

983983
Mnemonic::
984984
+
@@ -1019,7 +1019,7 @@ Included in:: RV(32/64)I
10191019

10201020
==== LH
10211021

1022-
Synopsis::
1022+
Synopsis:: Load Halfword
10231023

10241024
Mnemonic::
10251025
+
@@ -1060,7 +1060,7 @@ Included in:: RV(32/64)I
10601060

10611061
==== LHU
10621062

1063-
Synopsis::
1063+
Synopsis:: Load Halfword (Unsigned)
10641064

10651065
Mnemonic::
10661066
+
@@ -1101,7 +1101,7 @@ Included in:: RV(32/64)I
11011101

11021102
==== LUI
11031103

1104-
Synopsis::
1104+
Synopsis:: Load Upper Immediate
11051105

11061106
Mnemonic::
11071107
+
@@ -1147,7 +1147,7 @@ Included in:: RV(32/64)I
11471147

11481148
==== LW
11491149

1150-
Synopsis::
1150+
Synopsis:: Load Word
11511151

11521152
Mnemonic::
11531153
+
@@ -1188,7 +1188,7 @@ Included in:: RV(32/64)I
11881188

11891189
==== OR
11901190

1191-
Synopsis::
1191+
Synopsis:: OR
11921192

11931193
Mnemonic::
11941194
+
@@ -1239,7 +1239,7 @@ Included in:: RV(32/64)I
12391239

12401240
==== ORI
12411241

1242-
Synopsis::
1242+
Synopsis:: OR Immediate
12431243

12441244
Mnemonic::
12451245
+
@@ -1289,7 +1289,7 @@ Included in:: RV(32/64)I
12891289

12901290
==== SB
12911291

1292-
Synopsis::
1292+
Synopsis:: Store Byte
12931293

12941294
Mnemonic::
12951295
+
@@ -1330,7 +1330,7 @@ Included in:: RV(32/64)I
13301330

13311331
==== SH
13321332

1333-
Synopsis::
1333+
Synopsis:: Store Halfword
13341334

13351335
Mnemonic::
13361336
+
@@ -1371,7 +1371,7 @@ Included in:: RV(32/64)I
13711371

13721372
==== SLL
13731373

1374-
Synopsis::
1374+
Synopsis:: Shift Left Logical
13751375

13761376
Mnemonic::
13771377
+
@@ -1424,7 +1424,7 @@ Included in:: RV(32/64)I
14241424

14251425
==== SLT
14261426

1427-
Synopsis::
1427+
Synopsis:: Set if Less Than (Signed)
14281428

14291429
Mnemonic::
14301430
+
@@ -1476,7 +1476,7 @@ Included in:: RV(32/64)I
14761476

14771477
==== SLTI
14781478

1479-
Synopsis::
1479+
Synopsis:: Set if Less Than Immediate (Signed)
14801480

14811481
Mnemonic::
14821482
+
@@ -1527,7 +1527,7 @@ Included in:: RV(32/64)I
15271527

15281528
==== SLTIU
15291529

1530-
Synopsis::
1530+
Synopsis:: Set if Less Than Immediate (Unsigned)
15311531

15321532
Mnemonic::
15331533
+
@@ -1577,7 +1577,7 @@ Included in:: RV(32/64)I
15771577

15781578
==== SLTU
15791579

1580-
Synopsis::
1580+
Synopsis:: Set if Less Than (Unsigned)
15811581

15821582
Mnemonic::
15831583
+
@@ -1628,7 +1628,7 @@ Included in:: RV(32/64)I
16281628

16291629
==== SRA
16301630

1631-
Synopsis::
1631+
Synopsis:: Shift Right Arithmetic
16321632

16331633
Mnemonic::
16341634
+
@@ -1681,7 +1681,7 @@ Included in:: RV(32/64)I
16811681

16821682
==== SRL
16831683

1684-
Synopsis::
1684+
Synopsis:: Shift Right Logical
16851685

16861686
Mnemonic::
16871687
+
@@ -1734,7 +1734,7 @@ Included in:: RV(32/64)I
17341734

17351735
==== SUB
17361736

1737-
Synopsis::
1737+
Synopsis:: Subtract
17381738

17391739
Mnemonic::
17401740
+
@@ -1785,7 +1785,7 @@ Included in:: RV(32/64)I
17851785

17861786
==== SW
17871787

1788-
Synopsis::
1788+
Synopsis:: Store Word
17891789

17901790
Mnemonic::
17911791
+
@@ -1826,7 +1826,7 @@ Included in:: RV(32/64)I
18261826

18271827
==== XOR
18281828

1829-
Synopsis::
1829+
Synopsis:: Exclusive OR
18301830

18311831
Mnemonic::
18321832
+
@@ -1877,7 +1877,7 @@ Included in:: RV(32/64)I
18771877

18781878
==== XORI
18791879

1880-
Synopsis::
1880+
Synopsis:: Exclusive OR Immediate
18811881

18821882
Mnemonic::
18831883
+

parse.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,38 @@ def make_asciidoc_instructions(instr_dict):
464464
return asciidoc_content_unprivileged, asciidoc_content_privileged
465465

466466

467+
def make_asciidoc_synopsis(instr_name):
468+
"""
469+
Search for the synopsis of a given instruction in files named "base_name"_syn.
470+
471+
Args:
472+
instr_name (str): The name of the instruction to search for
473+
474+
Returns:
475+
str: AsciiDoc formatted string containing the synopsis of the instruction
476+
"""
477+
asciidoc_content = 'Synopsis:: '
478+
479+
# Get the directory of the current script
480+
current_dir = os.path.dirname(os.path.realpath(__file__))
481+
482+
# List all files in the current directory that end with '_syn'
483+
syn_files = [f for f in os.listdir(current_dir) if f.endswith('_syn')]
484+
485+
for syn_file in syn_files:
486+
file_path = os.path.join(current_dir, syn_file)
487+
with open(file_path, 'r') as f:
488+
lines = f.readlines()
489+
for line in lines:
490+
parts = line.strip().split(' ', 1)
491+
if len(parts) == 2 and parts[0].lower() == instr_name.lower():
492+
asciidoc_content += parts[1] + '\n\n'
493+
return asciidoc_content
494+
495+
# If no synopsis is found, return a default message
496+
asciidoc_content += 'No synopsis available.\n\n'
497+
return asciidoc_content
498+
467499

468500
def make_asciidoc_encoding(instr_name, instr_data):
469501
'''
@@ -631,10 +663,6 @@ def make_asciidoc_mnemonic(instr_name, instr_data):
631663

632664
return asciidoc_content
633665

634-
def make_asciidoc_synopsis(instr_name):
635-
asciidoc_content = 'Synopsis:: \n\n'
636-
return asciidoc_content
637-
638666
def process_asciidoc_block(block, instr_name):
639667
'''
640668
Process a block of code for a specific instruction.

0 commit comments

Comments
 (0)