spl

systems programming language
git clone http://frotz.net/git/spl.git
Log | Files | Refs | README | LICENSE

commit 448ac4857f20a6388f22840e8efd0fc1c049eb17
parent 3018fe5bead90d81f451e4a9ca9f4b9e469837cb
Author: Brian Swetland <swetland@frotz.net>
Date:   Mon, 30 Jun 2025 12:05:58 -0700

softrisc32: improve instruction table

Take advantage of the fact that mkinstab considers all non-
'0' or '1' bits in the entries as don't care and use mark
up the fields in the instructions for better clarity.

Diffstat:
Msoftrisc32/instab.txt | 127++++++++++++++++++++++++++++++++++++++++++-------------------------------------
1 file changed, 67 insertions(+), 60 deletions(-)

diff --git a/softrisc32/instab.txt b/softrisc32/instab.txt @@ -2,64 +2,71 @@ # Licensed under the Apache License, Version 2.0. 00000000000000000000000000000000 nop -----------------00000-----000000 li %d, %i -0000000000000000----------000000 mv %d, %a ---------------------------000000 addi %d, %a, %i -000000000000--------------010000 add %d, %a, %b -0000000000000000----------000001 neg %d, %a ---------------------------000001 subi %d, %a, %i -000000000000--------------010001 sub %d, %a, %b ---------------------------000010 andi %d, %a, %i -000000000000--------------010010 and %d, %a, %b ---------------------------000011 ori %d, %a, %i -000000000000--------------010011 or %d, %a, %b -1111111111111111----------000100 not %d, %a ---------------------------000100 xori %d, %a, %i -000000000000--------------010100 xor %d, %a, %b ---------------------------000101 slli %d, %a, %i -000000000000--------------010101 sll %d, %a, %b ---------------------------000110 srli %d, %a, %i -000000000000--------------010110 srl %d, %a, %b ---------------------------000111 srai %d, %a, %i -000000000000--------------010111 sra %d, %a, %b ---------------------------001000 slti %d, %a, %i -000000000000--------------011000 slt %d, %a, %b -0000000000000001----------001001 seqz %d, %a ---------------------------001001 sltui %d, %a, %i -000000000000--------------011001 sltu %d, %a, %b ---------------------------001010 muli %d, %a, %i -000000000000--------------011010 mul %d, %a, %b ---------------------------001011 divi %d, %a, %i -000000000000--------------011011 div %d, %a, %b -0000000000000000-----00000011111 jr %a -0000000000000000----------011111 jalr %d, %a ---------------------------011111 jalr %d, %a, %i ---------------------------100000 ldw %d, %i(%a) ---------------------------100001 ldh %d, %i(%a) ---------------------------100010 ldb %d, %i(%a) -----------------00000-----100011 ldx %d, %i ---------------------------100011 ldx %d, %i(%a) ---------------------------100100 lui %d, %U ---------------------------100101 ldhu %d, %i(%a) ---------------------------100110 ldbu %d, %i(%a) ---------------------------100111 auipc %d, %U ---------------------------101000 stw %d, %i(%a) ---------------------------101001 sth %d, %i(%a) ---------------------------101010 stb %d, %i(%a) -----------------00000-----101011 stx %d, %i ---------------------------101011 stx %d, %i(%a) ----------------------00000110000 bz %a, %B ---------------------------110000 beq %a, %d, %B ----------------------00000110001 bnz %a, %B ---------------------------110001 bne %a, %d, %B ---------------------------110010 blt %a, %d, %B ---------------------------110011 bltu %a, %d, %B ---------------------------110100 bge %a, %d, %B ---------------------------110101 bgeu %a, %d, %B ----------------------00000111000 j %d, %J ----------------------00001111000 call %d, %J ---------------------------111000 jal %d, %J ---------------------------111001 syscall %i ---------------------------111010 break ---------------------------111011 sysret +iiiiiiiiiiiiiiii00000ttttt000000 li %d, %i +0000000000000000aaaaattttt000000 mv %d, %a +iiiiiiiiiiiiiiiiaaaaattttt000000 addi %d, %a, %i +0000000000000000aaaaattttt000001 neg %d, %a +iiiiiiiiiiiiiiiiaaaaattttt000001 subi %d, %a, %i +iiiiiiiiiiiiiiiiaaaaattttt000010 andi %d, %a, %i +iiiiiiiiiiiiiiiiaaaaattttt000011 ori %d, %a, %i +1111111111111111aaaaattttt000100 not %d, %a +iiiiiiiiiiiiiiiiaaaaattttt000100 xori %d, %a, %i +iiiiiiiiiiiiiiiiaaaaattttt000101 slli %d, %a, %i +iiiiiiiiiiiiiiiiaaaaattttt000110 srli %d, %a, %i +iiiiiiiiiiiiiiiiaaaaattttt000111 srai %d, %a, %i +iiiiiiiiiiiiiiiiaaaaattttt001000 slti %d, %a, %i +0000000000000001aaaaattttt001001 seqz %d, %a +iiiiiiiiiiiiiiiiaaaaattttt001001 sltui %d, %a, %i +iiiiiiiiiiiiiiiiaaaaattttt001010 muli %d, %a, %i +iiiiiiiiiiiiiiiiaaaaattttt001011 divi %d, %a, %i +00000000000bbbbbaaaaattttt010000 add %d, %a, %b +00000000000bbbbbaaaaattttt010001 sub %d, %a, %b +00000000000bbbbbaaaaattttt010010 and %d, %a, %b +00000000000bbbbbaaaaattttt010011 or %d, %a, %b +00000000000bbbbbaaaaattttt010100 xor %d, %a, %b +00000000000bbbbbaaaaattttt010101 sll %d, %a, %b +00000000000bbbbbaaaaattttt010110 srl %d, %a, %b +00000000000bbbbbaaaaattttt010111 sra %d, %a, %b +0000000000000000aaaaattttt011000 sltz %d, %a +00000000000bbbbb00000ttttt011000 sgtz %d, %b +00000000000bbbbbaaaaattttt011000 slt %d, %a, %b +00000000000bbbbb00000ttttt011001 snez %d, %b +00000000000bbbbbaaaaattttt011001 sltu %d, %a, %b +00000000000bbbbbaaaaattttt011010 mul %d, %a, %b +00000000000bbbbbaaaaattttt011011 div %d, %a, %b +0000000000000000aaaaa00000011111 jr %a +0000000000000000aaaaattttt011111 jalr %d, %a +iiiiiiiiiiibbbbbaaaaattttt011111 jalr %d, %a, %i +iiiiiiiiiiiiiiiiaaaaattttt100000 ldw %d, %i(%a) +iiiiiiiiiiiiiiiiaaaaattttt100001 ldh %d, %i(%a) +iiiiiiiiiiiiiiiiaaaaattttt100010 ldb %d, %i(%a) +iiiiiiiiiiiiiiii00000ttttt100011 ldx %d, %i +iiiiiiiiiiiiiiiiaaaaattttt100011 ldx %d, %i(%a) +iiiiiiiiiiiiiiiiaaaaattttt100100 lui %d, %U +iiiiiiiiiiiiiiiiaaaaattttt100101 ldhu %d, %i(%a) +iiiiiiiiiiiiiiiiaaaaattttt100110 ldbu %d, %i(%a) +iiiiiiiiiiiiiiiiaaaaattttt100111 auipc %d, %U +iiiiiiiiiiiiiiiiaaaaattttt101000 stw %d, %i(%a) +iiiiiiiiiiiiiiiiaaaaattttt101001 sth %d, %i(%a) +iiiiiiiiiiiiiiiiaaaaattttt101010 stb %d, %i(%a) +iiiiiiiiiiiiiiii00000ttttt101011 stx %d, %i +iiiiiiiiiiiiiiiiaaaaattttt101011 stx %d, %i(%a) +iiiiiiiiiiiiiiiiaaaaa00000110000 beqz %a, %B +iiiiiiiiiiiiiiiiaaaaabbbbb110000 beq %a, %d, %B +iiiiiiiiiiiiiiiiaaaaa00000110001 bnez %a, %B +iiiiiiiiiiiiiiiiaaaaabbbbb110001 bne %a, %d, %B +iiiiiiiiiiiiiiiiaaaaa00000110010 bltz %a, %B +iiiiiiiiiiiiiiii00000bbbbb110010 bgtz %d, %B +iiiiiiiiiiiiiiiiaaaaabbbbb110010 blt %a, %d, %B +iiiiiiiiiiiiiiiiaaaaabbbbb110011 bltu %a, %d, %B +iiiiiiiiiiiiiiii00000bbbbb110100 blez %d, %B +iiiiiiiiiiiiiiiiaaaaa00000110100 bgez %a, %B +iiiiiiiiiiiiiiiiaaaaabbbbb110100 bge %a, %d, %B +iiiiiiiiiiiiiiiiaaaaabbbbb110101 bgeu %a, %d, %B +iiiiiiiiiiiiiiiiiiiii00000111000 j %d, %J +iiiiiiiiiiiiiiiiiiiii00001111000 call %d, %J +iiiiiiiiiiiiiiiiiiiiittttt111000 jal %d, %J +iiiiiiiiiiiiiiiiiiiiittttt111001 syscall %i +iiiiiiiiiiiiiiiiiiiiittttt111010 break +iiiiiiiiiiiiiiiiiiiiittttt111011 sysret -------------------------------- unknown