table format of keys
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 7 Oct 2020 14:39:13 +0000 (15:39 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 7 Oct 2020 14:39:13 +0000 (15:39 +0100)
openpower/opcode_regs_deduped.mdwn
openpower/sv_analysis.py

index 3ff3a5dd8b9c2c8fc966162e3c662c21d4edb76d..c6925ed6b4b91af49d3e15b617ed60e72c21ff26 100644 (file)
 # keys
 
- *  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 1
- *  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
- *  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: 0 CR out: 1 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
- *  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
- *  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 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
- *  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0 rc: 0 lk: 0
- *  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 0 ldst len: 0 rc: 0 lk: 1
- *  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
- *  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
- *  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
- *  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
- *  in1: R in2: 0 in3: R out: 0 CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
- *  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 1 rc: R lk: 0
- *  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
- *  in1: R in2: 0 in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
- *  in1: 0 in2: 0 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: 0 ldst len: 0 rc: 0 lk: 0
- *  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
- *  in1: R in2: 0 in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
- *  in1: 0 in2: 0 in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
- *  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: 1 CR out: 1 ldst len: 1 rc: R lk: 
- *  in1: R in2: R in3: R out: 0 CR in: 0 CR out: 1 ldst len: 1 rc: R lk: 0
- *  in1: 0 in2: R 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
- *  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
- *  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
- *  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 1 lk: 0
- *  in1: 0 in2: R in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
- *  in1: R in2: 0 in3: 0 out: 0 CR in: 1 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
+|in1 | in2 | in3 | out | CR in | CR out | ldst len | rc | lk|
+|R | 0 | R | 0 | 0 | 0 | 1 | 0 | 0|
+|R | 0 | R | R | 0 | 0 | 0 | R | 0|
+|R | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0|
+|R | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0|
+|0 | 0 | 0 | R | 0 | 0 | 0 | 0 | 0|
+|0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0|
+|R | R | R | 0 | 0 | 1 | 1 | R | 0|
+|0 | R | 0 | 0 | 0 | 0 | 0 | 0 | 0|
+|0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1|
+|0 | 0 | 0 | 0 | 1 | 1 | 1 | R | |
+|R | 0 | 0 | R | 0 | 1 | 0 | 1 | 0|
+|R | R | 0 | 0 | 0 | 0 | 0 | 0 | 0|
+|0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1|
+|R | 0 | 0 | R | 0 | 1 | 0 | R | 0|
+|R | R | 0 | R | 0 | 1 | 0 | R | 0|
+|R | R | 0 | R | 0 | 0 | 1 | 0 | 0|
+|0 | 0 | 0 | R | 1 | 0 | 0 | 0 | 0|
+|0 | 0 | R | R | 0 | 0 | 0 | R | 0|
+|R | R | 0 | 0 | 0 | 1 | 0 | 0 | 0|
+|0 | R | R | R | 0 | 0 | 0 | R | 0|
+|R | 0 | 0 | R | 0 | 0 | 0 | R | 0|
+|0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0|
+|R | 0 | R | R | 0 | 1 | 0 | R | 0|
+|0 | R | R | R | 0 | 1 | 0 | R | 0|
+|R | R | 0 | R | 1 | 0 | 0 | 0 | 0|
+|R | R | R | 0 | 0 | 0 | 1 | 0 | 0|
+|0 | 0 | 0 | 0 | 0 | 0 | 0 | R | 0|
+|R | 0 | 0 | R | 0 | 1 | 0 | 0 | 0|
+|R | 0 | 0 | R | 0 | 0 | 1 | 0 | 0|
+|R | 0 | 0 | R | 0 | 0 | 0 | 0 | 0|
+|R | R | 0 | R | 0 | 0 | 0 | 0 | 0|
+|R | 0 | 0 | R | 0 | 1 | 1 | R | 0|
+|0 | 0 | R | R | 0 | 1 | 0 | R | 0|
+|R | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0|
 
-##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 1
-
- *  ('major.csv', '18', 'b')
-
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
+##  in1: R in2: 0 in3: R out: 0 CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
 
- *  ('minor_58.csv', '0', 'ld')
- *  ('minor_58.csv', '1', 'ldu')
- *  ('minor_58.csv', '2', 'lwa')
- *  ('major.csv', '34', 'lbz')
- *  ('major.csv', '35', 'lbzu')
- *  ('major.csv', '42', 'lha')
- *  ('major.csv', '43', 'lhau')
- *  ('major.csv', '40', 'lhz')
- *  ('major.csv', '41', 'lhzu')
- *  ('major.csv', '32', 'lwz')
- *  ('major.csv', '33', 'lwzu')
- *  ('minor_31.csv', '0b0001111010', 'popcntb')
- *  ('minor_31.csv', '0b0111111010', 'popcntd')
- *  ('minor_31.csv', '0b0101111010', 'popcntw')
- *  ('minor_31.csv', '0b0010111010', 'prtyd')
- *  ('minor_31.csv', '0b0010011010', 'prtyw')
+ *  ('minor_62.csv', '0', 'std')
+ *  ('minor_62.csv', '1', 'stdu')
+ *  ('major.csv', '38', 'stb')
+ *  ('major.csv', '39', 'stbu')
+ *  ('major.csv', '44', 'sth')
+ *  ('major.csv', '45', 'sthu')
+ *  ('major.csv', '36', 'stw')
+ *  ('major.csv', '37', 'stwu')
 
-##  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: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
 
- *  ('minor_31.csv', '0b1111010101', 'stbcix')
- *  ('minor_31.csv', '0b1010010100', 'stdbrx')
- *  ('minor_31.csv', '0b1111110101', 'stdcix')
- *  ('minor_31.csv', '0b0011010110', 'stdcx')
- *  ('minor_31.csv', '0b0010110101', 'stdux')
- *  ('minor_31.csv', '0b0010010101', 'stdx')
- *  ('minor_31.csv', '0b1110010110', 'sthbrx')
- *  ('minor_31.csv', '0b1110110101', 'sthcix')
- *  ('minor_31.csv', '0b1011010110', 'sthcx')
- *  ('minor_31.csv', '0b0110110111', 'sthux')
- *  ('minor_31.csv', '0b0110010111', 'sthx')
- *  ('minor_31.csv', '0b1010010110', 'stwbrx')
- *  ('minor_31.csv', '0b1110010101', 'stwcix')
- *  ('minor_31.csv', '0b0010010110', 'stwcx')
- *  ('minor_31.csv', '0b0010110111', 'stwux')
- *  ('minor_31.csv', '0b0010010111', 'stwx')
+ *  ('major.csv', '20', 'rlwimi')
 
 ##  in1: R in2: 0 in3: 0 out: 0 CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
 
  *  ('major.csv', '11', 'cmpi')
  *  ('major.csv', '10', 'cmpli')
 
+##  in1: R in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0 rc: 0 lk: 0
+
+ *  ('minor_31.csv', '0b0010010000', 'mtcrf/mtocrf')
+
 ##  in1: 0 in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
  *  ('extra.csv', '000001---------------0000000011-', 'sim_cfg')
  *  ('minor_31.csv', '0b0001010011', 'mfmsr')
  *  ('minor_31.csv', '0b0101010011', 'mfspr')
 
-##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
-
- *  ('minor_19_00000.csv', '0b00010', 'add pcis not implemented yet')
- *  ('extra.csv', '000000---------------0100000000-', 'attn')
-
-##  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
-
- *  ('minor_31.csv', '0b1111110110', 'dcbz')
- *  ('minor_31.csv', '0b0001000100', 'td')
- *  ('minor_31.csv', '0b0000000100', 'tw')
-
-##  in1: 0 in2: 0 in3: 0 out: R CR in: 1 CR out: 0 ldst len: 0 rc: 0 lk: 0
-
- *  ('minor_31.csv', '0b0000010011', 'mfcr/mfocrf')
- *  ('minor_31.csv', '0b0010000000', 'setb')
-
 ##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0 rc: 0 lk: 0
 
  *  ('minor_19.csv', '0b0000000000', 'mcrf')
  *  ('minor_19.csv', '0b0110100001', 'crorc')
  *  ('minor_19.csv', '0b0011000001', 'crxor')
 
+##  in1: R in2: R in3: R out: 0 CR in: 0 CR out: 1 ldst len: 1 rc: R lk: 0
+
+ *  ('minor_31.csv', '0b1010110110', 'stbcx')
+ *  ('minor_31.csv', '0b0011110111', 'stbux')
+ *  ('minor_31.csv', '0b0011010111', 'stbx')
+
+##  in1: 0 in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
+
+ *  ('minor_31.csv', '0b0100110010', 'tlbie')
+ *  ('minor_31.csv', '0b0100010010', 'tlbiel')
+
 ##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 0 ldst len: 0 rc: 0 lk: 1
 
  *  ('major.csv', '16', 'bc')
  *  ('minor_19.csv', '0b0000010000', 'bclr')
  *  ('minor_19.csv', '0b1000110000', 'bctar')
 
+##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 1 rc: R lk: 
+
+ *  ('minor_31.csv', '0b0011000000', 'cmprb')
+ *  ('minor_31.csv', '0b1011110011', 'darn')
+ *  ('minor_31.csv', '0b1000000000', 'mcrxr')
+ *  ('minor_31.csv', '0b1001000000', 'mcrxrx')
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 1 lk: 0
+
+ *  ('major.csv', '13', 'addic.')
+ *  ('major.csv', '28', 'andi.')
+ *  ('major.csv', '29', 'andis.')
+
+##  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
+
+ *  ('minor_31.csv', '0b1111110110', 'dcbz')
+ *  ('minor_31.csv', '0b0001000100', 'td')
+ *  ('minor_31.csv', '0b0000000100', 'tw')
+
+##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 1
+
+ *  ('major.csv', '18', 'b')
+
 ##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
 
  *  ('minor_31.csv', '0b0011101010', 'addme')
  *  ('minor_31.csv', '0b1010001000', 'subfeo')
  *  ('minor_31.csv', '0b0100111100', 'xor')
 
-##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
-
- *  ('minor_31.csv', '0b0011111100', 'bpermd')
- *  ('minor_31.csv', '0b0111111100', 'cmpb')
- *  ('minor_31.csv', '0b0100001001', 'modud')
- *  ('minor_31.csv', '0b0100001011', 'moduw')
- *  ('minor_31.csv', '0b1100001001', 'modsd')
- *  ('minor_31.csv', '0b1100001011', 'modsw')
-
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
+##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
 
- *  ('major.csv', '7', 'mulli')
+ *  ('minor_31.csv', '0b0000110100', 'lbarx')
+ *  ('minor_31.csv', '0b1101010101', 'lbzcix')
+ *  ('minor_31.csv', '0b0001110111', 'lbzux')
+ *  ('minor_31.csv', '0b0001010111', 'lbzx')
+ *  ('minor_31.csv', '0b0001010100', 'ldarx')
+ *  ('minor_31.csv', '0b1000010100', 'ldbrx')
+ *  ('minor_31.csv', '0b1101110101', 'ldcix')
+ *  ('minor_31.csv', '0b0000110101', 'ldux')
+ *  ('minor_31.csv', '0b0000010101', 'ldx')
+ *  ('minor_31.csv', '0b0001110100', 'lharx')
+ *  ('minor_31.csv', '0b0101110111', 'lhaux')
+ *  ('minor_31.csv', '0b0101010111', 'lhax')
+ *  ('minor_31.csv', '0b1100010110', 'lhbrx')
+ *  ('minor_31.csv', '0b1100110101', 'lhzcix')
+ *  ('minor_31.csv', '0b0100110111', 'lhzux')
+ *  ('minor_31.csv', '0b0100010111', 'lhzx')
+ *  ('minor_31.csv', '0b0000010100', 'lwarx')
+ *  ('minor_31.csv', '0b0101110101', 'lwaux')
+ *  ('minor_31.csv', '0b0101010101', 'lwax')
+ *  ('minor_31.csv', '0b1000010110', 'lwbrx')
+ *  ('minor_31.csv', '0b1100010101', 'lwzcix')
+ *  ('minor_31.csv', '0b0000110111', 'lwzux')
+ *  ('minor_31.csv', '0b0000010111', 'lwzx')
 
-##  in1: R in2: 0 in3: R out: 0 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
 
- *  ('minor_62.csv', '0', 'std')
- *  ('minor_62.csv', '1', 'stdu')
- *  ('major.csv', '38', 'stb')
- *  ('major.csv', '39', 'stbu')
- *  ('major.csv', '44', 'sth')
- *  ('major.csv', '45', 'sthu')
- *  ('major.csv', '36', 'stw')
- *  ('major.csv', '37', 'stwu')
+ *  ('minor_31.csv', '0b0000010011', 'mfcr/mfocrf')
+ *  ('minor_31.csv', '0b0010000000', 'setb')
 
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 1 rc: R lk: 0
+##  in1: 0 in2: 0 in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
 
- *  ('minor_31.csv', '0b1110111010', 'extsb')
- *  ('minor_31.csv', '0b1110011010', 'extsh')
- *  ('minor_31.csv', '0b1111011010', 'extsw')
+ *  ('major.csv', '21', 'rlwinm')
 
 ##  in1: R in2: R in3: 0 out: 0 CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
 
  *  ('minor_31.csv', '0b0011100000', 'cmpeqb')
  *  ('minor_31.csv', '0b0000100000', 'cmpl')
 
-##  in1: R in2: 0 in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
-
- *  ('minor_30.csv', '0b0110', 'rldimi')
- *  ('minor_30.csv', '0b0111', 'rldimi')
-
-##  in1: 0 in2: 0 in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
+##  in1: 0 in2: R in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
 
- *  ('major.csv', '21', 'rlwinm')
+ *  ('major.csv', '23', 'rlwnm')
 
-##  in1: R in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
 
- *  ('major.csv', '2', 'tdi')
- *  ('major.csv', '3', 'twi')
- *  ('minor_31.csv', '0b0010110010', 'mtmsrd')
- *  ('minor_31.csv', '0b0010010010', 'mtmsr')
- *  ('minor_31.csv', '0b0111010011', 'mtspr')
+ *  ('minor_31.csv', '0b0001101000', 'neg')
+ *  ('minor_31.csv', '0b1001101000', 'nego')
 
 ##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
  *  ('minor_31.csv', '0b0111110010', 'slbia')
  *  ('minor_31.csv', '0b1001010110', 'sync')
 
-##  in1: R in2: 0 in3: R out: R CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
-
- *  ('major.csv', '20', 'rlwimi')
-
-##  in1: 0 in2: 0 in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
-
- *  ('minor_30.csv', '0b0100', 'rldic')
- *  ('minor_30.csv', '0b0101', 'rldic')
- *  ('minor_30.csv', '0b0000', 'rldicl')
- *  ('minor_30.csv', '0b0001', 'rldicl')
- *  ('minor_30.csv', '0b0010', 'rldicr')
- *  ('minor_30.csv', '0b0011', 'rldicr')
- *  ('minor_31.csv', '0b1101111010', 'extswsli')
- *  ('minor_31.csv', '0b1101111011', 'extswsli')
- *  ('minor_31.csv', '0b1100111010', 'sradi')
- *  ('minor_31.csv', '0b1100111011', 'sradi')
- *  ('minor_31.csv', '0b1100111000', 'srawi')
-
-##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
-
- *  ('minor_31.csv', '0b0000110100', 'lbarx')
- *  ('minor_31.csv', '0b1101010101', 'lbzcix')
- *  ('minor_31.csv', '0b0001110111', 'lbzux')
- *  ('minor_31.csv', '0b0001010111', 'lbzx')
- *  ('minor_31.csv', '0b0001010100', 'ldarx')
- *  ('minor_31.csv', '0b1000010100', 'ldbrx')
- *  ('minor_31.csv', '0b1101110101', 'ldcix')
- *  ('minor_31.csv', '0b0000110101', 'ldux')
- *  ('minor_31.csv', '0b0000010101', 'ldx')
- *  ('minor_31.csv', '0b0001110100', 'lharx')
- *  ('minor_31.csv', '0b0101110111', 'lhaux')
- *  ('minor_31.csv', '0b0101010111', 'lhax')
- *  ('minor_31.csv', '0b1100010110', 'lhbrx')
- *  ('minor_31.csv', '0b1100110101', 'lhzcix')
- *  ('minor_31.csv', '0b0100110111', 'lhzux')
- *  ('minor_31.csv', '0b0100010111', 'lhzx')
- *  ('minor_31.csv', '0b0000010100', 'lwarx')
- *  ('minor_31.csv', '0b0101110101', 'lwaux')
- *  ('minor_31.csv', '0b0101010101', 'lwax')
- *  ('minor_31.csv', '0b1000010110', 'lwbrx')
- *  ('minor_31.csv', '0b1100010101', 'lwzcix')
- *  ('minor_31.csv', '0b0000110111', 'lwzux')
- *  ('minor_31.csv', '0b0000010111', 'lwzx')
-
-##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 1 rc: R lk: 
-
- *  ('minor_31.csv', '0b0011000000', 'cmprb')
- *  ('minor_31.csv', '0b1011110011', 'darn')
- *  ('minor_31.csv', '0b1000000000', 'mcrxr')
- *  ('minor_31.csv', '0b1001000000', 'mcrxrx')
-
-##  in1: R in2: R in3: R out: 0 CR in: 0 CR out: 1 ldst len: 1 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
 
- *  ('minor_31.csv', '0b1010110110', 'stbcx')
- *  ('minor_31.csv', '0b0011110111', 'stbux')
- *  ('minor_31.csv', '0b0011010111', 'stbx')
+ *  ('minor_30.csv', '0b0110', 'rldimi')
+ *  ('minor_30.csv', '0b0111', 'rldimi')
 
-##  in1: 0 in2: R in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
+##  in1: 0 in2: R in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
 
- *  ('minor_31.csv', '0b0100110010', 'tlbie')
- *  ('minor_31.csv', '0b0100010010', 'tlbiel')
+ *  ('minor_30.csv', '0b1000', 'rldcl')
+ *  ('minor_30.csv', '0b1001', 'rldcr')
+ *  ('minor_31.csv', '0b0000011011', 'sld')
+ *  ('minor_31.csv', '0b0000011000', 'slw')
+ *  ('minor_31.csv', '0b1100011010', 'srad')
+ *  ('minor_31.csv', '0b1100011000', 'sraw')
+ *  ('minor_31.csv', '0b1000011011', 'srd')
+ *  ('minor_31.csv', '0b1000011000', 'srw')
 
 ##  in1: R in2: R in3: 0 out: R CR in: 1 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
  *  ('minor_31.csv', '0b1111001111', 'isel')
  *  ('minor_31.csv', '0b1111101111', 'isel')
 
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 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
 
- *  ('minor_31.csv', '0b0001101000', 'neg')
- *  ('minor_31.csv', '0b1001101000', 'nego')
+ *  ('minor_31.csv', '0b1111010101', 'stbcix')
+ *  ('minor_31.csv', '0b1010010100', 'stdbrx')
+ *  ('minor_31.csv', '0b1111110101', 'stdcix')
+ *  ('minor_31.csv', '0b0011010110', 'stdcx')
+ *  ('minor_31.csv', '0b0010110101', 'stdux')
+ *  ('minor_31.csv', '0b0010010101', 'stdx')
+ *  ('minor_31.csv', '0b1110010110', 'sthbrx')
+ *  ('minor_31.csv', '0b1110110101', 'sthcix')
+ *  ('minor_31.csv', '0b1011010110', 'sthcx')
+ *  ('minor_31.csv', '0b0110110111', 'sthux')
+ *  ('minor_31.csv', '0b0110010111', 'sthx')
+ *  ('minor_31.csv', '0b1010010110', 'stwbrx')
+ *  ('minor_31.csv', '0b1110010101', 'stwcix')
+ *  ('minor_31.csv', '0b0010010110', 'stwcx')
+ *  ('minor_31.csv', '0b0010110111', 'stwux')
+ *  ('minor_31.csv', '0b0010010111', 'stwx')
+
+##  in1: 0 in2: 0 in3: 0 out: 0 CR in: 0 CR out: 0 ldst len: 0 rc: R lk: 0
+
+ *  ('minor_19_00000.csv', '0b00010', 'add pcis not implemented yet')
+ *  ('extra.csv', '000000---------------0100000000-', 'attn')
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 0 lk: 0
+
+ *  ('major.csv', '7', 'mulli')
+
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 1 rc: 0 lk: 0
+
+ *  ('minor_58.csv', '0', 'ld')
+ *  ('minor_58.csv', '1', 'ldu')
+ *  ('minor_58.csv', '2', 'lwa')
+ *  ('major.csv', '34', 'lbz')
+ *  ('major.csv', '35', 'lbzu')
+ *  ('major.csv', '42', 'lha')
+ *  ('major.csv', '43', 'lhau')
+ *  ('major.csv', '40', 'lhz')
+ *  ('major.csv', '41', 'lhzu')
+ *  ('major.csv', '32', 'lwz')
+ *  ('major.csv', '33', 'lwzu')
+ *  ('minor_31.csv', '0b0001111010', 'popcntb')
+ *  ('minor_31.csv', '0b0111111010', 'popcntd')
+ *  ('minor_31.csv', '0b0101111010', 'popcntw')
+ *  ('minor_31.csv', '0b0010111010', 'prtyd')
+ *  ('minor_31.csv', '0b0010011010', 'prtyw')
 
 ##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
  *  ('major.csv', '26', 'xori')
  *  ('major.csv', '27', 'xoris')
 
-##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 0 rc: 1 lk: 0
+##  in1: R in2: R in3: 0 out: R CR in: 0 CR out: 0 ldst len: 0 rc: 0 lk: 0
 
- *  ('major.csv', '13', 'addic.')
- *  ('major.csv', '28', 'andi.')
- *  ('major.csv', '29', 'andis.')
+ *  ('minor_31.csv', '0b0011111100', 'bpermd')
+ *  ('minor_31.csv', '0b0111111100', 'cmpb')
+ *  ('minor_31.csv', '0b0100001001', 'modud')
+ *  ('minor_31.csv', '0b0100001011', 'moduw')
+ *  ('minor_31.csv', '0b1100001001', 'modsd')
+ *  ('minor_31.csv', '0b1100001011', 'modsw')
 
-##  in1: 0 in2: R in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
+##  in1: R in2: 0 in3: 0 out: R CR in: 0 CR out: 1 ldst len: 1 rc: R lk: 0
 
- *  ('minor_30.csv', '0b1000', 'rldcl')
- *  ('minor_30.csv', '0b1001', 'rldcr')
- *  ('minor_31.csv', '0b0000011011', 'sld')
- *  ('minor_31.csv', '0b0000011000', 'slw')
- *  ('minor_31.csv', '0b1100011010', 'srad')
- *  ('minor_31.csv', '0b1100011000', 'sraw')
- *  ('minor_31.csv', '0b1000011011', 'srd')
- *  ('minor_31.csv', '0b1000011000', 'srw')
+ *  ('minor_31.csv', '0b1110111010', 'extsb')
+ *  ('minor_31.csv', '0b1110011010', 'extsh')
+ *  ('minor_31.csv', '0b1111011010', 'extsw')
 
-##  in1: R in2: 0 in3: 0 out: 0 CR in: 1 CR out: 1 ldst len: 0 rc: 0 lk: 0
+##  in1: 0 in2: 0 in3: R out: R CR in: 0 CR out: 1 ldst len: 0 rc: R lk: 0
 
- *  ('minor_31.csv', '0b0010010000', 'mtcrf/mtocrf')
+ *  ('minor_30.csv', '0b0100', 'rldic')
+ *  ('minor_30.csv', '0b0101', 'rldic')
+ *  ('minor_30.csv', '0b0000', 'rldicl')
+ *  ('minor_30.csv', '0b0001', 'rldicl')
+ *  ('minor_30.csv', '0b0010', 'rldicr')
+ *  ('minor_30.csv', '0b0011', 'rldicr')
+ *  ('minor_31.csv', '0b1101111010', 'extswsli')
+ *  ('minor_31.csv', '0b1101111011', 'extswsli')
+ *  ('minor_31.csv', '0b1100111010', 'sradi')
+ *  ('minor_31.csv', '0b1100111011', 'sradi')
+ *  ('minor_31.csv', '0b1100111000', 'srawi')
 
-##  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: 0 ldst len: 0 rc: 0 lk: 0
 
- *  ('major.csv', '23', 'rlwnm')
+ *  ('major.csv', '2', 'tdi')
+ *  ('major.csv', '3', 'twi')
+ *  ('minor_31.csv', '0b0010110010', 'mtmsrd')
+ *  ('minor_31.csv', '0b0010010010', 'mtmsr')
+ *  ('minor_31.csv', '0b0111010011', 'mtspr')
 
index 3ef2fd807714307df1240d8703d3738f74b90fad..91a1dbb03cc3880ec247e4308d48c20fd67ea2dd 100644 (file)
@@ -24,11 +24,12 @@ def blank_key(row):
             return False
     return True
 
+keycolumns = ['in1', 'in2', 'in3', 'out', 'CR in', 'CR out',
+                 'ldst len', 'rc', 'lk']
 def create_key(row):
     res = OrderedDict()
     #print ("row", row)
-    for key in ['in1', 'in2', 'in3', 'out', 'CR in', 'CR out',
-                 'ldst len', 'rc', 'lk']:
+    for key in keycolumns:
         # registers
         if key in ['in1', 'in2', 'in3', 'out']:
             if row[key].startswith('R'):
@@ -66,6 +67,9 @@ def dformat(d):
         res.append("%s: %s" % (k, v))
     return ' '.join(res)
 
+def tformat(d):
+    return "|" + ' | '.join(d) + "|"
+
 
 def process_csvs():
     csvs = {}
@@ -98,8 +102,9 @@ def process_csvs():
 
     print ("# keys")
     print ()
+    print (tformat(keycolumns))
     for key in primarykeys:
-        print (" * ", dformat(dictkeys[key]))
+        print (tformat(dictkeys[key].values()))
     print ()
 
     for key in primarykeys: