]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
PPC: Disassemble y-bit instead of at-bits for conditional branches.
authorMike Pall <mike>
Mon, 5 Sep 2011 16:27:05 +0000 (18:27 +0200)
committerMike Pall <mike>
Mon, 5 Sep 2011 16:27:05 +0000 (18:27 +0200)
lib/dis_ppc.lua

index 13d87c70bb7fb23b28dd33639a68001b4760b3de..b061a26ebc6b6db46a824f6bcc4ad692dda23032 100644 (file)
@@ -464,23 +464,13 @@ local function disass_ins(ctx)
        cn = band(bo, 2) == 0 and "dnz" or "dz"
        if band(bo, 0x10) == 0 then
          cn = cn..(band(bo, 8) == 0 and "f" or "t")
-         if band(bo, 1) ~= 0 then
-           name = name..(band(op, 0x8000) ~= 0 and "-" or "+")
-         end
-       elseif band(bo, 8) ~= 0 then
-         name = name..(band(bo, 1) == 0 and "-" or "+")
-       elseif band(bo, 1) ~= 0 then
-         name = name..(band(op, 0x8000) ~= 0 and "-" or "+")
        end
        if band(bo, 0x10) == 0 then x = condfmt(cond) end
+       name = name..(band(bo, 1) == band(rshift(op, 15), 1) and "-" or "+")
       elseif band(bo, 0x10) == 0 then
        cn = map_cond[band(cond, 3) + (band(bo, 8) == 0 and 4 or 0)]
-       if band(bo, 2) ~= 0 then
-         name = name..(band(bo, 1) == 0 and "-" or "+")
-       elseif band(bo, 1) ~= 0 then
-         name = name..(band(op, 0x8000) ~= 0 and "-" or "+")
-       end
        if cond > 3 then x = "cr"..rshift(cond, 2) end
+       name = name..(band(bo, 1) == band(rshift(op, 15), 1) and "-" or "+")
       end
       name = gsub(name, "_", cn)
     elseif p == "J" then