update sv opcodes table
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 9 Oct 2020 16:54:26 +0000 (17:54 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 9 Oct 2020 16:54:26 +0000 (17:54 +0100)
openpower/opcode_regs_deduped.mdwn

index fb19281ae9ca3bc0125753030472faff17d33f92..4e7cfafdc2c75c76dca3ae9ab70bd82317b1bf92 100644 (file)
 # keys
 
 [[!table  data="""
-in1 | in2 | in3 | out | CR in | CR out | ldst len|
-0 | 0 | 0 | 0 | 0 | 0 | 0|
-0 | 0 | 0 | 0 | 1 | 0 | 0|
-0 | 0 | 0 | 0 | 1 | 1 | 0|
-0 | 0 | 0 | 0 | 1 | 1 | 1|
-0 | 0 | 0 | R | 0 | 0 | 0|
-0 | 0 | 0 | R | 1 | 0 | 0|
-0 | 0 | R | R | 0 | 1 | 0|
-0 | R | 0 | 0 | 0 | 0 | 0|
-0 | R | 0 | 0 | 1 | 1 | 0|
-0 | R | 0 | R | 1 | 1 | 0|
-0 | R | R | R | 0 | 1 | 0|
-R | 0 | 0 | 0 | 0 | 0 | 0|
-R | 0 | 0 | 0 | 0 | 1 | 0|
-R | 0 | 0 | 0 | 1 | 1 | 0|
-R | 0 | 0 | R | 0 | 0 | 0|
-R | 0 | 0 | R | 0 | 0 | 1|
-R | 0 | 0 | R | 0 | 1 | 0|
-R | 0 | 0 | R | 0 | 1 | 1|
-R | 0 | R | 0 | 0 | 0 | 1|
-R | 0 | R | R | 0 | 1 | 0|
-R | 0 | R | R | 1 | 1 | 0|
-R | R | 0 | 0 | 0 | 0 | 0|
-R | R | 0 | 0 | 0 | 1 | 0|
-R | R | 0 | 0 | 1 | 1 | 0|
-R | R | 0 | R | 0 | 0 | 0|
-R | R | 0 | R | 0 | 0 | 1|
-R | R | 0 | R | 0 | 1 | 0|
-R | R | 0 | R | 1 | 0 | 0|
-R | R | 0 | R | 1 | 1 | 0|
-R | R | R | 0 | 0 | 0 | 1|
-R | R | R | 0 | 0 | 1 | 1|
-R | R | R | R | 1 | 1 | 0|
+unit | in | out | CR in | CR out| name |
+LDST | 1 | R | 0 | 0| LDST-1R-1W |
+LDST | 2 | 0 | 0 | 0| LDST-2R-0W |
+LDST | 2 | R | 0 | 0| LDST-2R-1W |
+LDST | 3 | 0 | 0 | 0| LDST-3R-0W |
+LDST | 3 | 0 | 0 | 1| LDST-3R-0W-CRo |
+OTHER | 0 | 0 | 0 | 0| 0R-0W |
+OTHER | 0 | 0 | 1 | 0| 0R-0W-CRi |
+OTHER | 0 | 0 | 1 | 1| 0R-0W-CRio |
+OTHER | 0 | R | 0 | 0| 0R-1W |
+OTHER | 0 | R | 1 | 0| 0R-1W-CRi |
+OTHER | 1 | 0 | 0 | 0| 1R-0W |
+OTHER | 1 | 0 | 0 | 1| 1R-0W-CRo |
+OTHER | 1 | 0 | 1 | 1| 1R-0W-CRio |
+OTHER | 1 | R | 0 | 0| 1R-1W |
+OTHER | 1 | R | 0 | 1| 1R-1W-CRo |
+OTHER | 1 | R | 1 | 1| 1R-1W-CRio |
+OTHER | 2 | 0 | 0 | 0| 2R-0W |
+OTHER | 2 | 0 | 0 | 1| 2R-0W-CRo |
+OTHER | 2 | 0 | 1 | 1| 2R-0W-CRio |
+OTHER | 2 | R | 0 | 0| 2R-1W |
+OTHER | 2 | R | 0 | 1| 2R-1W-CRo |
+OTHER | 2 | R | 1 | 0| 2R-1W-CRi |
+OTHER | 2 | R | 1 | 1| 2R-1W-CRio |
+OTHER | 3 | R | 1 | 1| 3R-1W-CRio |
+"""]]
+
+## LDST-1R-1W 
+
+[[!table  data="""
+CSV | opcode | asm | form|
+major.csv | 32 | lwz | D-Form|
+major.csv | 33 | lwzu | D-Form|
+major.csv | 34 | lbz | D-Form|
+major.csv | 35 | lbzu | D-Form|
+major.csv | 40 | lhz | D-Form|
+major.csv | 41 | lhzu | D-Form|
+major.csv | 42 | lha | D-Form|
+major.csv | 43 | lhau | D-Form|
+minor_58.csv | 0 | ld | DS-Form|
+minor_58.csv | 1 | ldu | DS-Form|
+minor_58.csv | 2 | lwa | DS-Form|
+"""]]
+
+## LDST-2R-0W 
+
+[[!table  data="""
+CSV | opcode | asm | form|
+major.csv | 36 | stw | D-Form|
+major.csv | 37 | stwu | D-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|
+minor_62.csv | 0 | std | DS-Form|
+minor_62.csv | 1 | stdu | DS-Form|
+"""]]
+
+## LDST-2R-1W 
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b0000010100 | lwarx | X-Form|
+minor_31.csv | 0b0000010101 | ldx | X-Form|
+minor_31.csv | 0b0000010111 | lwzx | X-Form|
+minor_31.csv | 0b0000110100 | lbarx | X-Form|
+minor_31.csv | 0b0000110101 | ldux | X-Form|
+minor_31.csv | 0b0000110111 | lwzux | X-Form|
+minor_31.csv | 0b0001010100 | ldarx | X-Form|
+minor_31.csv | 0b0001010111 | lbzx | X-Form|
+minor_31.csv | 0b0001110100 | lharx | X-Form|
+minor_31.csv | 0b0001110111 | lbzux | X-Form|
+minor_31.csv | 0b0100010111 | lhzx | X-Form|
+minor_31.csv | 0b0100110111 | lhzux | X-Form|
+minor_31.csv | 0b0101010101 | lwax | X-Form|
+minor_31.csv | 0b0101010111 | lhax | X-Form|
+minor_31.csv | 0b0101110101 | lwaux | X-Form|
+minor_31.csv | 0b0101110111 | lhaux | X-Form|
+minor_31.csv | 0b1000010100 | ldbrx | X-Form|
+minor_31.csv | 0b1000010110 | lwbrx | X-Form|
+minor_31.csv | 0b1100010101 | lwzcix | X-Form|
+minor_31.csv | 0b1100010110 | lhbrx | X-Form|
+minor_31.csv | 0b1100110101 | lhzcix | X-Form|
+minor_31.csv | 0b1101010101 | lbzcix | X-Form|
+minor_31.csv | 0b1101110101 | ldcix | X-Form|
+"""]]
+
+## LDST-3R-0W 
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b0010010101 | stdx | X-Form|
+minor_31.csv | 0b0010010110 | stwcx | X-Form|
+minor_31.csv | 0b0010010111 | stwx | X-Form|
+minor_31.csv | 0b0010110101 | stdux | X-Form|
+minor_31.csv | 0b0010110111 | stwux | X-Form|
+minor_31.csv | 0b0011010110 | stdcx | X-Form|
+minor_31.csv | 0b0110010111 | sthx | X-Form|
+minor_31.csv | 0b0110110111 | sthux | X-Form|
+minor_31.csv | 0b1010010100 | stdbrx | X-Form|
+minor_31.csv | 0b1010010110 | stwbrx | X-Form|
+minor_31.csv | 0b1011010110 | sthcx | X-Form|
+minor_31.csv | 0b1110010101 | stwcix | X-Form|
+minor_31.csv | 0b1110010110 | sthbrx | X-Form|
+minor_31.csv | 0b1110110101 | sthcix | X-Form|
+minor_31.csv | 0b1111010101 | stbcix | X-Form|
+minor_31.csv | 0b1111110101 | stdcix | X-Form|
+"""]]
+
+## LDST-3R-0W-CRo 
+
+[[!table  data="""
+CSV | opcode | asm | form|
+minor_31.csv | 0b0011010111 | stbx | X-Form|
+minor_31.csv | 0b0011110111 | stbux | X-Form|
+minor_31.csv | 0b1010110110 | stbcx | X-Form|
 """]]
 
-##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0
+## 0R-0W 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -58,7 +141,7 @@ minor_31.csv | 0b1001010110 | sync | X-Form|
 minor_31.csv | 0b1111010110 | icbi | X-Form|
 """]]
 
-##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 0 ldst len: 0
+## 0R-0W-CRi 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -68,7 +151,7 @@ minor_19.csv | 0b1000010000 | bcctr | 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
+## 0R-0W-CRio 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -81,23 +164,17 @@ minor_19.csv | 0b0100000001 | crand | XL-Form|
 minor_19.csv | 0b0100100001 | creqv | XL-Form|
 minor_19.csv | 0b0110100001 | crorc | XL-Form|
 minor_19.csv | 0b0111000001 | cror | XL-Form|
-minor_63l.csv | 0b000000010 | 2/0=mcrfs | -Form|
-minor_63l.csv | 0b011000001 | 1/6=mtfsb1 | -Form|
-minor_63l.csv | 0b011000010 | 2/6=mtfsb0 | -Form|
-minor_63l.csv | 0b011000100 | 4/6=mtfsfi | -Form|
-"""]]
-
-##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 1
-
-[[!table  data="""
-CSV | opcode | asm | form|
 minor_31.csv | 0b0011000000 | cmprb | X-Form|
 minor_31.csv | 0b1000000000 | mcrxr | X-Form|
 minor_31.csv | 0b1001000000 | mcrxrx | X-Form|
 minor_31.csv | 0b1011110011 | darn | X-Form|
+minor_63l.csv | 0b000000010 | 2/0=mcrfs | -Form|
+minor_63l.csv | 0b011000001 | 1/6=mtfsb1 | -Form|
+minor_63l.csv | 0b011000010 | 2/6=mtfsb0 | -Form|
+minor_63l.csv | 0b011000100 | 4/6=mtfsfi | -Form|
 """]]
 
-##  in1: 0 in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0
+## 0R-1W 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -106,7 +183,7 @@ minor_31.csv | 0b0001010011 | mfmsr | X-Form|
 minor_31.csv | 0b0101010011 | mfspr | XFX-Form|
 """]]
 
-##  in1: 0 in2: 0 in3: 0 out: R CR in: 1 CR out: 0 ldst len: 0
+## 0R-1W-CRi 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -114,89 +191,7 @@ 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: 1 ldst len: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 21 | rlwinm | M-Form|
-minor_30.csv | 0b0000 | rldicl | MDS-Form|
-minor_30.csv | 0b0001 | rldicl | MDS-Form|
-minor_30.csv | 0b0010 | rldicr | MD-Form|
-minor_30.csv | 0b0011 | rldicr | MD-Form|
-minor_30.csv | 0b0100 | rldic | MD-Form|
-minor_30.csv | 0b0101 | rldic | MD-Form|
-minor_31.csv | 0b1100111000 | srawi | X-Form|
-minor_31.csv | 0b1100111010 | sradi | XS-Form|
-minor_31.csv | 0b1100111011 | sradi | XS-Form|
-minor_31.csv | 0b1101111010 | extswsli | XS-Form|
-minor_31.csv | 0b1101111011 | extswsli | XS-Form|
-"""]]
-
-##  in1: 0 in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b0100010010 | tlbiel | X-Form|
-minor_31.csv | 0b0100110010 | tlbie | X-Form|
-"""]]
-
-##  in1: 0 in2: R in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_63l.csv | 0b000000101 | 5/0=ftsqrt | -Form|
-minor_63l.csv | 0b011110110 | 22/7=mtfsf | -Form|
-"""]]
-
-##  in1: 0 in2: R in3: 0 out: R CR in: 1 CR out: 1 ldst len: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_59.csv | 0b01110 | fcfid[u]s | -Form|
-minor_59.csv | 0b10110 | fsqrts | -Form|
-minor_59.csv | 0b11000 | fres | -Form|
-minor_59.csv | 0b11010 | frsqrtes | -Form|
-minor_63h.csv | 0b0110 | fsqrt | -Form|
-minor_63h.csv | 0b1000 | fre | -Form|
-minor_63h.csv | 0b1010 | frsqrte | -Form|
-minor_63l.csv | 0b011110010 | 18/7=mffsfamily | -Form|
-minor_63l.csv | 0b100000001 | 1/8=fneg | -Form|
-minor_63l.csv | 0b100000010 | 2/8=fmr | -Form|
-minor_63l.csv | 0b100000100 | 4/8=fnabs | -Form|
-minor_63l.csv | 0b100001000 | 8/8=fabs | -Form|
-minor_63l.csv | 0b100001100 | 12/8=frin | -Form|
-minor_63l.csv | 0b100001101 | 13/8=friz | -Form|
-minor_63l.csv | 0b100001110 | 14/8=frip | -Form|
-minor_63l.csv | 0b100001111 | 15/8=frim | -Form|
-minor_63l.csv | 0b110000000 | 0/12=frsp | -Form|
-minor_63l.csv | 0b111000000 | 0/14=fctiw | -Form|
-minor_63l.csv | 0b111000100 | 4/14=fctiwu | -Form|
-minor_63l.csv | 0b111011001 | 25/14=fctid | -Form|
-minor_63l.csv | 0b111011010 | 26/14=fcfid | -Form|
-minor_63l.csv | 0b111011101 | 29/14=fctidu | -Form|
-minor_63l.csv | 0b111011110 | 30/14=fcfidu | -Form|
-minor_63l.csv | 0b111100000 | 0/15=fctiwz | -Form|
-minor_63l.csv | 0b111100100 | 4/15=fctiwuz | -Form|
-minor_63l.csv | 0b111111001 | 25/15=fctidz | -Form|
-minor_63l.csv | 0b111111101 | 29/15=fctiduz | -Form|
-"""]]
-
-##  in1: 0 in2: R in3: R out: R CR in: 0 CR out: 1 ldst len: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 23 | rlwnm | M-Form|
-minor_30.csv | 0b1000 | rldcl | MD-Form|
-minor_30.csv | 0b1001 | rldcr | MD-Form|
-minor_31.csv | 0b0000011000 | slw | X-Form|
-minor_31.csv | 0b0000011011 | sld | X-Form|
-minor_31.csv | 0b1000011000 | srw | X-Form|
-minor_31.csv | 0b1000011011 | srd | X-Form|
-minor_31.csv | 0b1100011000 | sraw | X-Form|
-minor_31.csv | 0b1100011010 | srad | X-Form|
-"""]]
-
-##  in1: R in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0
+## 1R-0W 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -204,10 +199,12 @@ major.csv | 2 | tdi | D-Form|
 major.csv | 3 | twi | D-Form|
 minor_31.csv | 0b0010010010 | mtmsr | X-Form|
 minor_31.csv | 0b0010110010 | mtmsrd | X-Form|
+minor_31.csv | 0b0100010010 | tlbiel | X-Form|
+minor_31.csv | 0b0100110010 | tlbie | X-Form|
 minor_31.csv | 0b0111010011 | mtspr | XFX-Form|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: 0 CR in: 0 CR out: 1 ldst len: 0
+## 1R-0W-CRo 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -215,14 +212,16 @@ major.csv | 10 | cmpli | D-Form|
 major.csv | 11 | cmpi | D-Form|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0
+## 1R-0W-CRio 
 
 [[!table  data="""
 CSV | opcode | asm | form|
 minor_31.csv | 0b0010010000 | mtcrf/mtocrf | XFX-Form|
+minor_63l.csv | 0b000000101 | 5/0=ftsqrt | -Form|
+minor_63l.csv | 0b011110110 | 22/7=mtfsf | -Form|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0
+## 1R-1W 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -235,39 +234,29 @@ major.csv | 26 | xori | D-Form|
 major.csv | 27 | xoris | D-Form|
 major.csv | 8 | subfic | D-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
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 32 | lwz | D-Form|
-major.csv | 33 | lwzu | D-Form|
-major.csv | 34 | lbz | D-Form|
-major.csv | 35 | lbzu | D-Form|
-major.csv | 40 | lhz | D-Form|
-major.csv | 41 | lhzu | D-Form|
-major.csv | 42 | lha | D-Form|
-major.csv | 43 | lhau | D-Form|
 minor_31.csv | 0b0001111010 | popcntb | X-Form|
 minor_31.csv | 0b0010011010 | prtyw | X-Form|
 minor_31.csv | 0b0010111010 | prtyd | X-Form|
 minor_31.csv | 0b0101111010 | popcntw | X-Form|
 minor_31.csv | 0b0111111010 | popcntd | X-Form|
-minor_58.csv | 0 | ld | DS-Form|
-minor_58.csv | 1 | ldu | DS-Form|
-minor_58.csv | 2 | lwa | DS-Form|
+minor_31.csv | 0b1001101000 | nego | XO-Form|
 """]]
 
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0
+## 1R-1W-CRo 
 
 [[!table  data="""
 CSV | opcode | asm | form|
 major.csv | 13 | addic. | D-Form|
+major.csv | 21 | rlwinm | M-Form|
 major.csv | 28 | andi. | B-Form|
 major.csv | 29 | andis. | B-Form|
 major.csv | 7 | mulli | D-Form|
+minor_30.csv | 0b0000 | rldicl | MDS-Form|
+minor_30.csv | 0b0001 | rldicl | MDS-Form|
+minor_30.csv | 0b0010 | rldicr | MD-Form|
+minor_30.csv | 0b0011 | rldicr | MD-Form|
+minor_30.csv | 0b0100 | rldic | MD-Form|
+minor_30.csv | 0b0101 | rldic | MD-Form|
 minor_31.csv | 0b0000011010 | cntlzw | X-Form|
 minor_31.csv | 0b0000111010 | cntlzd | X-Form|
 minor_31.csv | 0b0011001000 | subfze | XO-Form|
@@ -280,49 +269,50 @@ minor_31.csv | 0b1011001000 | subfzeo | XO-Form|
 minor_31.csv | 0b1011001010 | addzeo | XO-Form|
 minor_31.csv | 0b1011101000 | subfmeo | XO-Form|
 minor_31.csv | 0b1011101010 | addmeo | XO-Form|
-"""]]
-
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 1
-
-[[!table  data="""
-CSV | opcode | asm | form|
+minor_31.csv | 0b1100111000 | srawi | X-Form|
+minor_31.csv | 0b1100111010 | sradi | XS-Form|
+minor_31.csv | 0b1100111011 | sradi | XS-Form|
+minor_31.csv | 0b1101111010 | extswsli | XS-Form|
+minor_31.csv | 0b1101111011 | extswsli | XS-Form|
 minor_31.csv | 0b1110011010 | extsh | X-Form|
 minor_31.csv | 0b1110111010 | extsb | 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
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 36 | stw | D-Form|
-major.csv | 37 | stwu | D-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|
-minor_62.csv | 0 | std | DS-Form|
-minor_62.csv | 1 | stdu | DS-Form|
-"""]]
-
-##  in1: R in2: 0 in3: R out: R CR in: 0 CR out: 1 ldst len: 0
-
-[[!table  data="""
-CSV | opcode | asm | form|
-major.csv | 20 | rlwimi | M-Form|
-minor_30.csv | 0b0110 | rldimi | MD-Form|
-minor_30.csv | 0b0111 | rldimi | MD-Form|
-"""]]
-
-##  in1: R in2: 0 in3: R out: R CR in: 1 CR out: 1 ldst len: 0
+## 1R-1W-CRio 
 
 [[!table  data="""
 CSV | opcode | asm | form|
-minor_59.csv | 0b11001 | fmuls | -Form|
-minor_63h.csv | 0b1001 | fmul | -Form|
+minor_59.csv | 0b01110 | fcfid[u]s | -Form|
+minor_59.csv | 0b10110 | fsqrts | -Form|
+minor_59.csv | 0b11000 | fres | -Form|
+minor_59.csv | 0b11010 | frsqrtes | -Form|
+minor_63h.csv | 0b0110 | fsqrt | -Form|
+minor_63h.csv | 0b1000 | fre | -Form|
+minor_63h.csv | 0b1010 | frsqrte | -Form|
+minor_63l.csv | 0b011110010 | 18/7=mffsfamily | -Form|
+minor_63l.csv | 0b100000001 | 1/8=fneg | -Form|
+minor_63l.csv | 0b100000010 | 2/8=fmr | -Form|
+minor_63l.csv | 0b100000100 | 4/8=fnabs | -Form|
+minor_63l.csv | 0b100001000 | 8/8=fabs | -Form|
+minor_63l.csv | 0b100001100 | 12/8=frin | -Form|
+minor_63l.csv | 0b100001101 | 13/8=friz | -Form|
+minor_63l.csv | 0b100001110 | 14/8=frip | -Form|
+minor_63l.csv | 0b100001111 | 15/8=frim | -Form|
+minor_63l.csv | 0b110000000 | 0/12=frsp | -Form|
+minor_63l.csv | 0b111000000 | 0/14=fctiw | -Form|
+minor_63l.csv | 0b111000100 | 4/14=fctiwu | -Form|
+minor_63l.csv | 0b111011001 | 25/14=fctid | -Form|
+minor_63l.csv | 0b111011010 | 26/14=fcfid | -Form|
+minor_63l.csv | 0b111011101 | 29/14=fctidu | -Form|
+minor_63l.csv | 0b111011110 | 30/14=fcfidu | -Form|
+minor_63l.csv | 0b111100000 | 0/15=fctiwz | -Form|
+minor_63l.csv | 0b111100100 | 4/15=fctiwuz | -Form|
+minor_63l.csv | 0b111111001 | 25/15=fctidz | -Form|
+minor_63l.csv | 0b111111101 | 29/15=fctiduz | -Form|
 """]]
 
-##  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0
+## 2R-0W 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -331,7 +321,7 @@ minor_31.csv | 0b0001000100 | td | X-Form|
 minor_31.csv | 0b1111110110 | dcbz | X-Form|
 """]]
 
-##  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 1 ldst len: 0
+## 2R-0W-CRo 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -340,7 +330,7 @@ minor_31.csv | 0b0000100000 | cmpl | X-Form|
 minor_31.csv | 0b0011100000 | cmpeqb | X-Form|
 """]]
 
-##  in1: R in2: R in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0
+## 2R-0W-CRio 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -349,7 +339,7 @@ minor_63l.csv | 0b000000001 | 1/0=fcmpo | -Form|
 minor_63l.csv | 0b000000100 | 4/0=ftdiv | -Form|
 """]]
 
-##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0
+## 2R-1W 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -361,43 +351,22 @@ 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
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b0000010100 | lwarx | X-Form|
-minor_31.csv | 0b0000010101 | ldx | X-Form|
-minor_31.csv | 0b0000010111 | lwzx | X-Form|
-minor_31.csv | 0b0000110100 | lbarx | X-Form|
-minor_31.csv | 0b0000110101 | ldux | X-Form|
-minor_31.csv | 0b0000110111 | lwzux | X-Form|
-minor_31.csv | 0b0001010100 | ldarx | X-Form|
-minor_31.csv | 0b0001010111 | lbzx | X-Form|
-minor_31.csv | 0b0001110100 | lharx | X-Form|
-minor_31.csv | 0b0001110111 | lbzux | X-Form|
-minor_31.csv | 0b0100010111 | lhzx | X-Form|
-minor_31.csv | 0b0100110111 | lhzux | X-Form|
-minor_31.csv | 0b0101010101 | lwax | X-Form|
-minor_31.csv | 0b0101010111 | lhax | X-Form|
-minor_31.csv | 0b0101110101 | lwaux | X-Form|
-minor_31.csv | 0b0101110111 | lhaux | X-Form|
-minor_31.csv | 0b1000010100 | ldbrx | X-Form|
-minor_31.csv | 0b1000010110 | lwbrx | X-Form|
-minor_31.csv | 0b1100010101 | lwzcix | X-Form|
-minor_31.csv | 0b1100010110 | lhbrx | X-Form|
-minor_31.csv | 0b1100110101 | lhzcix | X-Form|
-minor_31.csv | 0b1101010101 | lbzcix | X-Form|
-minor_31.csv | 0b1101110101 | ldcix | X-Form|
-"""]]
-
-##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0
+## 2R-1W-CRo 
 
 [[!table  data="""
 CSV | opcode | asm | form|
+major.csv | 20 | rlwimi | M-Form|
+major.csv | 23 | rlwnm | M-Form|
+minor_30.csv | 0b0110 | rldimi | MD-Form|
+minor_30.csv | 0b0111 | rldimi | MD-Form|
+minor_30.csv | 0b1000 | rldcl | MD-Form|
+minor_30.csv | 0b1001 | rldcr | MD-Form|
 minor_31.csv | 0b0000001000 | subfc | XO-Form|
 minor_31.csv | 0b0000001001 | mulhdu | XO-Form|
 minor_31.csv | 0b0000001010 | addc | XO-Form|
 minor_31.csv | 0b0000001011 | mulhwu | XO-Form|
+minor_31.csv | 0b0000011000 | slw | X-Form|
+minor_31.csv | 0b0000011011 | sld | X-Form|
 minor_31.csv | 0b0000011100 | and | X-Form|
 minor_31.csv | 0b0000101000 | subf | XO-Form|
 minor_31.csv | 0b0000111100 | andc | X-Form|
@@ -426,6 +395,8 @@ minor_31.csv | 0b1000001000 | subfco | XO-Form|
 minor_31.csv | 0b1000001001 | mulhdu | XO-Form|
 minor_31.csv | 0b1000001010 | addco | XO-Form|
 minor_31.csv | 0b1000001011 | mulhwu | XO-Form|
+minor_31.csv | 0b1000011000 | srw | X-Form|
+minor_31.csv | 0b1000011011 | srd | X-Form|
 minor_31.csv | 0b1000101000 | subfo | XO-Form|
 minor_31.csv | 0b1001001001 | mulhd | XO-Form|
 minor_31.csv | 0b1001001011 | mulhw | XO-Form|
@@ -434,6 +405,8 @@ minor_31.csv | 0b1010001010 | addeo | XO-Form|
 minor_31.csv | 0b1011101001 | mulldo | XO-Form|
 minor_31.csv | 0b1011101011 | mullwo | XO-Form|
 minor_31.csv | 0b1100001010 | addo | XO-Form|
+minor_31.csv | 0b1100011000 | sraw | X-Form|
+minor_31.csv | 0b1100011010 | srad | X-Form|
 minor_31.csv | 0b1110001001 | divdeuo | XO-Form|
 minor_31.csv | 0b1110001011 | divweuo | XO-Form|
 minor_31.csv | 0b1110101001 | divdeo | XO-Form|
@@ -444,7 +417,7 @@ minor_31.csv | 0b1111101001 | divdo | XO-Form|
 minor_31.csv | 0b1111101011 | divwo | XO-Form|
 """]]
 
-##  in1: R in2: R in3: 0 out: R CR in: 1 CR out: 0 ldst len: 0
+## 2R-1W-CRi 
 
 [[!table  data="""
 CSV | opcode | asm | form|
@@ -482,53 +455,24 @@ minor_31.csv | 0b1111001111 | isel | A-Form|
 minor_31.csv | 0b1111101111 | isel | A-Form|
 """]]
 
-##  in1: R in2: R in3: 0 out: R CR in: 1 CR out: 1 ldst len: 0
+## 2R-1W-CRio 
 
 [[!table  data="""
 CSV | opcode | asm | form|
 minor_59.csv | 0b10010 | fdivs | -Form|
 minor_59.csv | 0b10100 | fsubs | -Form|
 minor_59.csv | 0b10101 | fadds | -Form|
+minor_59.csv | 0b11001 | fmuls | -Form|
 minor_63h.csv | 0b0010 | fdiv | -Form|
 minor_63h.csv | 0b0100 | fsub | -Form|
 minor_63h.csv | 0b0101 | fadd | -Form|
+minor_63h.csv | 0b1001 | fmul | -Form|
 minor_63l.csv | 0b011011010 | 26/6=fmrgow | -Form|
 minor_63l.csv | 0b011011110 | 30/6=fmrgew | -Form|
 minor_63l.csv | 0b100000000 | 0/8=fcpsgn | -Form|
 """]]
 
-##  in1: R in2: R in3: R out: 0 CR in: 0 CR out: 0 ldst len: 1
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b0010010101 | stdx | X-Form|
-minor_31.csv | 0b0010010110 | stwcx | X-Form|
-minor_31.csv | 0b0010010111 | stwx | X-Form|
-minor_31.csv | 0b0010110101 | stdux | X-Form|
-minor_31.csv | 0b0010110111 | stwux | X-Form|
-minor_31.csv | 0b0011010110 | stdcx | X-Form|
-minor_31.csv | 0b0110010111 | sthx | X-Form|
-minor_31.csv | 0b0110110111 | sthux | X-Form|
-minor_31.csv | 0b1010010100 | stdbrx | X-Form|
-minor_31.csv | 0b1010010110 | stwbrx | X-Form|
-minor_31.csv | 0b1011010110 | sthcx | X-Form|
-minor_31.csv | 0b1110010101 | stwcix | X-Form|
-minor_31.csv | 0b1110010110 | sthbrx | X-Form|
-minor_31.csv | 0b1110110101 | sthcix | X-Form|
-minor_31.csv | 0b1111010101 | stbcix | X-Form|
-minor_31.csv | 0b1111110101 | stdcix | X-Form|
-"""]]
-
-##  in1: R in2: R in3: R out: 0 CR in: 0 CR out: 1 ldst len: 1
-
-[[!table  data="""
-CSV | opcode | asm | form|
-minor_31.csv | 0b0011010111 | stbx | X-Form|
-minor_31.csv | 0b0011110111 | stbux | X-Form|
-minor_31.csv | 0b1010110110 | stbcx | X-Form|
-"""]]
-
-##  in1: R in2: R in3: R out: R CR in: 1 CR out: 1 ldst len: 0
+## 3R-1W-CRio 
 
 [[!table  data="""
 CSV | opcode | asm | form|