sort keys
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 7 Oct 2020 14:49:05 +0000 (15:49 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 7 Oct 2020 14:49:05 +0000 (15:49 +0100)
openpower/opcode_regs_deduped.mdwn
openpower/sv_analysis.py

index 918a5a18f335802390eef0a2d5cce353f8667f34..f76ab3717947e3161152b7524457735fe345dfee 100644 (file)
@@ -2,65 +2,59 @@
 
 [[!table  data="""
 in1 | in2 | in3 | out | CR in | CR out | ldst len | rc | lk|
-R | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0|
-R | 0 | 0 | R | 0 | 1 | 0 | R | 0|
+0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0|
 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1|
-R | 0 | 0 | R | 0 | 1 | 0 | 1 | 0|
-R | R | 0 | R | 0 | 0 | 1 | 0 | 0|
+0 | 0 | 0 | 0 | 0 | 0 | 0 | R | 0|
 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1|
-0 | 0 | 0 | 0 | 1 | 1 | 1 | R | |
-R | R | 0 | R | 0 | 0 | 0 | 0 | 0|
-R | 0 | 0 | R | 0 | 0 | 1 | 0 | 0|
-0 | 0 | R | R | 0 | 1 | 0 | R | 0|
 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0|
+0 | 0 | 0 | 0 | 1 | 1 | 1 | R | |
 0 | 0 | 0 | R | 0 | 0 | 0 | 0 | 0|
-R | R | 0 | R | 1 | 0 | 0 | 0 | 0|
-R | 0 | 0 | R | 0 | 1 | 0 | 0 | 0|
-0 | R | R | R | 0 | 1 | 0 | R | 0|
-R | 0 | 0 | R | 0 | 1 | 1 | R | 0|
+0 | 0 | 0 | R | 1 | 0 | 0 | 0 | 0|
+0 | 0 | R | R | 0 | 0 | 0 | R | 0|
+0 | 0 | R | R | 0 | 1 | 0 | R | 0|
+0 | R | 0 | 0 | 0 | 0 | 0 | 0 | 0|
 0 | R | R | R | 0 | 0 | 0 | R | 0|
-R | R | R | 0 | 0 | 0 | 1 | 0 | 0|
-R | 0 | R | R | 0 | 0 | 0 | R | 0|
-0 | 0 | 0 | 0 | 0 | 0 | 0 | R | 0|
-R | R | 0 | R | 0 | 1 | 0 | R | 0|
-R | 0 | R | 0 | 0 | 0 | 1 | 0 | 0|
+0 | R | R | R | 0 | 1 | 0 | R | 0|
+R | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0|
+R | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0|
+R | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0|
 R | 0 | 0 | R | 0 | 0 | 0 | 0 | 0|
 R | 0 | 0 | R | 0 | 0 | 0 | R | 0|
-R | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0|
-0 | 0 | R | R | 0 | 0 | 0 | R | 0|
-0 | R | 0 | 0 | 0 | 0 | 0 | 0 | 0|
-0 | 0 | 0 | R | 1 | 0 | 0 | 0 | 0|
-0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0|
+R | 0 | 0 | R | 0 | 0 | 1 | 0 | 0|
+R | 0 | 0 | R | 0 | 1 | 0 | 0 | 0|
+R | 0 | 0 | R | 0 | 1 | 0 | 1 | 0|
+R | 0 | 0 | R | 0 | 1 | 0 | R | 0|
+R | 0 | 0 | R | 0 | 1 | 1 | R | 0|
+R | 0 | R | 0 | 0 | 0 | 1 | 0 | 0|
+R | 0 | R | R | 0 | 0 | 0 | R | 0|
 R | 0 | R | R | 0 | 1 | 0 | R | 0|
-R | R | R | 0 | 0 | 1 | 1 | R | 0|
-R | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0|
-R | R | 0 | 0 | 0 | 1 | 0 | 0 | 0|
 R | R | 0 | 0 | 0 | 0 | 0 | 0 | 0|
+R | R | 0 | 0 | 0 | 1 | 0 | 0 | 0|
+R | R | 0 | R | 0 | 0 | 0 | 0 | 0|
+R | R | 0 | R | 0 | 0 | 1 | 0 | 0|
+R | R | 0 | R | 0 | 1 | 0 | R | 0|
+R | R | 0 | R | 1 | 0 | 0 | 0 | 0|
+R | R | R | 0 | 0 | 0 | 1 | 0 | 0|
+R | R | R | 0 | 0 | 1 | 1 | R | 0|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b0010010000 | mtcrf/mtocrf | XFX-Form|
-"""]]
-
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
+##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_31.csv | 0b0011101010 | addme | XO-Form|
-minor_31.csv | 0b1011101010 | addmeo | XO-Form|
-minor_31.csv | 0b0011001010 | addze | XO-Form|
-minor_31.csv | 0b1011001010 | addzeo | XO-Form|
-minor_31.csv | 0b0000111010 | cntlzd | X-Form|
-minor_31.csv | 0b0000011010 | cntlzw | X-Form|
-minor_31.csv | 0b1000111010 | cnttzd | X-Form|
-minor_31.csv | 0b1000011010 | cnttzw | X-Form|
-minor_31.csv | 0b0011101000 | subfme | XO-Form|
-minor_31.csv | 0b1011101000 | subfmeo | XO-Form|
-minor_31.csv | 0b0011001000 | subfze | XO-Form|
-minor_31.csv | 0b1011001000 | subfzeo | XO-Form|
+major.csv | 17 | sc | SC-Form|
+extra.csv | 01100000000000000000000000000000 | nop | D-Form|
+minor_19.csv | 0b0010010110 | isync | XL-Form|
+minor_19.csv | 0b0000010010 | rfid | XL-Form|
+minor_19.csv | 0b0100010010 | hrfid | XL-Form|
+minor_31.csv | 0b0001010110 | dcbf | X-Form|
+minor_31.csv | 0b0000110110 | dcbst | X-Form|
+minor_31.csv | 0b0100010110 | dcbt | X-Form|
+minor_31.csv | 0b0011110110 | dcbtst | X-Form|
+minor_31.csv | 0b1111010110 | icbi | X-Form|
+minor_31.csv | 0b0000010110 | icbt | X-Form|
+minor_31.csv | 0b0111110010 | slbia | X-Form|
+minor_31.csv | 0b1001010110 | sync | X-Form|
 """]]
 
 ##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 1
@@ -70,42 +64,12 @@ CSV | opcode | asm | form|
 major.csv | 18 | b | I-Form|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 1 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 13 | addic. | D-Form|
-major.csv | 28 | andi. | B-Form|
-major.csv | 29 | andis. | B-Form|
-"""]]
-
-##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
+##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_31.csv | 0b0000110100 | lbarx | X-Form|
-minor_31.csv | 0b1101010101 | lbzcix | X-Form|
-minor_31.csv | 0b0001110111 | lbzux | X-Form|
-minor_31.csv | 0b0001010111 | lbzx | X-Form|
-minor_31.csv | 0b0001010100 | ldarx | X-Form|
-minor_31.csv | 0b1000010100 | ldbrx | X-Form|
-minor_31.csv | 0b1101110101 | ldcix | X-Form|
-minor_31.csv | 0b0000110101 | ldux | X-Form|
-minor_31.csv | 0b0000010101 | ldx | X-Form|
-minor_31.csv | 0b0001110100 | lharx | X-Form|
-minor_31.csv | 0b0101110111 | lhaux | X-Form|
-minor_31.csv | 0b0101010111 | lhax | X-Form|
-minor_31.csv | 0b1100010110 | lhbrx | X-Form|
-minor_31.csv | 0b1100110101 | lhzcix | X-Form|
-minor_31.csv | 0b0100110111 | lhzux | X-Form|
-minor_31.csv | 0b0100010111 | lhzx | X-Form|
-minor_31.csv | 0b0000010100 | lwarx | X-Form|
-minor_31.csv | 0b0101110101 | lwaux | X-Form|
-minor_31.csv | 0b0101010101 | lwax | X-Form|
-minor_31.csv | 0b1000010110 | lwbrx | X-Form|
-minor_31.csv | 0b1100010101 | lwzcix | X-Form|
-minor_31.csv | 0b0000110111 | lwzux | X-Form|
-minor_31.csv | 0b0000010111 | lwzx | X-Form|
+minor_19_00000.csv | 0b00010 | add pcis not implemented yet | DX-Form|
+extra.csv | 000000---------------0100000000- | attn | NONE-Form|
 """]]
 
 ##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 0 ldst len: 0 rc: 0 lk: 1
@@ -118,6 +82,21 @@ minor_19.csv | 0b0000010000 | bclr | XL-Form|
 minor_19.csv | 0b1000110000 | bctar | XL-Form|
 """]]
 
+##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0 rc: 0 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_19.csv | 0b0000000000 | mcrf | XL-Form|
+minor_19.csv | 0b0100000001 | crand | XL-Form|
+minor_19.csv | 0b0010000001 | crandc | XL-Form|
+minor_19.csv | 0b0100100001 | creqv | XL-Form|
+minor_19.csv | 0b0011100001 | crnand | XL-Form|
+minor_19.csv | 0b0000100001 | crnor | XL-Form|
+minor_19.csv | 0b0111000001 | cror | XL-Form|
+minor_19.csv | 0b0110100001 | crorc | XL-Form|
+minor_19.csv | 0b0011000001 | crxor | XL-Form|
+"""]]
+
 ##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 1 rc: R lk: 
 
 [[!table  data="""
@@ -128,38 +107,28 @@ minor_31.csv | 0b1000000000 | mcrxr | X-Form|
 minor_31.csv | 0b1001000000 | mcrxrx | X-Form|
 """]]
 
-##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
+##  in1: 0 in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_31.csv | 0b0011111100 | bpermd | X-Form|
-minor_31.csv | 0b0111111100 | cmpb | X-Form|
-minor_31.csv | 0b0100001001 | modud | X-Form|
-minor_31.csv | 0b0100001011 | moduw | X-Form|
-minor_31.csv | 0b1100001001 | modsd | X-Form|
-minor_31.csv | 0b1100001011 | modsw | X-Form|
+extra.csv | 000001---------------0000000011- | sim_cfg | NONE-Form|
+minor_31.csv | 0b0001010011 | mfmsr | X-Form|
+minor_31.csv | 0b0101010011 | mfspr | XFX-Form|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
+##  in1: 0 in2: 0 in3: 0 out: R CR in: 1 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_58.csv | 0 | ld | DS-Form|
-minor_58.csv | 1 | ldu | DS-Form|
-minor_58.csv | 2 | lwa | DS-Form|
-major.csv | 34 | lbz | D-Form|
-major.csv | 35 | lbzu | D-Form|
-major.csv | 42 | lha | D-Form|
-major.csv | 43 | lhau | D-Form|
-major.csv | 40 | lhz | D-Form|
-major.csv | 41 | lhzu | D-Form|
-major.csv | 32 | lwz | D-Form|
-major.csv | 33 | lwzu | D-Form|
-minor_31.csv | 0b0001111010 | popcntb | X-Form|
-minor_31.csv | 0b0111111010 | popcntd | X-Form|
-minor_31.csv | 0b0101111010 | popcntw | X-Form|
-minor_31.csv | 0b0010111010 | prtyd | X-Form|
-minor_31.csv | 0b0010011010 | prtyw | X-Form|
+minor_31.csv | 0b0000010011 | mfcr/mfocrf | XFX-Form|
+minor_31.csv | 0b0010000000 | setb | VX-Form|
+"""]]
+
+##  in1: 0 in2: 0 in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+major.csv | 21 | rlwinm | M-Form|
 """]]
 
 ##  in1: 0 in2: 0 in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
@@ -179,73 +148,19 @@ minor_31.csv | 0b1100111011 | sradi | XS-Form|
 minor_31.csv | 0b1100111000 | srawi | X-Form|
 """]]
 
-##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_19.csv | 0b0000000000 | mcrf | XL-Form|
-minor_19.csv | 0b0100000001 | crand | XL-Form|
-minor_19.csv | 0b0010000001 | crandc | XL-Form|
-minor_19.csv | 0b0100100001 | creqv | XL-Form|
-minor_19.csv | 0b0011100001 | crnand | XL-Form|
-minor_19.csv | 0b0000100001 | crnor | XL-Form|
-minor_19.csv | 0b0111000001 | cror | XL-Form|
-minor_19.csv | 0b0110100001 | crorc | XL-Form|
-minor_19.csv | 0b0011000001 | crxor | XL-Form|
-"""]]
-
-##  in1: 0 in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-extra.csv | 000001---------------0000000011- | sim_cfg | NONE-Form|
-minor_31.csv | 0b0001010011 | mfmsr | X-Form|
-minor_31.csv | 0b0101010011 | mfspr | XFX-Form|
-"""]]
-
-##  in1: R in2: R in3: 0 out: R CR in: 1 CR out: 0 ldst len: 0 rc: 0 lk: 0
+##  in1: 0 in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_31.csv | 0b0000001111 | isel | A-Form|
-minor_31.csv | 0b0000101111 | isel | A-Form|
-minor_31.csv | 0b0001001111 | isel | A-Form|
-minor_31.csv | 0b0001101111 | isel | A-Form|
-minor_31.csv | 0b0010001111 | isel | A-Form|
-minor_31.csv | 0b0010101111 | isel | A-Form|
-minor_31.csv | 0b0011001111 | isel | A-Form|
-minor_31.csv | 0b0011101111 | isel | A-Form|
-minor_31.csv | 0b0100001111 | isel | A-Form|
-minor_31.csv | 0b0100101111 | isel | A-Form|
-minor_31.csv | 0b0101001111 | isel | A-Form|
-minor_31.csv | 0b0101101111 | isel | A-Form|
-minor_31.csv | 0b0110001111 | isel | A-Form|
-minor_31.csv | 0b0110101111 | isel | A-Form|
-minor_31.csv | 0b0111001111 | isel | A-Form|
-minor_31.csv | 0b0111101111 | isel | A-Form|
-minor_31.csv | 0b1000001111 | isel | A-Form|
-minor_31.csv | 0b1000101111 | isel | A-Form|
-minor_31.csv | 0b1001001111 | isel | A-Form|
-minor_31.csv | 0b1001101111 | isel | A-Form|
-minor_31.csv | 0b1010001111 | isel | A-Form|
-minor_31.csv | 0b1010101111 | isel | A-Form|
-minor_31.csv | 0b1011001111 | isel | A-Form|
-minor_31.csv | 0b1011101111 | isel | A-Form|
-minor_31.csv | 0b1100001111 | isel | A-Form|
-minor_31.csv | 0b1100101111 | isel | A-Form|
-minor_31.csv | 0b1101001111 | isel | A-Form|
-minor_31.csv | 0b1101101111 | isel | A-Form|
-minor_31.csv | 0b1110001111 | isel | A-Form|
-minor_31.csv | 0b1110101111 | isel | A-Form|
-minor_31.csv | 0b1111001111 | isel | A-Form|
-minor_31.csv | 0b1111101111 | isel | A-Form|
+minor_31.csv | 0b0100110010 | tlbie | X-Form|
+minor_31.csv | 0b0100010010 | tlbiel | X-Form|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
+##  in1: 0 in2: R in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-major.csv | 7 | mulli | D-Form|
+major.csv | 23 | rlwnm | M-Form|
 """]]
 
 ##  in1: 0 in2: R in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
@@ -262,42 +177,131 @@ minor_31.csv | 0b1000011011 | srd | X-Form|
 minor_31.csv | 0b1000011000 | srw | X-Form|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 1 rc: R lk: 0
+##  in1: R in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_31.csv | 0b1110111010 | extsb | X-Form|
-minor_31.csv | 0b1110011010 | extsh | X-Form|
-minor_31.csv | 0b1111011010 | extsw | X-Form|
+major.csv | 2 | tdi | D-Form|
+major.csv | 3 | twi | D-Form|
+minor_31.csv | 0b0010110010 | mtmsrd | X-Form|
+minor_31.csv | 0b0010010010 | mtmsr | X-Form|
+minor_31.csv | 0b0111010011 | mtspr | XFX-Form|
 """]]
 
-##  in1: 0 in2: R in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
+##  in1: R in2: 0 in3: 0 out: 0 CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-major.csv | 23 | rlwnm | M-Form|
+major.csv | 11 | cmpi | D-Form|
+major.csv | 10 | cmpli | D-Form|
 """]]
 
-##  in1: R in2: R in3: R out: 0 CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
+##  in1: R in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0 rc: 0 lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_31.csv | 0b1111010101 | stbcix | X-Form|
-minor_31.csv | 0b1010010100 | stdbrx | X-Form|
-minor_31.csv | 0b1111110101 | stdcix | X-Form|
-minor_31.csv | 0b0011010110 | stdcx | X-Form|
-minor_31.csv | 0b0010110101 | stdux | X-Form|
-minor_31.csv | 0b0010010101 | stdx | X-Form|
-minor_31.csv | 0b1110010110 | sthbrx | X-Form|
-minor_31.csv | 0b1110110101 | sthcix | X-Form|
-minor_31.csv | 0b1011010110 | sthcx | X-Form|
-minor_31.csv | 0b0110110111 | sthux | X-Form|
-minor_31.csv | 0b0110010111 | sthx | X-Form|
-minor_31.csv | 0b1010010110 | stwbrx | X-Form|
-minor_31.csv | 0b1110010101 | stwcix | X-Form|
-minor_31.csv | 0b0010010110 | stwcx | X-Form|
-minor_31.csv | 0b0010110111 | stwux | X-Form|
-minor_31.csv | 0b0010010111 | stwx | X-Form|
+minor_31.csv | 0b0010010000 | mtcrf/mtocrf | XFX-Form|
+"""]]
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+major.csv | 12 | addic | D-Form|
+major.csv | 14 | addi | D-Form|
+major.csv | 15 | addis | D-Form|
+major.csv | 24 | ori | D-Form|
+major.csv | 25 | oris | D-Form|
+major.csv | 8 | subfic | D-Form|
+major.csv | 26 | xori | D-Form|
+major.csv | 27 | xoris | D-Form|
+"""]]
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b0001101000 | neg | XO-Form|
+minor_31.csv | 0b1001101000 | nego | XO-Form|
+"""]]
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_58.csv | 0 | ld | DS-Form|
+minor_58.csv | 1 | ldu | DS-Form|
+minor_58.csv | 2 | lwa | DS-Form|
+major.csv | 34 | lbz | D-Form|
+major.csv | 35 | lbzu | D-Form|
+major.csv | 42 | lha | D-Form|
+major.csv | 43 | lhau | D-Form|
+major.csv | 40 | lhz | D-Form|
+major.csv | 41 | lhzu | D-Form|
+major.csv | 32 | lwz | D-Form|
+major.csv | 33 | lwzu | D-Form|
+minor_31.csv | 0b0001111010 | popcntb | X-Form|
+minor_31.csv | 0b0111111010 | popcntd | X-Form|
+minor_31.csv | 0b0101111010 | popcntw | X-Form|
+minor_31.csv | 0b0010111010 | prtyd | X-Form|
+minor_31.csv | 0b0010011010 | prtyw | X-Form|
+"""]]
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+major.csv | 7 | mulli | D-Form|
+"""]]
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 1 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+major.csv | 13 | addic. | D-Form|
+major.csv | 28 | andi. | B-Form|
+major.csv | 29 | andis. | B-Form|
+"""]]
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b0011101010 | addme | XO-Form|
+minor_31.csv | 0b1011101010 | addmeo | XO-Form|
+minor_31.csv | 0b0011001010 | addze | XO-Form|
+minor_31.csv | 0b1011001010 | addzeo | XO-Form|
+minor_31.csv | 0b0000111010 | cntlzd | X-Form|
+minor_31.csv | 0b0000011010 | cntlzw | X-Form|
+minor_31.csv | 0b1000111010 | cnttzd | X-Form|
+minor_31.csv | 0b1000011010 | cnttzw | X-Form|
+minor_31.csv | 0b0011101000 | subfme | XO-Form|
+minor_31.csv | 0b1011101000 | subfmeo | XO-Form|
+minor_31.csv | 0b0011001000 | subfze | XO-Form|
+minor_31.csv | 0b1011001000 | subfzeo | XO-Form|
+"""]]
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 1 rc: R lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b1110111010 | extsb | X-Form|
+minor_31.csv | 0b1110011010 | extsh | X-Form|
+minor_31.csv | 0b1111011010 | extsw | X-Form|
+"""]]
+
+##  in1: R in2: 0 in3: R out: 0 CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_62.csv | 0 | std | DS-Form|
+minor_62.csv | 1 | stdu | DS-Form|
+major.csv | 38 | stb | D-Form|
+major.csv | 39 | stbu | D-Form|
+major.csv | 44 | sth | D-Form|
+major.csv | 45 | sthu | D-Form|
+major.csv | 36 | stw | D-Form|
+major.csv | 37 | stwu | D-Form|
 """]]
 
 ##  in1: R in2: 0 in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
@@ -307,12 +311,71 @@ CSV | opcode | asm | form|
 major.csv | 20 | rlwimi | M-Form|
 """]]
 
-##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
+##  in1: R in2: 0 in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_19_00000.csv | 0b00010 | add pcis not implemented yet | DX-Form|
-extra.csv | 000000---------------0100000000- | attn | NONE-Form|
+minor_30.csv | 0b0110 | rldimi | MD-Form|
+minor_30.csv | 0b0111 | rldimi | MD-Form|
+"""]]
+
+##  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b1111110110 | dcbz | X-Form|
+minor_31.csv | 0b0001000100 | td | X-Form|
+minor_31.csv | 0b0000000100 | tw | X-Form|
+"""]]
+
+##  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b0000000000 | cmp | X-Form|
+minor_31.csv | 0b0011100000 | cmpeqb | X-Form|
+minor_31.csv | 0b0000100000 | cmpl | X-Form|
+"""]]
+
+##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b0011111100 | bpermd | X-Form|
+minor_31.csv | 0b0111111100 | cmpb | X-Form|
+minor_31.csv | 0b0100001001 | modud | X-Form|
+minor_31.csv | 0b0100001011 | moduw | X-Form|
+minor_31.csv | 0b1100001001 | modsd | X-Form|
+minor_31.csv | 0b1100001011 | modsw | X-Form|
+"""]]
+
+##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b0000110100 | lbarx | X-Form|
+minor_31.csv | 0b1101010101 | lbzcix | X-Form|
+minor_31.csv | 0b0001110111 | lbzux | X-Form|
+minor_31.csv | 0b0001010111 | lbzx | X-Form|
+minor_31.csv | 0b0001010100 | ldarx | X-Form|
+minor_31.csv | 0b1000010100 | ldbrx | X-Form|
+minor_31.csv | 0b1101110101 | ldcix | X-Form|
+minor_31.csv | 0b0000110101 | ldux | X-Form|
+minor_31.csv | 0b0000010101 | ldx | X-Form|
+minor_31.csv | 0b0001110100 | lharx | X-Form|
+minor_31.csv | 0b0101110111 | lhaux | X-Form|
+minor_31.csv | 0b0101010111 | lhax | X-Form|
+minor_31.csv | 0b1100010110 | lhbrx | X-Form|
+minor_31.csv | 0b1100110101 | lhzcix | X-Form|
+minor_31.csv | 0b0100110111 | lhzux | X-Form|
+minor_31.csv | 0b0100010111 | lhzx | X-Form|
+minor_31.csv | 0b0000010100 | lwarx | X-Form|
+minor_31.csv | 0b0101110101 | lwaux | X-Form|
+minor_31.csv | 0b0101010101 | lwax | X-Form|
+minor_31.csv | 0b1000010110 | lwbrx | X-Form|
+minor_31.csv | 0b1100010101 | lwzcix | X-Form|
+minor_31.csv | 0b0000110111 | lwzux | X-Form|
+minor_31.csv | 0b0000010111 | lwzx | X-Form|
 """]]
 
 ##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
@@ -369,101 +432,64 @@ minor_31.csv | 0b1010001000 | subfeo | XO-Form|
 minor_31.csv | 0b0100111100 | xor | X-Form|
 """]]
 
-##  in1: R in2: 0 in3: R out: 0 CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_62.csv | 0 | std | DS-Form|
-minor_62.csv | 1 | stdu | DS-Form|
-major.csv | 38 | stb | D-Form|
-major.csv | 39 | stbu | D-Form|
-major.csv | 44 | sth | D-Form|
-major.csv | 45 | sthu | D-Form|
-major.csv | 36 | stw | D-Form|
-major.csv | 37 | stwu | D-Form|
-"""]]
-
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 12 | addic | D-Form|
-major.csv | 14 | addi | D-Form|
-major.csv | 15 | addis | D-Form|
-major.csv | 24 | ori | D-Form|
-major.csv | 25 | oris | D-Form|
-major.csv | 8 | subfic | D-Form|
-major.csv | 26 | xori | D-Form|
-major.csv | 27 | xoris | D-Form|
-"""]]
-
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b0001101000 | neg | XO-Form|
-minor_31.csv | 0b1001101000 | nego | XO-Form|
-"""]]
-
-##  in1: R in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 2 | tdi | D-Form|
-major.csv | 3 | twi | D-Form|
-minor_31.csv | 0b0010110010 | mtmsrd | X-Form|
-minor_31.csv | 0b0010010010 | mtmsr | X-Form|
-minor_31.csv | 0b0111010011 | mtspr | XFX-Form|
-"""]]
-
-##  in1: 0 in2: 0 in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 21 | rlwinm | M-Form|
-"""]]
-
-##  in1: 0 in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b0100110010 | tlbie | X-Form|
-minor_31.csv | 0b0100010010 | tlbiel | X-Form|
-"""]]
-
-##  in1: 0 in2: 0 in3: 0 out: R CR in: 1 CR out: 0 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b0000010011 | mfcr/mfocrf | XFX-Form|
-minor_31.csv | 0b0010000000 | setb | VX-Form|
-"""]]
-
-##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
+##  in1: R in2: R in3: 0 out: R CR in: 1 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-major.csv | 17 | sc | SC-Form|
-extra.csv | 01100000000000000000000000000000 | nop | D-Form|
-minor_19.csv | 0b0010010110 | isync | XL-Form|
-minor_19.csv | 0b0000010010 | rfid | XL-Form|
-minor_19.csv | 0b0100010010 | hrfid | XL-Form|
-minor_31.csv | 0b0001010110 | dcbf | X-Form|
-minor_31.csv | 0b0000110110 | dcbst | X-Form|
-minor_31.csv | 0b0100010110 | dcbt | X-Form|
-minor_31.csv | 0b0011110110 | dcbtst | X-Form|
-minor_31.csv | 0b1111010110 | icbi | X-Form|
-minor_31.csv | 0b0000010110 | icbt | X-Form|
-minor_31.csv | 0b0111110010 | slbia | X-Form|
-minor_31.csv | 0b1001010110 | sync | X-Form|
+minor_31.csv | 0b0000001111 | isel | A-Form|
+minor_31.csv | 0b0000101111 | isel | A-Form|
+minor_31.csv | 0b0001001111 | isel | A-Form|
+minor_31.csv | 0b0001101111 | isel | A-Form|
+minor_31.csv | 0b0010001111 | isel | A-Form|
+minor_31.csv | 0b0010101111 | isel | A-Form|
+minor_31.csv | 0b0011001111 | isel | A-Form|
+minor_31.csv | 0b0011101111 | isel | A-Form|
+minor_31.csv | 0b0100001111 | isel | A-Form|
+minor_31.csv | 0b0100101111 | isel | A-Form|
+minor_31.csv | 0b0101001111 | isel | A-Form|
+minor_31.csv | 0b0101101111 | isel | A-Form|
+minor_31.csv | 0b0110001111 | isel | A-Form|
+minor_31.csv | 0b0110101111 | isel | A-Form|
+minor_31.csv | 0b0111001111 | isel | A-Form|
+minor_31.csv | 0b0111101111 | isel | A-Form|
+minor_31.csv | 0b1000001111 | isel | A-Form|
+minor_31.csv | 0b1000101111 | isel | A-Form|
+minor_31.csv | 0b1001001111 | isel | A-Form|
+minor_31.csv | 0b1001101111 | isel | A-Form|
+minor_31.csv | 0b1010001111 | isel | A-Form|
+minor_31.csv | 0b1010101111 | isel | A-Form|
+minor_31.csv | 0b1011001111 | isel | A-Form|
+minor_31.csv | 0b1011101111 | isel | A-Form|
+minor_31.csv | 0b1100001111 | isel | A-Form|
+minor_31.csv | 0b1100101111 | isel | A-Form|
+minor_31.csv | 0b1101001111 | isel | A-Form|
+minor_31.csv | 0b1101101111 | isel | A-Form|
+minor_31.csv | 0b1110001111 | isel | A-Form|
+minor_31.csv | 0b1110101111 | isel | A-Form|
+minor_31.csv | 0b1111001111 | isel | A-Form|
+minor_31.csv | 0b1111101111 | isel | A-Form|
 """]]
 
-##  in1: R in2: 0 in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
+##  in1: R in2: R in3: R out: 0 CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_30.csv | 0b0110 | rldimi | MD-Form|
-minor_30.csv | 0b0111 | rldimi | MD-Form|
+minor_31.csv | 0b1111010101 | stbcix | X-Form|
+minor_31.csv | 0b1010010100 | stdbrx | X-Form|
+minor_31.csv | 0b1111110101 | stdcix | X-Form|
+minor_31.csv | 0b0011010110 | stdcx | X-Form|
+minor_31.csv | 0b0010110101 | stdux | X-Form|
+minor_31.csv | 0b0010010101 | stdx | X-Form|
+minor_31.csv | 0b1110010110 | sthbrx | X-Form|
+minor_31.csv | 0b1110110101 | sthcix | X-Form|
+minor_31.csv | 0b1011010110 | sthcx | X-Form|
+minor_31.csv | 0b0110110111 | sthux | X-Form|
+minor_31.csv | 0b0110010111 | sthx | X-Form|
+minor_31.csv | 0b1010010110 | stwbrx | X-Form|
+minor_31.csv | 0b1110010101 | stwcix | X-Form|
+minor_31.csv | 0b0010010110 | stwcx | X-Form|
+minor_31.csv | 0b0010110111 | stwux | X-Form|
+minor_31.csv | 0b0010010111 | stwx | X-Form|
 """]]
 
 ##  in1: R in2: R in3: R out: 0 CR in: 0 CR out: 1 ldst len: 1 rc: R lk: 0
@@ -475,29 +501,3 @@ minor_31.csv | 0b0011110111 | stbux | X-Form|
 minor_31.csv | 0b0011010111 | stbx | X-Form|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: 0 CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 11 | cmpi | D-Form|
-major.csv | 10 | cmpli | D-Form|
-"""]]
-
-##  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b0000000000 | cmp | X-Form|
-minor_31.csv | 0b0011100000 | cmpeqb | X-Form|
-minor_31.csv | 0b0000100000 | cmpl | X-Form|
-"""]]
-
-##  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b1111110110 | dcbz | X-Form|
-minor_31.csv | 0b0001000100 | td | X-Form|
-minor_31.csv | 0b0000000100 | tw | X-Form|
-"""]]
-
index c2a752be8393b291c44bf3d1eeb2e19aa0568ff1..950f3c25ee7a5f0a55d9208c864c4ac2fe04824e 100644 (file)
@@ -101,10 +101,14 @@ def process_csvs():
             bykey[key].append((csvname, row['opcode'], row['comment'],
                                row['form'].upper() + '-Form'))
 
+    primarykeys = list(primarykeys)
+    primarykeys.sort()
+
     print ("# keys")
     print ()
     print ('[[!table  data="""')
     print (tformat(keycolumns))
+
     for key in primarykeys:
         print (tformat(dictkeys[key].values()))
     print ('"""]]')