summaryrefslogtreecommitdiff
path: root/old/power/gen/sail_trans_out.gen
diff options
context:
space:
mode:
Diffstat (limited to 'old/power/gen/sail_trans_out.gen')
-rw-r--r--old/power/gen/sail_trans_out.gen1112
1 files changed, 1112 insertions, 0 deletions
diff --git a/old/power/gen/sail_trans_out.gen b/old/power/gen/sail_trans_out.gen
new file mode 100644
index 00000000..09d3cdbf
--- /dev/null
+++ b/old/power/gen/sail_trans_out.gen
@@ -0,0 +1,1112 @@
+ | ("B", [li; aa; lk], _) ->
+ `Pb(
+ (trans_out_aa aa),
+ (trans_out_lk lk),
+ (trans_out_int (trans_out_li_setaa_setlk_k3 li aa lk)))
+ | ("Bc", [bo; bi; bd; aa; lk], _) ->
+ `Pbc(
+ (trans_out_aa aa),
+ (trans_out_lk lk),
+ (trans_out_int bo),
+ (trans_out_int bi),
+ (trans_out_int (trans_out_bd_setaa_setlk_k_k_k5 bo bi bd aa lk)))
+ | ("Bclr", [bo; bi; bh; lk], _) ->
+ `Pbclr(
+ (trans_out_lk lk),
+ (trans_out_int bo),
+ (trans_out_int bi),
+ (trans_out_int bh))
+ | ("Bcctr", [bo; bi; bh; lk], _) ->
+ `Pbcctr(
+ (trans_out_lk lk),
+ (trans_out_int bo),
+ (trans_out_int bi),
+ (trans_out_int bh))
+ | ("Crand", [bt; ba; bb], _) ->
+ `Pcrand(
+ (trans_out_int bt),
+ (trans_out_int ba),
+ (trans_out_int bb))
+ | ("Crnand", [bt; ba; bb], _) ->
+ `Pcrnand(
+ (trans_out_int bt),
+ (trans_out_int ba),
+ (trans_out_int bb))
+ | ("Cror", [bt; ba; bb], _) ->
+ `Pcror(
+ (trans_out_int bt),
+ (trans_out_int ba),
+ (trans_out_int bb))
+ | ("Crxor", [bt; ba; bb], _) ->
+ `Pcrxor(
+ (trans_out_int bt),
+ (trans_out_int ba),
+ (trans_out_int bb))
+ | ("Crnor", [bt; ba; bb], _) ->
+ `Pcrnor(
+ (trans_out_int bt),
+ (trans_out_int ba),
+ (trans_out_int bb))
+ | ("Creqv", [bt; ba; bb], _) ->
+ `Pcreqv(
+ (trans_out_int bt),
+ (trans_out_int ba),
+ (trans_out_int bb))
+ | ("Crandc", [bt; ba; bb], _) ->
+ `Pcrandc(
+ (trans_out_int bt),
+ (trans_out_int ba),
+ (trans_out_int bb))
+ | ("Crorc", [bt; ba; bb], _) ->
+ `Pcrorc(
+ (trans_out_int bt),
+ (trans_out_int ba),
+ (trans_out_int bb))
+ | ("Mcrf", [bf; bfa], _) ->
+ `Pmcrf(
+ (trans_out_int bf),
+ (trans_out_int bfa))
+ | ("Sc", [lev], _) ->
+ `Psc(
+ (trans_out_int lev))
+ | ("Scv", [lev], _) ->
+ `Pscv(
+ (trans_out_int lev))
+ | ("Lbz", [rt; ra; d], _) ->
+ `Plbz(
+ (trans_out_reg rt),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Lbzx", [rt; ra; rb], _) ->
+ `Plbzx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lbzu", [rt; ra; d], _) ->
+ `Plbzu(
+ (trans_out_reg rt),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Lbzux", [rt; ra; rb], _) ->
+ `Plbzux(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lhz", [rt; ra; d], _) ->
+ `Plhz(
+ (trans_out_reg rt),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Lhzx", [rt; ra; rb], _) ->
+ `Plhzx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lhzu", [rt; ra; d], _) ->
+ `Plhzu(
+ (trans_out_reg rt),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Lhzux", [rt; ra; rb], _) ->
+ `Plhzux(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lha", [rt; ra; d], _) ->
+ `Plha(
+ (trans_out_reg rt),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Lhax", [rt; ra; rb], _) ->
+ `Plhax(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lhau", [rt; ra; d], _) ->
+ `Plhau(
+ (trans_out_reg rt),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Lhaux", [rt; ra; rb], _) ->
+ `Plhaux(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lwz", [rt; ra; d], _) ->
+ `Plwz(
+ (trans_out_reg rt),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Lwzx", [rt; ra; rb], _) ->
+ `Plwzx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lwzu", [rt; ra; d], _) ->
+ `Plwzu(
+ (trans_out_reg rt),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Lwzux", [rt; ra; rb], _) ->
+ `Plwzux(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lwa", [rt; ra; ds], _) ->
+ `Plwa(
+ (trans_out_reg rt),
+ (trans_out_int ds),
+ (trans_out_reg ra))
+ | ("Lwax", [rt; ra; rb], _) ->
+ `Plwax(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lwaux", [rt; ra; rb], _) ->
+ `Plwaux(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Ld", [rt; ra; ds], _) ->
+ `Pld(
+ (trans_out_reg rt),
+ (trans_out_int ds),
+ (trans_out_reg ra))
+ | ("Ldx", [rt; ra; rb], _) ->
+ `Pldx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Ldu", [rt; ra; ds], _) ->
+ `Pldu(
+ (trans_out_reg rt),
+ (trans_out_int ds),
+ (trans_out_reg ra))
+ | ("Ldux", [rt; ra; rb], _) ->
+ `Pldux(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Stb", [rs; ra; d], _) ->
+ `Pstb(
+ (trans_out_reg rs),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Stbx", [rs; ra; rb], _) ->
+ `Pstbx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Stbu", [rs; ra; d], _) ->
+ `Pstbu(
+ (trans_out_reg rs),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Stbux", [rs; ra; rb], _) ->
+ `Pstbux(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Sth", [rs; ra; d], _) ->
+ `Psth(
+ (trans_out_reg rs),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Sthx", [rs; ra; rb], _) ->
+ `Psthx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Sthu", [rs; ra; d], _) ->
+ `Psthu(
+ (trans_out_reg rs),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Sthux", [rs; ra; rb], _) ->
+ `Psthux(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Stw", [rs; ra; d], _) ->
+ `Pstw(
+ (trans_out_reg rs),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Stwx", [rs; ra; rb], _) ->
+ `Pstwx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Stwu", [rs; ra; d], _) ->
+ `Pstwu(
+ (trans_out_reg rs),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Stwux", [rs; ra; rb], _) ->
+ `Pstwux(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Std", [rs; ra; ds], _) ->
+ `Pstd(
+ (trans_out_reg rs),
+ (trans_out_int ds),
+ (trans_out_reg ra))
+ | ("Stdx", [rs; ra; rb], _) ->
+ `Pstdx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Stdu", [rs; ra; ds], _) ->
+ `Pstdu(
+ (trans_out_reg rs),
+ (trans_out_int ds),
+ (trans_out_reg ra))
+ | ("Stdux", [rs; ra; rb], _) ->
+ `Pstdux(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lq", [rtp; ra; dq; pt], _) ->
+ `Plq(
+ (trans_out_int rtp),
+ (trans_out_int dq),
+ (trans_out_reg ra),
+ (trans_out_int pt))
+ | ("Stq", [rsp; ra; ds], _) ->
+ `Pstq(
+ (trans_out_int rsp),
+ (trans_out_int ds),
+ (trans_out_reg ra))
+ | ("Lhbrx", [rt; ra; rb], _) ->
+ `Plhbrx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Sthbrx", [rs; ra; rb], _) ->
+ `Psthbrx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lwbrx", [rt; ra; rb], _) ->
+ `Plwbrx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Stwbrx", [rs; ra; rb], _) ->
+ `Pstwbrx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Ldbrx", [rt; ra; rb], _) ->
+ `Pldbrx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Stdbrx", [rs; ra; rb], _) ->
+ `Pstdbrx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Lmw", [rt; ra; d], _) ->
+ `Plmw(
+ (trans_out_reg rt),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Stmw", [rs; ra; d], _) ->
+ `Pstmw(
+ (trans_out_reg rs),
+ (trans_out_int d),
+ (trans_out_reg ra))
+ | ("Lswi", [rt; ra; nb], _) ->
+ `Plswi(
+ (trans_out_int rt),
+ (trans_out_reg ra),
+ (trans_out_int nb))
+ | ("Lswx", [rt; ra; rb], _) ->
+ `Plswx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Stswi", [rs; ra; nb], _) ->
+ `Pstswi(
+ (trans_out_int rs),
+ (trans_out_reg ra),
+ (trans_out_int nb))
+ | ("Stswx", [rs; ra; rb], _) ->
+ `Pstswx(
+ (trans_out_int rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Addi", [rt; ra; si], _) ->
+ `Paddi(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_int si))
+ | ("Addis", [rt; ra; si], _) ->
+ `Paddis(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_int si))
+ | ("Add", [rt; ra; rb; oe; rc], _) ->
+ `Padd(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Subf", [rt; ra; rb; oe; rc], _) ->
+ `Psubf(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Addic", [rt; ra; si], _) ->
+ `Paddic(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_int si))
+ | ("AddicDot", [rt; ra; si], _) ->
+ `Paddicdot(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_int si))
+ | ("Subfic", [rt; ra; si], _) ->
+ `Psubfic(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_int si))
+ | ("Addc", [rt; ra; rb; oe; rc], _) ->
+ `Paddc(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Subfc", [rt; ra; rb; oe; rc], _) ->
+ `Psubfc(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Adde", [rt; ra; rb; oe; rc], _) ->
+ `Padde(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Subfe", [rt; ra; rb; oe; rc], _) ->
+ `Psubfe(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Addme", [rt; ra; oe; rc], _) ->
+ `Paddme(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra))
+ | ("Subfme", [rt; ra; oe; rc], _) ->
+ `Psubfme(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra))
+ | ("Addze", [rt; ra; oe; rc], _) ->
+ `Paddze(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra))
+ | ("Subfze", [rt; ra; oe; rc], _) ->
+ `Psubfze(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra))
+ | ("Neg", [rt; ra; oe; rc], _) ->
+ `Pneg(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra))
+ | ("Mulli", [rt; ra; si], _) ->
+ `Pmulli(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_int si))
+ | ("Mullw", [rt; ra; rb; oe; rc], _) ->
+ `Pmullw(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mulhw", [rt; ra; rb; rc], _) ->
+ `Pmulhw(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mulhwu", [rt; ra; rb; rc], _) ->
+ `Pmulhwu(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Divw", [rt; ra; rb; oe; rc], _) ->
+ `Pdivw(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Divwu", [rt; ra; rb; oe; rc], _) ->
+ `Pdivwu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Divwe", [rt; ra; rb; oe; rc], _) ->
+ `Pdivwe(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Divweu", [rt; ra; rb; oe; rc], _) ->
+ `Pdivweu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mulld", [rt; ra; rb; oe; rc], _) ->
+ `Pmulld(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mulhd", [rt; ra; rb; rc], _) ->
+ `Pmulhd(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mulhdu", [rt; ra; rb; rc], _) ->
+ `Pmulhdu(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Divd", [rt; ra; rb; oe; rc], _) ->
+ `Pdivd(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Divdu", [rt; ra; rb; oe; rc], _) ->
+ `Pdivdu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Divde", [rt; ra; rb; oe; rc], _) ->
+ `Pdivde(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Divdeu", [rt; ra; rb; oe; rc], _) ->
+ `Pdivdeu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Cmpi", [bf; l; ra; si], _) ->
+ `Pcmpi(
+ (trans_out_int bf),
+ (trans_out_int l),
+ (trans_out_reg ra),
+ (trans_out_int si))
+ | ("Cmp", [bf; l; ra; rb], _) ->
+ `Pcmp(
+ (trans_out_int bf),
+ (trans_out_int l),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Cmpli", [bf; l; ra; ui], _) ->
+ `Pcmpli(
+ (trans_out_int bf),
+ (trans_out_int l),
+ (trans_out_reg ra),
+ (trans_out_int ui))
+ | ("Cmpl", [bf; l; ra; rb], _) ->
+ `Pcmpl(
+ (trans_out_int bf),
+ (trans_out_int l),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Isel", [rt; ra; rb; bc], _) ->
+ `Pisel(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb),
+ (trans_out_int bc))
+ | ("Andi", [rs; ra; ui], _) ->
+ `Pandi(
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int ui))
+ | ("Andis", [rs; ra; ui], _) ->
+ `Pandis(
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int ui))
+ | ("Ori", [rs; ra; ui], _) ->
+ `Pori(
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int ui))
+ | ("Oris", [rs; ra; ui], _) ->
+ `Poris(
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int ui))
+ | ("Xori", [rs; ra; ui], _) ->
+ `Pxori(
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int ui))
+ | ("Xoris", [rs; ra; ui], _) ->
+ `Pxoris(
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int ui))
+ | ("And", [rs; ra; rb; rc], _) ->
+ `Pand(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Xor", [rs; ra; rb; rc], _) ->
+ `Pxor(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Nand", [rs; ra; rb; rc], _) ->
+ `Pnand(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Or", [rs; ra; rb; rc], _) ->
+ `Por(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Nor", [rs; ra; rb; rc], _) ->
+ `Pnor(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Eqv", [rs; ra; rb; rc], _) ->
+ `Peqv(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Andc", [rs; ra; rb; rc], _) ->
+ `Pandc(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Orc", [rs; ra; rb; rc], _) ->
+ `Porc(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Extsb", [rs; ra; rc], _) ->
+ `Pextsb(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Extsh", [rs; ra; rc], _) ->
+ `Pextsh(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Cntlzw", [rs; ra; rc], _) ->
+ `Pcntlzw(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Cmpb", [rs; ra; rb], _) ->
+ `Pcmpb(
+ (trans_out_reg ra),
+ (trans_out_int rs),
+ (trans_out_reg rb))
+ | ("Popcntb", [rs; ra], _) ->
+ `Ppopcntb(
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Popcntw", [rs; ra], _) ->
+ `Ppopcntw(
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Prtyd", [rs; ra], _) ->
+ `Pprtyd(
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Prtyw", [rs; ra], _) ->
+ `Pprtyw(
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Extsw", [rs; ra; rc], _) ->
+ `Pextsw(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Cntlzd", [rs; ra; rc], _) ->
+ `Pcntlzd(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Popcntd", [rs; ra], _) ->
+ `Ppopcntd(
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Bpermd", [rs; ra; rb], _) ->
+ `Pbpermd(
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Rlwinm", [rs; ra; sh; mb; me; rc], _) ->
+ `Prlwinm(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int sh),
+ (trans_out_int mb),
+ (trans_out_int me))
+ | ("Rlwnm", [rs; ra; rb; mb; me; rc], _) ->
+ `Prlwnm(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb),
+ (trans_out_int mb),
+ (trans_out_int me))
+ | ("Rlwimi", [rs; ra; sh; mb; me; rc], _) ->
+ `Prlwimi(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int sh),
+ (trans_out_int mb),
+ (trans_out_int me))
+ | ("Rldicl", [rs; ra; sh; mb; rc], _) ->
+ `Prldicl(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int sh),
+ (trans_out_int mb))
+ | ("Rldicr", [rs; ra; sh; me; rc], _) ->
+ `Prldicr(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int sh),
+ (trans_out_int me))
+ | ("Rldic", [rs; ra; sh; mb; rc], _) ->
+ `Prldic(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int sh),
+ (trans_out_int mb))
+ | ("Rldcl", [rs; ra; rb; mb; rc], _) ->
+ `Prldcl(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb),
+ (trans_out_int mb))
+ | ("Rldcr", [rs; ra; rb; me; rc], _) ->
+ `Prldcr(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb),
+ (trans_out_int me))
+ | ("Rldimi", [rs; ra; sh; mb; rc], _) ->
+ `Prldimi(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int sh),
+ (trans_out_int mb))
+ | ("Slw", [rs; ra; rb; rc], _) ->
+ `Pslw(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Srw", [rs; ra; rb; rc], _) ->
+ `Psrw(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Srawi", [rs; ra; sh; rc], _) ->
+ `Psrawi(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int sh))
+ | ("Sraw", [rs; ra; rb; rc], _) ->
+ `Psraw(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Sld", [rs; ra; rb; rc], _) ->
+ `Psld(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Srd", [rs; ra; rb; rc], _) ->
+ `Psrd(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Sradi", [rs; ra; sh; rc], _) ->
+ `Psradi(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_int sh))
+ | ("Srad", [rs; ra; rb; rc], _) ->
+ `Psrad(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Cdtbcd", [rs; ra], _) ->
+ `Pcdtbcd(
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Cbcdtd", [rs; ra], _) ->
+ `Pcbcdtd(
+ (trans_out_reg ra),
+ (trans_out_reg rs))
+ | ("Addg6s", [rt; ra; rb], _) ->
+ `Paddg6s(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mtspr", [rs; spr], _) ->
+ `Pmtspr(
+ (trans_out_int spr),
+ (trans_out_reg rs))
+ | ("Mfspr", [rt; spr], _) ->
+ `Pmfspr(
+ (trans_out_reg rt),
+ (trans_out_int spr))
+ | ("Mtcrf", [rs; fxm], _) ->
+ `Pmtcrf(
+ (trans_out_int fxm),
+ (trans_out_reg rs))
+ | ("Mfcr", [rt], _) ->
+ `Pmfcr(
+ (trans_out_reg rt))
+ | ("Mtocrf", [rs; fxm], _) ->
+ `Pmtocrf(
+ (trans_out_int fxm),
+ (trans_out_reg rs))
+ | ("Mfocrf", [rt; fxm], _) ->
+ `Pmfocrf(
+ (trans_out_reg rt),
+ (trans_out_int fxm))
+ | ("Mcrxr", [bf], _) ->
+ `Pmcrxr(
+ (trans_out_int bf))
+ | ("Dlmzb", [rs; ra; rb; rc], _) ->
+ `Pdlmzb(
+ (trans_out_cr0 rc),
+ (trans_out_reg ra),
+ (trans_out_reg rs),
+ (trans_out_reg rb))
+ | ("Macchw", [rt; ra; rb; oe; rc], _) ->
+ `Pmacchw(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Macchws", [rt; ra; rb; oe; rc], _) ->
+ `Pmacchws(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Macchwu", [rt; ra; rb; oe; rc], _) ->
+ `Pmacchwu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Macchwsu", [rt; ra; rb; oe; rc], _) ->
+ `Pmacchwsu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Machhw", [rt; ra; rb; oe; rc], _) ->
+ `Pmachhw(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Machhws", [rt; ra; rb; oe; rc], _) ->
+ `Pmachhws(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Machhwu", [rt; ra; rb; oe; rc], _) ->
+ `Pmachhwu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Machhwsu", [rt; ra; rb; oe; rc], _) ->
+ `Pmachhwsu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Maclhw", [rt; ra; rb; oe; rc], _) ->
+ `Pmaclhw(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Maclhws", [rt; ra; rb; oe; rc], _) ->
+ `Pmaclhws(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Maclhwu", [rt; ra; rb; oe; rc], _) ->
+ `Pmaclhwu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Maclhwsu", [rt; ra; rb; oe; rc], _) ->
+ `Pmaclhwsu(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mulchw", [rt; ra; rb; rc], _) ->
+ `Pmulchw(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mulchwu", [rt; ra; rb; rc], _) ->
+ `Pmulchwu(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mulhhw", [rt; ra; rb; rc], _) ->
+ `Pmulhhw(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mulhhwu", [rt; ra; rb; rc], _) ->
+ `Pmulhhwu(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mullhw", [rt; ra; rb; rc], _) ->
+ `Pmullhw(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Mullhwu", [rt; ra; rb; rc], _) ->
+ `Pmullhwu(
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Nmacchw", [rt; ra; rb; oe; rc], _) ->
+ `Pnmacchw(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Nmacchws", [rt; ra; rb; oe; rc], _) ->
+ `Pnmacchws(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Nmachhw", [rt; ra; rb; oe; rc], _) ->
+ `Pnmachhw(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Nmachhws", [rt; ra; rb; oe; rc], _) ->
+ `Pnmachhws(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Nmaclhw", [rt; ra; rb; oe; rc], _) ->
+ `Pnmaclhw(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Nmaclhws", [rt; ra; rb; oe; rc], _) ->
+ `Pnmaclhws(
+ (trans_out_soov oe),
+ (trans_out_cr0 rc),
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Icbi", [ra; rb], _) ->
+ `Picbi(
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Icbt", [ct; ra; rb], _) ->
+ `Picbt(
+ (trans_out_int ct),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Dcba", [ra; rb], _) ->
+ `Pdcba(
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Dcbt", [th; ra; rb], _) ->
+ `Pdcbt(
+ (trans_out_reg ra),
+ (trans_out_reg rb),
+ (trans_out_int th))
+ | ("Dcbtst", [th; ra; rb], _) ->
+ `Pdcbtst(
+ (trans_out_reg ra),
+ (trans_out_reg rb),
+ (trans_out_int th))
+ | ("Dcbz", [ra; rb], _) ->
+ `Pdcbz(
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Dcbst", [ra; rb], _) ->
+ `Pdcbst(
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Dcbf", [l; ra; rb], _) ->
+ `Pdcbf(
+ (trans_out_reg ra),
+ (trans_out_reg rb),
+ (trans_out_int l))
+ | ("Isync", [], _) ->
+ `Pisync
+
+ | ("Lbarx", [rt; ra; rb; eh], _) ->
+ `Plbarx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb),
+ (trans_out_int eh))
+ | ("Lharx", [rt; ra; rb; eh], _) ->
+ `Plharx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb),
+ (trans_out_int eh))
+ | ("Lwarx", [rt; ra; rb; eh], _) ->
+ `Plwarx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb),
+ (trans_out_int eh))
+ | ("Stbcx", [rs; ra; rb], _) ->
+ `Pstbcx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Sthcx", [rs; ra; rb], _) ->
+ `Psthcx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Stwcx", [rs; ra; rb], _) ->
+ `Pstwcx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Ldarx", [rt; ra; rb; eh], _) ->
+ `Pldarx(
+ (trans_out_reg rt),
+ (trans_out_reg ra),
+ (trans_out_reg rb),
+ (trans_out_int eh))
+ | ("Stdcx", [rs; ra; rb], _) ->
+ `Pstdcx(
+ (trans_out_reg rs),
+ (trans_out_reg ra),
+ (trans_out_reg rb))
+ | ("Sync", [l], _) ->
+ `Psync(
+ (trans_out_int l))
+ | ("Eieio", [], _) ->
+ `Peieio
+
+ | ("Wait", [wc], _) ->
+ `Pwait(
+ (trans_out_int wc))