From c0da0f3a550887c84982722c3b9596f03dc97e61 Mon Sep 17 00:00:00 2001 From: Bernhard Schommer Date: Mon, 25 Sep 2017 17:37:14 +0200 Subject: Added dump-mnemonics option. This option allows it to dump a list of all used mnemonics into a file. Bug 22239 --- powerpc/AsmToJSON.ml | 184 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) (limited to 'powerpc/AsmToJSON.ml') diff --git a/powerpc/AsmToJSON.ml b/powerpc/AsmToJSON.ml index 2017d3e3..fb36b9d7 100644 --- a/powerpc/AsmToJSON.ml +++ b/powerpc/AsmToJSON.ml @@ -112,6 +112,184 @@ let pp_arg pp = function | Atom a -> pp_atom_constant pp a | String s -> pp_jsingle_object pp "String" pp_jstring s + let mnemonic_names = + [ "Padd" + ; "Paddc" + ; "Padde" + ; "Paddi" + ; "Paddi" + ; "Paddic" + ; "Paddis" + ; "Paddis" + ; "Paddze" + ; "Pand_" + ; "Pandc" + ; "Pandi_" + ; "Pandi_" + ; "Pandis_" + ; "Pandis_" + ; "Pb" + ; "Pbctr" + ; "Pbctrl" + ; "Pbdnz" + ; "Pbf" + ; "Pbl" + ; "Pbs" + ; "Pblr" + ; "Pbt" + ; "Pbtbl" + ; "Pcmpb" + ; "Pcmpld" + ; "Pcmpldi" + ; "Pcmplw" + ; "Pcmplwi" + ; "Pcmpd" + ; "Pcmpdi" + ; "Pcmpw" + ; "Pcmpwi" + ; "Pcntlzd" + ; "Pcntlzw" + ; "Pcreqv" + ; "Pcror" + ; "Pcrxor" + ; "Pdcbf" + ; "Pdcbi" + ; "Pdcbt" + ; "Pdcbtst" + ; "Pdcbtls" + ; "Pdcbz" + ; "Pdivw" + ; "Pdivd" + ; "Pdivwu" + ; "Pdivdu" + ; "Peieio" + ; "Peqv" + ; "Pextsb" + ; "Pextsh" + ; "Pextsw" + ; "Pfabs" + ; "Pfadd" + ; "Pfadds" + ; "Pfcmpu" + ; "Pfcfid" + ; "Pfctidz" + ; "Pfctiw" + ; "Pfctiwz" + ; "Pfdiv" + ; "Pfdivs" + ; "Pfmr" + ; "Pfmul" + ; "Pfmuls" + ; "Pfneg" + ; "Pfrsp" + ; "Pfsub" + ; "Pfsubs" + ; "Pfmadd" + ; "Pfmsub" + ; "Pfnmadd" + ; "Pfnmsub" + ; "Pfsqrt" + ; "Pfrsqrte" + ; "Pfres" + ; "Pfsel" + ; "Pisel" + ; "Picbi" + ; "Picbtls" + ; "Pisync" + ; "Plwsync" + ; "Plbz" + ; "Plbzx" + ; "Pld" + ; "Pldx" + ; "Plfd" + ; "Plfdx" + ; "Plfs" + ; "Plfsx" + ; "Plha" + ; "Plhax" + ; "Plhbrx" + ; "Plhz" + ; "Plhzx" + ; "Pldi" + ; "Plfi" + ; "Plfis" + ; "Plwz" + ; "Plwzu" + ; "Plwzx" + ; "Plwarx" + ; "Plwbrx" + ; "Pmbar" + ; "Pmfcr" + ; "Pmflr" + ; "Pmr" + ; "Pmtctr" + ; "Pmtlr" + ; "Pmfspr" + ; "Pmtspr" + ; "Pmulhd" + ; "Pmulhdu" + ; "Pmulld" + ; "Pmulli" + ; "Pmullw" + ; "Pmulhw" + ; "Pmulhwu" + ; "Pnand" + ; "Pnor" + ; "Por" + ; "Porc" + ; "Pori" + ; "Pori" + ; "Poris" + ; "Poris" + ; "Prldicl" + ; "Prldinm" + ;"Prldimi" + ; "Prlwinm" + ;"Prlwimi" + ; "Psld" + ; "Pslw" + ; "Psrad" + ; "Psradi" + ; "Psraw" + ; "Psrawi" + ; "Psrd" + ; "Psrw" + ; "Pstb" + ; "Pstbx" + ; "Pstd" + ; "Pstdx" + ; "Pstdu" + ; "Pstfd" + ; "Pstfdu" + ; "Pstfdx" + ; "Pstfs" + ; "Pstfsx" + ; "Psth" + ; "Psthx" + ; "Psthbrx" + ; "Pstw" + ; "Pstwu" + ; "Pstwx" + ; "Pstwux" + ; "Pstwbrx" + ; "Pstwcx_" + ; "Psubfc" + ; "Psubfe" + ; "Psubfze" + ; "Psubfic" + ; "Psubfic" + ; "Psync" + ; "Ptrap" + ; "Pxor" + ; "Pxori" + ; "Pxori" + ; "Pxoris" + ; "Pxoris" + ; "Plabel" + ; "Pinlineasm" + ; "Pannot" + ] + let pp_instructions pp ic = let ic = List.filter (fun s -> match s with | Pbuiltin (ef,_,_) -> @@ -124,6 +302,7 @@ let pp_instructions pp ic = | Pcfi_rel_offset _ -> false | _ -> true) ic in let instruction pp n args = + assert (List.mem n mnemonic_names); pp_jobject_start pp; pp_jmember ~first:true pp "Instruction Name" pp_jstring n; pp_jmember pp "Args" (pp_jarray pp_arg) args; @@ -467,3 +646,8 @@ let pp_program pp prog = pp_jmember ~first:true pp "Global Variables" (pp_jarray pp_vardef) prog_vars; pp_jmember pp "Functions" (pp_jarray pp_fundef) prog_funs; pp_jobject_end pp + +let pp_mnemonics pp = + let mnemonic_names = List.sort (String.compare) mnemonic_names in + let new_line pp () = pp_print_string pp "\n" in + pp_print_list ~pp_sep:new_line pp_print_string pp mnemonic_names -- cgit