aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2011-10-17 17:22:21 +0200
committerMike Pall <mike>2011-10-17 17:22:21 +0200
commite5f310eefac2e2b885082256fa39688efabba0c2 (patch)
treec77020b8a3ff6208968090138c9a339d8b7df4d6
parent270de2d6cc72470818a75be698fc2755fcdd79f8 (diff)
downloadluajit-e5f310eefac2e2b885082256fa39688efabba0c2.tar.gz
luajit-e5f310eefac2e2b885082256fa39688efabba0c2.tar.bz2
luajit-e5f310eefac2e2b885082256fa39688efabba0c2.zip
PPC: Distinguish slwi, srwi and rlwinm in disassembly.
-rw-r--r--lib/dis_ppc.lua19
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/dis_ppc.lua b/lib/dis_ppc.lua
index 57cd330d..79b306d5 100644
--- a/lib/dis_ppc.lua
+++ b/lib/dis_ppc.lua
@@ -35,6 +35,23 @@ local map_crops = {
35 [150] = "isync", 35 [150] = "isync",
36} 36}
37 37
38local map_rlwinm = setmetatable({
39 shift = 0, mask = -1,
40},
41{ __index = function(t, x)
42 local rot = band(rshift(x, 11), 31)
43 local mb = band(rshift(x, 6), 31)
44 local me = band(rshift(x, 1), 31)
45 if mb == 0 and me == 31-rot then
46 return "slwiRR~A."
47 elseif me == 31 and mb == 32-rot then
48 return "srwiRR~-A."
49 else
50 return "rlwinmRR~AAA."
51 end
52 end
53})
54
38local map_rld = { 55local map_rld = {
39 shift = 2, mask = 7, 56 shift = 2, mask = 7,
40 [0] = "rldiclRR~HM.", "rldicrRR~HM.", "rldicRR~HM.", "rldimiRR~HM.", 57 [0] = "rldiclRR~HM.", "rldicrRR~HM.", "rldicRR~HM.", "rldimiRR~HM.",
@@ -342,7 +359,7 @@ local map_pri = {
342 "subficRRI", false, "cmpl_iYLRU", "cmp_iYLRI", 359 "subficRRI", false, "cmpl_iYLRU", "cmp_iYLRI",
343 "addicRRI", "addic.RRI", "addi|liRR0I", "addis|lisRR0I", 360 "addicRRI", "addic.RRI", "addi|liRR0I", "addis|lisRR0I",
344 "b_KBJ", "sc", "bKJ", map_crops, 361 "b_KBJ", "sc", "bKJ", map_crops,
345 "rlwimiRR~AAA.", "rlwinmRR~AAA.", false, "rlwnmRR~RAA.", 362 "rlwimiRR~AAA.", map_rlwinm, false, "rlwnmRR~RAA.",
346 "oriNRR~U", "orisRR~U", "xoriRR~U", "xorisRR~U", 363 "oriNRR~U", "orisRR~U", "xoriRR~U", "xorisRR~U",
347 "andi.RR~U", "andis.RR~U", map_rld, map_ext, 364 "andi.RR~U", "andis.RR~U", map_rld, map_ext,
348 "lwzRRD", "lwzuRRD", "lbzRRD", "lbzuRRD", 365 "lwzRRD", "lwzuRRD", "lbzRRD", "lbzuRRD",