instrs = {
 'add': [{'instr': 'add',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Add'}],
 'add.': [{'instr': 'add.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Add'}],
 'addc': [{'instr': 'addc',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Add Carrying'}],
 'addc.': [{'instr': 'addc.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Add Carrying'}],
 'addco': [{'instr': 'addco',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Add Carrying'}],
 'addco.': [{'instr': 'addco.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Add Carrying'}],
 'adde': [{'instr': 'adde',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Add Extended'}],
 'adde.': [{'instr': 'adde.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Add Extended'}],
 'addeo': [{'instr': 'addeo',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Add Extended'}],
 'addeo.': [{'instr': 'addeo.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Add Extended'}],
 'addi': [{'instr': 'addi',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Add Immediate'}],
 'addic': [{'instr': 'addic',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Add Immediate Carrying'}],
 'addic.': [{'instr': 'addic.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Add Immediate Carrying and Record'}],
 'addis': [{'instr': 'addis',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Add Immediate Shifted'}],
 'addme': [{'instr': 'addme',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Add to Minus One Extended'}],
 'addme.': [{'instr': 'addme.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Add to Minus One Extended'}],
 'addmeo': [{'instr': 'addmeo',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Add to Minus One Extended'}],
 'addmeo.': [{'instr': 'addmeo.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Add to Minus One Extended'}],
 'addo': [{'instr': 'addo',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Add'}],
 'addo.': [{'instr': 'addo.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Add'}],
 'addze': [{'instr': 'addze',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Add to Zero Extended'}],
 'addze.': [{'instr': 'addze.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Add to Zero Extended'}],
 'addzeo': [{'instr': 'addzeo',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Add to Zero Extended'}],
 'addzeo.': [{'instr': 'addzeo.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Add to Zero Extended'}],
 'and': [{'instr': 'and',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'AND'}],
 'and.': [{'instr': 'and.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'AND'}],
 'andc': [{'instr': 'andc',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'AND with Complement'}],
 'andc.': [{'instr': 'andc.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'AND with Complement'}],
 'andi.': [{'instr': 'andi.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'AND Immediate'}],
 'andis.': [{'instr': 'andis.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'AND Immediate Shifted'}],
 'b': [{'instr': 'b',
        'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
        'short': 'Branch'}],
 'bc': [{'instr': 'bc',
         'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
         'short': 'Branch Conditional'}],
 'bcctr': [{'instr': 'bcctr',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Branch Conditional to Count Register'}],
 'bclr': [{'instr': 'bclr',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Branch Conditional to Link Register'}],
 'cmp': [{'instr': 'cmp',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Compare'}],
 'cmpi': [{'instr': 'cmpi',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Compare Immediate'}],
 'cmpl': [{'instr': 'cmpl',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Compare Logical'}],
 'cmpli': [{'instr': 'cmpli',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Compare Logical Immediate'}],
 'cntlzd': [{'instr': 'cntlzd',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Count Leading Zeros Doubleword'}],
 'cntlzd.': [{'instr': 'cntlzd.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Count Leading Zeros Doubleword'}],
 'cntlzw': [{'instr': 'cntlzw',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Count Leading Zeros Word'}],
 'cntlzw.': [{'instr': 'cntlzw.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Count Leading Zeros Word'}],
 'crand': [{'instr': 'crand',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Condition Register AND'}],
 'crandc': [{'instr': 'crandc',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Condition Register AND with Complement'}],
 'creqv': [{'instr': 'creqv',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Condition Register Equivalent'}],
 'crnand': [{'instr': 'crnand',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Condition Register NAND'}],
 'crnor': [{'instr': 'crnor',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Condition Register NOR'}],
 'cror': [{'instr': 'cror',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Condition Register OR'}],
 'crorc': [{'instr': 'crorc',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Condition Register OR with Complement'}],
 'crxor': [{'instr': 'crxor',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Condition Register XOR'}],
 'dcbf': [{'instr': 'dcbf',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Data Cache Block Flush'}],
 'dcbst': [{'instr': 'dcbst',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Data Cache Block Store'}],
 'dcbt': [{'instr': 'dcbt',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Data Cache Block Touch'}],
 'dcbtst': [{'instr': 'dcbtst',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Data Cache Block Touch for Store'}],
 'dcbz': [{'instr': 'dcbz',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Data Cache Block set to Zero'}],
 'divd': [{'instr': 'divd',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Divide Doubleword'}],
 'divd.': [{'instr': 'divd.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Divide Doubleword'}],
 'divdo': [{'instr': 'divdo',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Divide Doubleword'}],
 'divdo.': [{'instr': 'divdo.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Divide Doubleword'}],
 'divdu': [{'instr': 'divdu',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Divide Doubleword Unsigned'}],
 'divdu.': [{'instr': 'divdu.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Divide Doubleword Unsigned'}],
 'divduo': [{'instr': 'divduo',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Divide Doubleword Unsigned'}],
 'divduo.': [{'instr': 'divduo.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Divide Doubleword Unsigned'}],
 'divw': [{'instr': 'divw',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Divide Word'}],
 'divw.': [{'instr': 'divw.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Divide Word'}],
 'divwo': [{'instr': 'divwo',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Divide Word'}],
 'divwo.': [{'instr': 'divwo.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Divide Word'}],
 'divwu': [{'instr': 'divwu',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Divide Word Unsigned'}],
 'divwu.': [{'instr': 'divwu.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Divide Word Unsigned'}],
 'divwuo': [{'instr': 'divwuo',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Divide Word Unsigned'}],
 'divwuo.': [{'instr': 'divwuo.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Divide Word Unsigned'}],
 'eciwx': [{'instr': 'eciwx',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'External Control In Word Indexed'}],
 'ecowx': [{'instr': 'ecowx',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'External Control Out Word Indexed'}],
 'eieio': [{'instr': 'eieio',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Enforce In-order Execution of I/O'}],
 'eqv': [{'instr': 'eqv',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Equivalent'}],
 'eqv.': [{'instr': 'eqv.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Equivalent'}],
 'extsb': [{'instr': 'extsb',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Extend Sign Byte'}],
 'extsb.': [{'instr': 'extsb.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Extend Sign Byte'}],
 'extsh': [{'instr': 'extsh',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Extend Sign Halfword'}],
 'extsh.': [{'instr': 'extsh.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Extend Sign Halfword'}],
 'extsw': [{'instr': 'extsw',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Extend Sign Word'}],
 'extsw.': [{'instr': 'extsw.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Extend Sign Word'}],
 'fabs': [{'instr': 'fabs',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Absolute Value'}],
 'fabs.': [{'instr': 'fabs.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Absolute Value'}],
 'fadd': [{'instr': 'fadd',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Add'}],
 'fadd.': [{'instr': 'fadd.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Add'}],
 'fadds': [{'instr': 'fadds',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Add Single'}],
 'fadds.': [{'instr': 'fadds.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Add Single'}],
 'fcfid': [{'instr': 'fcfid',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Convert From Integer Doubleword'}],
 'fcfid.': [{'instr': 'fcfid.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Convert From Integer Doubleword'}],
 'fcmpo': [{'instr': 'fcmpo',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Compare Ordered'}],
 'fcmpu': [{'instr': 'fcmpu',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Compare Unordered'}],
 'fctid': [{'instr': 'fctid',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Convert To Integer Doubleword'}],
 'fctid.': [{'instr': 'fctid.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Convert To Integer Doubleword'}],
 'fctidz': [{'instr': 'fctidz',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Convert To Integer Doubleword with round toward Zero'}],
 'fctidz.': [{'instr': 'fctidz.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Convert To Integer Doubleword with round toward Zero'}],
 'fctiw': [{'instr': 'fctiw',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Convert To Integer Word'}],
 'fctiw.': [{'instr': 'fctiw.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Convert To Integer Word'}],
 'fctiwz': [{'instr': 'fctiwz',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Convert To Integer Word with round toward Zero'}],
 'fctiwz.': [{'instr': 'fctiwz.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Convert To Integer Word with round toward Zero'}],
 'fdiv': [{'instr': 'fdiv',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Divide'}],
 'fdiv.': [{'instr': 'fdiv.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Divide'}],
 'fdivs': [{'instr': 'fdivs',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Divide Single'}],
 'fdivs.': [{'instr': 'fdivs.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Divide Single'}],
 'fmadd': [{'instr': 'fmadd',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Multiply-Add'}],
 'fmadd.': [{'instr': 'fmadd.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Multiply-Add'}],
 'fmadds': [{'instr': 'fmadds',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Multiply-Add Single'}],
 'fmadds.': [{'instr': 'fmadds.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Multiply-Add Single'}],
 'fmr': [{'instr': 'fmr',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Floating Move Register'}],
 'fmr.': [{'instr': 'fmr.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Move Register'}],
 'fmsub': [{'instr': 'fmsub',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Multiply-Subtract'}],
 'fmsub.': [{'instr': 'fmsub.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Multiply-Subtract'}],
 'fmsubs': [{'instr': 'fmsubs',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Multiply-Subtract Single'}],
 'fmsubs.': [{'instr': 'fmsubs.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Multiply-Subtract Single'}],
 'fmul': [{'instr': 'fmul',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Multiply'}],
 'fmul.': [{'instr': 'fmul.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Multiply'}],
 'fmuls': [{'instr': 'fmuls',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Multiply Single'}],
 'fmuls.': [{'instr': 'fmuls.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Multiply Single'}],
 'fnabs': [{'instr': 'fnabs',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Negative Absolute Value'}],
 'fnabs.': [{'instr': 'fnabs.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Negative Absolute Value'}],
 'fneg': [{'instr': 'fneg',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Negate'}],
 'fneg.': [{'instr': 'fneg.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Negate'}],
 'fnmadd': [{'instr': 'fnmadd',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Negative Multiply-Add'}],
 'fnmadd.': [{'instr': 'fnmadd.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Negative Multiply-Add'}],
 'fnmadds': [{'instr': 'fnmadds',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Negative Multiply-Add Single'}],
 'fnmadds.': [{'instr': 'fnmadds.',
               'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
               'short': 'Floating Negative Multiply-Add Single'}],
 'fnmsub': [{'instr': 'fnmsub',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Negative Multiply-Subtract'}],
 'fnmsub.': [{'instr': 'fnmsub.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Negative Multiply-Subtract'}],
 'fnmsubs': [{'instr': 'fnmsubs',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Negative Multiply-Subtract Single'}],
 'fnmsubs.': [{'instr': 'fnmsubs.',
               'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
               'short': 'Floating Negative Multiply-Subtract Single'}],
 'fre': [{'instr': 'fre',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Floating Reciprocal Estimate'}],
 'fre.': [{'instr': 'fre.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Reciprocal Estimate'}],
 'fres': [{'instr': 'fres',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Reciprocal Estimate Single'}],
 'fres.': [{'instr': 'fres.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Reciprocal Estimate Single'}],
 'frsp': [{'instr': 'frsp',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Round to Single-Precision'}],
 'frsp.': [{'instr': 'frsp.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Round to Single-Precision'}],
 'frsqrte': [{'instr': 'frsqrte',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Reciprocal Square Root Estimate'}],
 'frsqrte.': [{'instr': 'frsqrte.',
               'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
               'short': 'Floating Reciprocal Square Root Estimate'}],
 'frsqrtes': [{'instr': 'frsqrtes',
               'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
               'short': 'Floating Reciprocal Square Root Estimate Single'}],
 'frsqrtes.': [{'instr': 'frsqrtes.',
                'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
                'short': 'Floating Reciprocal Square Root Estimate Single'}],
 'fsel': [{'instr': 'fsel',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Select'}],
 'fsel.': [{'instr': 'fsel.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Select'}],
 'fsqrt': [{'instr': 'fsqrt',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Square Root'}],
 'fsqrt.': [{'instr': 'fsqrt.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Square Root'}],
 'fsqrts': [{'instr': 'fsqrts',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Square Root Single'}],
 'fsqrts.': [{'instr': 'fsqrts.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Floating Square Root Single'}],
 'fsub': [{'instr': 'fsub',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Floating Subtract'}],
 'fsub.': [{'instr': 'fsub.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Subtract'}],
 'fsubs': [{'instr': 'fsubs',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Floating Subtract Single'}],
 'fsubs.': [{'instr': 'fsubs.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Floating Subtract Single'}],
 'hrfid': [{'instr': 'hrfid',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Hypervisor Return from Interrupt Doubleword'}],
 'icbi': [{'instr': 'icbi',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Instruction Cache Block Invalidate'}],
 'isync': [{'instr': 'isync',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Instruction Synchronize'}],
 'lbz': [{'instr': 'lbz',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Byte and Zero'}],
 'lbzu': [{'instr': 'lbzu',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Byte and Zero with Update'}],
 'lbzux': [{'instr': 'lbzux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Byte and Zero with Update Indexed'}],
 'lbzx': [{'instr': 'lbzx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Byte and Zero Indexed'}],
 'ld': [{'instr': 'ld',
         'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
         'short': 'Load Doubleword'}],
 'ldarx': [{'instr': 'ldarx',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Doubleword And Reserve Indexed'}],
 'ldu': [{'instr': 'ldu',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Doubleword with Update'}],
 'ldux': [{'instr': 'ldux',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Doubleword with Update Indexed'}],
 'ldx': [{'instr': 'ldx',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Doubleword Indexed'}],
 'lfd': [{'instr': 'lfd',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Floating-Point Double'}],
 'lfdu': [{'instr': 'lfdu',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Floating-Point Double with Update'}],
 'lfdux': [{'instr': 'lfdux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Floating-Point Double with Update Indexed'}],
 'lfdx': [{'instr': 'lfdx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Floating-Point Double Indexed'}],
 'lfs': [{'instr': 'lfs',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Floating-Point Single'}],
 'lfsu': [{'instr': 'lfsu',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Floating-Point Single with Update'}],
 'lfsux': [{'instr': 'lfsux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Floating-Point Single with Update Indexed'}],
 'lfsx': [{'instr': 'lfsx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Floating-Point Single Indexed'}],
 'lha': [{'instr': 'lha',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Halfword Algebraic'}],
 'lhau': [{'instr': 'lhau',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Halfword Algebraic with Update'}],
 'lhaux': [{'instr': 'lhaux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Halfword Algebraic with Update Indexed'}],
 'lhax': [{'instr': 'lhax',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Halfword Algebraic Indexed'}],
 'lhbrx': [{'instr': 'lhbrx',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Halfword Byte-Reverse Indexed'}],
 'lhz': [{'instr': 'lhz',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Halfword and Zero'}],
 'lhzu': [{'instr': 'lhzu',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Halfword and Zero with Update'}],
 'lhzux': [{'instr': 'lhzux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Halfword and Zero with Update Indexed'}],
 'lhzx': [{'instr': 'lhzx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Halfword and Zero Indexed'}],
 'lmw': [{'instr': 'lmw',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Multiple Word'}],
 'lswi': [{'instr': 'lswi',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load String Word Immediate'}],
 'lswx': [{'instr': 'lswx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load String Word Indexed'}],
 'lwa': [{'instr': 'lwa',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Word Algebraic'}],
 'lwarx': [{'instr': 'lwarx',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Word And Reserve Indexed'}],
 'lwaux': [{'instr': 'lwaux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Word Algebraic with Update Indexed'}],
 'lwax': [{'instr': 'lwax',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Word Algebraic Indexed'}],
 'lwbrx': [{'instr': 'lwbrx',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Word Byte-Reverse Indexed'}],
 'lwz': [{'instr': 'lwz',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Load Word and Zero'}],
 'lwzu': [{'instr': 'lwzu',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Word and Zero with Update'}],
 'lwzux': [{'instr': 'lwzux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Load Word and Zero with Update Indexed'}],
 'lwzx': [{'instr': 'lwzx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Load Word and Zero Indexed'}],
 'mcrf': [{'instr': 'mcrf',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Move Condition Register Field'}],
 'mcrfs': [{'instr': 'mcrfs',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Move to Condition Register from FPSCR'}],
 'mcrxr': [{'instr': 'mcrxr',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Move to Condition Register from XER'}],
 'mfcr': [{'instr': 'mfcr',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Move From Condition Register'}],
 'mffs': [{'instr': 'mffs',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Move From FPSCR'}],
 'mffs.': [{'instr': 'mffs.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Move From FPSCR'}],
 'mfmsr': [{'instr': 'mfmsr',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Move From Machine State Register'}],
 'mfocrf': [{'instr': 'mfocrf',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Move From One Condition Register Field'}],
 'mfspr': [{'instr': 'mfspr',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Move From Special Purpose Register'}],
 'mfsr': [{'instr': 'mfsr',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Move From Segment Register'}],
 'mfsrin': [{'instr': 'mfsrin',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Move From Segment Register Indirect'}],
 'mftb': [{'instr': 'mftb',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Move From Time Base'}],
 'mtcrf': [{'instr': 'mtcrf',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Move To Condition Register Fields'}],
 'mtfsb0': [{'instr': 'mtfsb0',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Move To FPSCR Bit 0'}],
 'mtfsb0.': [{'instr': 'mtfsb0.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Move To FPSCR Bit 0'}],
 'mtfsb1': [{'instr': 'mtfsb1',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Move To FPSCR Bit 1'}],
 'mtfsb1.': [{'instr': 'mtfsb1.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Move To FPSCR Bit 1'}],
 'mtfsf': [{'instr': 'mtfsf',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Move To FPSCR Fields'}],
 'mtfsf.': [{'instr': 'mtfsf.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Move To FPSCR Fields'}],
 'mtfsfi': [{'instr': 'mtfsfi',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Move To FPSCR Field Immediate'}],
 'mtfsfi.': [{'instr': 'mtfsfi.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Move To FPSCR Field Immediate'}],
 'mtmsr': [{'instr': 'mtmsr',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Move To Machine State Register'}],
 'mtmsrd': [{'instr': 'mtmsrd',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Move To Machine State Register Doubleword'}],
 'mtocrf': [{'instr': 'mtocrf',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Move To One Condition Register Field'}],
 'mtspr': [{'instr': 'mtspr',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Move To Special Purpose Register'}],
 'mtsr': [{'instr': 'mtsr',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Move To Segment Register'}],
 'mtsrin': [{'instr': 'mtsrin',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Move To Segment Register Indirect'}],
 'mulhd': [{'instr': 'mulhd',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Multiply High Doubleword'}],
 'mulhd.': [{'instr': 'mulhd.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Multiply High Doubleword'}],
 'mulhdu': [{'instr': 'mulhdu',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Multiply High Doubleword Unsigned'}],
 'mulhdu.': [{'instr': 'mulhdu.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Multiply High Doubleword Unsigned'}],
 'mulhw': [{'instr': 'mulhw',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Multiply High Word'}],
 'mulhw.': [{'instr': 'mulhw.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Multiply High Word'}],
 'mulhwu': [{'instr': 'mulhwu',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Multiply High Word Unsigned'}],
 'mulhwu.': [{'instr': 'mulhwu.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Multiply High Word Unsigned'}],
 'mulld': [{'instr': 'mulld',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Multiply Low Doubleword'}],
 'mulld.': [{'instr': 'mulld.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Multiply Low Doubleword'}],
 'mulldo': [{'instr': 'mulldo',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Multiply Low Doubleword'}],
 'mulldo.': [{'instr': 'mulldo.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Multiply Low Doubleword'}],
 'mulli': [{'instr': 'mulli',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Multiply Low Immediate'}],
 'mullw': [{'instr': 'mullw',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Multiply Low Word'}],
 'mullw.': [{'instr': 'mullw.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Multiply Low Word'}],
 'mullwo': [{'instr': 'mullwo',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Multiply Low Word'}],
 'mullwo.': [{'instr': 'mullwo.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Multiply Low Word'}],
 'nand': [{'instr': 'nand',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'NAND'}],
 'nand.': [{'instr': 'nand.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'NAND'}],
 'neg': [{'instr': 'neg',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Negate'}],
 'neg.': [{'instr': 'neg.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Negate'}],
 'nego': [{'instr': 'nego',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Negate'}],
 'nego.': [{'instr': 'nego.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Negate'}],
 'nor': [{'instr': 'nor',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'NOR'}],
 'nor.': [{'instr': 'nor.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'NOR'}],
 'or': [{'instr': 'or',
         'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
         'short': 'OR'}],
 'or.': [{'instr': 'or.',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'OR'}],
 'orc': [{'instr': 'orc',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'OR with Complement'}],
 'orc.': [{'instr': 'orc.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'OR with Complement'}],
 'ori': [{'instr': 'ori',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'OR Immediate'}],
 'oris': [{'instr': 'oris',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'OR Immediate Shifted'}],
 'popcntb': [{'instr': 'popcntb',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Population Count Bytes'}],
 'rfid': [{'instr': 'rfid',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Return from Interrupt Doubleword'}],
 'rldcl': [{'instr': 'rldcl',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Rotate Left Doubleword then Clear Left'}],
 'rldcl.': [{'instr': 'rldcl.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Rotate Left Doubleword then Clear Left'}],
 'rldcr': [{'instr': 'rldcr',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Rotate Left Doubleword then Clear Right'}],
 'rldcr.': [{'instr': 'rldcr.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Rotate Left Doubleword then Clear Right'}],
 'rldic': [{'instr': 'rldic',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Rotate Left Doubleword Immediate then Clear'}],
 'rldic.': [{'instr': 'rldic.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Rotate Left Doubleword Immediate then Clear'}],
 'rldicl': [{'instr': 'rldicl',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Rotate Left Doubleword Immediate then Clear Left'}],
 'rldicl.': [{'instr': 'rldicl.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Rotate Left Doubleword Immediate then Clear Left'}],
 'rldicr': [{'instr': 'rldicr',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Rotate Left Doubleword Immediate then Clear Right'}],
 'rldicr.': [{'instr': 'rldicr.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Rotate Left Doubleword Immediate then Clear Right'}],
 'rldimi': [{'instr': 'rldimi',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Rotate Left Doubleword Immediate then Mask Insert'}],
 'rldimi.': [{'instr': 'rldimi.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Rotate Left Doubleword Immediate then Mask Insert'}],
 'rlwimi': [{'instr': 'rlwimi',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Rotate Left Word Immediate then Mask Insert'}],
 'rlwimi.': [{'instr': 'rlwimi.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Rotate Left Word Immediate then Mask Insert'}],
 'rlwinm': [{'instr': 'rlwinm',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Rotate Left Word Immediate then AND with Mask'}],
 'rlwinm.': [{'instr': 'rlwinm.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Rotate Left Word Immediate then AND with Mask'}],
 'rlwnm': [{'instr': 'rlwnm',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Rotate Left Word then AND with Mask'}],
 'rlwnm.': [{'instr': 'rlwnm.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Rotate Left Word then AND with Mask'}],
 'sc': [{'instr': 'sc',
         'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
         'short': 'System Call'}],
 'slbia': [{'instr': 'slbia',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'SLB Invalidate All'}],
 'slbie': [{'instr': 'slbie',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'SLB Invalidate Entry'}],
 'slbmfee': [{'instr': 'slbmfee',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'SLB Move From Entry ESID'}],
 'slbmfev': [{'instr': 'slbmfev',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'SLB Move From Entry VSID'}],
 'slbmte': [{'instr': 'slbmte',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'SLB Move To Entry'}],
 'sld': [{'instr': 'sld',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Shift Left Doubleword'}],
 'sld.': [{'instr': 'sld.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Shift Left Doubleword'}],
 'slw': [{'instr': 'slw',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Shift Left Word'}],
 'slw.': [{'instr': 'slw.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Shift Left Word'}],
 'srad': [{'instr': 'srad',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Shift Right Algebraic Doubleword'}],
 'srad.': [{'instr': 'srad.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Shift Right Algebraic Doubleword'}],
 'sradi': [{'instr': 'sradi',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Shift Right Algebraic Doubleword Immediate'}],
 'sradi.': [{'instr': 'sradi.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Shift Right Algebraic Doubleword Immediate'}],
 'sraw': [{'instr': 'sraw',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Shift Right Algebraic Word'}],
 'sraw.': [{'instr': 'sraw.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Shift Right Algebraic Word'}],
 'srawi': [{'instr': 'srawi',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Shift Right Algebraic Word Immediate'}],
 'srawi.': [{'instr': 'srawi.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Shift Right Algebraic Word Immediate'}],
 'srd': [{'instr': 'srd',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Shift Right Doubleword'}],
 'srd.': [{'instr': 'srd.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Shift Right Doubleword'}],
 'srw': [{'instr': 'srw',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Shift Right Word'}],
 'srw.': [{'instr': 'srw.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Shift Right Word'}],
 'stb': [{'instr': 'stb',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Store Byte'}],
 'stbu': [{'instr': 'stbu',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Byte with Update'}],
 'stbux': [{'instr': 'stbux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store Byte with Update Indexed'}],
 'stbx': [{'instr': 'stbx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Byte Indexed'}],
 'std': [{'instr': 'std',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Store Doubleword'}],
 'stdcx.': [{'instr': 'stdcx.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Store Doubleword Conditional Indexed'}],
 'stdu': [{'instr': 'stdu',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Doubleword with Update'}],
 'stdux': [{'instr': 'stdux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store Doubleword with Update Indexed'}],
 'stdx': [{'instr': 'stdx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Doubleword Indexed'}],
 'stfd': [{'instr': 'stfd',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Floating-Point Double'}],
 'stfdu': [{'instr': 'stfdu',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store Floating-Point Double with Update'}],
 'stfdux': [{'instr': 'stfdux',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Store Floating-Point Double with Update Indexed'}],
 'stfdx': [{'instr': 'stfdx',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store Floating-Point Double Indexed'}],
 'stfiwx': [{'instr': 'stfiwx',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Store Floating-Point as Integer Word Indexed'}],
 'stfs': [{'instr': 'stfs',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Floating-Point Single'}],
 'stfsu': [{'instr': 'stfsu',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store Floating-Point Single with Update'}],
 'stfsux': [{'instr': 'stfsux',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Store Floating-Point Single with Update Indexed'}],
 'stfsx': [{'instr': 'stfsx',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store Floating-Point Single Indexed'}],
 'sth': [{'instr': 'sth',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Store Halfword'}],
 'sthbrx': [{'instr': 'sthbrx',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Store Halfword Byte-Reverse Indexed'}],
 'sthu': [{'instr': 'sthu',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Halfword with Update'}],
 'sthux': [{'instr': 'sthux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store Halfword with Update Indexed'}],
 'sthx': [{'instr': 'sthx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Halfword Indexed'}],
 'stmw': [{'instr': 'stmw',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Multiple Word'}],
 'stswi': [{'instr': 'stswi',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store String Word Immediate'}],
 'stswx': [{'instr': 'stswx',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store String Word Indexed'}],
 'stw': [{'instr': 'stw',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Store Word'}],
 'stwbrx': [{'instr': 'stwbrx',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Store Word Byte-Reverse Indexed'}],
 'stwcx.': [{'instr': 'stwcx.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Store Word Conditional Indexed'}],
 'stwu': [{'instr': 'stwu',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Word with Update'}],
 'stwux': [{'instr': 'stwux',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Store Word with Update Indexed'}],
 'stwx': [{'instr': 'stwx',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Store Word Indexed'}],
 'subf': [{'instr': 'subf',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Subtract From'}],
 'subf.': [{'instr': 'subf.',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Subtract From'}],
 'subfc': [{'instr': 'subfc',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Subtract From Carrying'}],
 'subfc.': [{'instr': 'subfc.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Subtract From Carrying'}],
 'subfco': [{'instr': 'subfco',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Subtract From Carrying'}],
 'subfco.': [{'instr': 'subfco.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Subtract From Carrying'}],
 'subfe': [{'instr': 'subfe',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Subtract From Extended'}],
 'subfe.': [{'instr': 'subfe.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Subtract From Extended'}],
 'subfeo': [{'instr': 'subfeo',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Subtract From Extended'}],
 'subfeo.': [{'instr': 'subfeo.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Subtract From Extended'}],
 'subfic': [{'instr': 'subfic',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Subtract From Immediate Carrying'}],
 'subfme': [{'instr': 'subfme',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Subtract From Minus One Extended'}],
 'subfme.': [{'instr': 'subfme.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Subtract From Minus One Extended'}],
 'subfmeo': [{'instr': 'subfmeo',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Subtract From Minus One Extended'}],
 'subfmeo.': [{'instr': 'subfmeo.',
               'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
               'short': 'Subtract From Minus One Extended'}],
 'subfo': [{'instr': 'subfo',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'Subtract From'}],
 'subfo.': [{'instr': 'subfo.',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Subtract From'}],
 'subfze': [{'instr': 'subfze',
             'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
             'short': 'Subtract From Zero Extended'}],
 'subfze.': [{'instr': 'subfze.',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Subtract From Zero Extended'}],
 'subfzeo': [{'instr': 'subfzeo',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'Subtract From Zero Extended'}],
 'subfzeo.': [{'instr': 'subfzeo.',
               'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
               'short': 'Subtract From Zero Extended'}],
 'sync': [{'instr': 'sync',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'Synchronize'}],
 'td': [{'instr': 'td',
         'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
         'short': 'Trap Doubleword'}],
 'tdi': [{'instr': 'tdi',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Trap Doubleword Immediate'}],
 'tlbia': [{'instr': 'tlbia',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'TLB Invalidate All'}],
 'tlbie': [{'instr': 'tlbie',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'TLB Invalidate Entry'}],
 'tlbsync': [{'instr': 'tlbsync',
              'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
              'short': 'TLB Synchronize'}],
 'tw': [{'instr': 'tw',
         'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
         'short': 'Trap Word'}],
 'twi': [{'instr': 'twi',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'Trap Word Immediate'}],
 'xor': [{'instr': 'xor',
          'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
          'short': 'XOR'}],
 'xor.': [{'instr': 'xor.',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'XOR'}],
 'xori': [{'instr': 'xori',
           'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
           'short': 'XOR Immediate'}],
 'xoris': [{'instr': 'xoris',
            'link': 'http://math-atlas.sourceforge.net/devel/assembly/ppc_isa.pdf',
            'short': 'XOR Immediate Shifted'}]}

def find_proper_name(instruction):
    out = str(instruction).strip().lower()
    return out

def get_doc_url(i):
    """ Takes in the instruction tokens and returns [(short form, doc url)] """
    names = map(find_proper_name, i) # handles instruction prefixes
    output = []
    for name in names:
        if name in instrs.keys():
            inst_data = instrs[name][0]
            output.append((inst_data['short'], inst_data['link']))
    if len(output) == 0:
        return [("No documentation for that instruction!", "https://github.com/ehennenfent/binja_explain_instruction/blob/master/CONTRIBUTING.md")]
    return output
