From e5fab95dcfc6ff22b922db3c951a217430342dd8 Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Wed, 7 Oct 2020 15:39:13 +0100 Subject: [PATCH] table format of keys --- openpower/opcode_regs_deduped.mdwn | 407 +++++++++++++++-------------- openpower/sv_analysis.py | 11 +- 2 files changed, 212 insertions(+), 206 deletions(-) diff --git a/openpower/opcode_regs_deduped.mdwn b/openpower/opcode_regs_deduped.mdwn index 3ff3a5dd8..c6925ed6b 100644 --- a/openpower/opcode_regs_deduped.mdwn +++ b/openpower/opcode_regs_deduped.mdwn @@ -1,109 +1,71 @@ # 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') @@ -116,6 +78,17 @@ * ('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') @@ -123,6 +96,29 @@ * ('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') @@ -189,35 +185,40 @@ * ('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 @@ -225,22 +226,14 @@ * ('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 @@ -258,67 +251,21 @@ * ('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 @@ -355,10 +302,52 @@ * ('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 @@ -371,28 +360,40 @@ * ('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') diff --git a/openpower/sv_analysis.py b/openpower/sv_analysis.py index 3ef2fd807..91a1dbb03 100644 --- a/openpower/sv_analysis.py +++ b/openpower/sv_analysis.py @@ -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: -- 2.30.2