diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/jit/dis_x86.lua | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/jit/dis_x86.lua b/src/jit/dis_x86.lua index 4371233d..3a68c933 100644 --- a/src/jit/dis_x86.lua +++ b/src/jit/dis_x86.lua | |||
| @@ -239,6 +239,24 @@ nil,"||psrlvVSXrvm","||psravdXrvm","||psllvVSXrvm", | |||
| 239 | --8x | 239 | --8x |
| 240 | [0x8c] = "||pmaskmovXrvVSm", | 240 | [0x8c] = "||pmaskmovXrvVSm", |
| 241 | [0x8e] = "||pmaskmovVSmXvr", | 241 | [0x8e] = "||pmaskmovVSmXvr", |
| 242 | --9x | ||
| 243 | [0x96] = "||fmaddsub132pHXrvm",[0x97] = "||fmsubadd132pHXrvm", | ||
| 244 | [0x98] = "||fmadd132pHXrvm",[0x99] = "||fmadd132sHXrvm", | ||
| 245 | [0x9a] = "||fmsub132pHXrvm",[0x9b] = "||fmsub132sHXrvm", | ||
| 246 | [0x9c] = "||fnmadd132pHXrvm",[0x9d] = "||fnmadd132sHXrvm", | ||
| 247 | [0x9e] = "||fnmsub132pHXrvm",[0x9f] = "||fnmsub132sHXrvm", | ||
| 248 | --Ax | ||
| 249 | [0xa6] = "||fmaddsub213pHXrvm",[0xa7] = "||fmsubadd213pHXrvm", | ||
| 250 | [0xa8] = "||fmadd213pHXrvm",[0xa9] = "||fmadd213sHXrvm", | ||
| 251 | [0xaa] = "||fmsub213pHXrvm",[0xab] = "||fmsub213sHXrvm", | ||
| 252 | [0xac] = "||fnmadd213pHXrvm",[0xad] = "||fnmadd213sHXrvm", | ||
| 253 | [0xae] = "||fnmsub213pHXrvm",[0xaf] = "||fnmsub213sHXrvm", | ||
| 254 | --Bx | ||
| 255 | [0xb6] = "||fmaddsub231pHXrvm",[0xb7] = "||fmsubadd231pHXrvm", | ||
| 256 | [0xb8] = "||fmadd231pHXrvm",[0xb9] = "||fmadd231sHXrvm", | ||
| 257 | [0xba] = "||fmsub231pHXrvm",[0xbb] = "||fmsub231sHXrvm", | ||
| 258 | [0xbc] = "||fnmadd231pHXrvm",[0xbd] = "||fnmadd231sHXrvm", | ||
| 259 | [0xbe] = "||fnmsub231pHXrvm",[0xbf] = "||fnmsub231sHXrvm", | ||
| 242 | --Dx | 260 | --Dx |
| 243 | [0xdc] = "||aesencXrvm", [0xdd] = "||aesenclastXrvm", | 261 | [0xdc] = "||aesencXrvm", [0xdd] = "||aesenclastXrvm", |
| 244 | [0xde] = "||aesdecXrvm", [0xdf] = "||aesdeclastXrvm", | 262 | [0xde] = "||aesdecXrvm", [0xdf] = "||aesdeclastXrvm", |
| @@ -483,7 +501,7 @@ local function putpat(ctx, name, pat) | |||
| 483 | local operands, regs, sz, mode, sp, rm, sc, rx, sdisp | 501 | local operands, regs, sz, mode, sp, rm, sc, rx, sdisp |
| 484 | local code, pos, stop, vexl = ctx.code, ctx.pos, ctx.stop, ctx.vexl | 502 | local code, pos, stop, vexl = ctx.code, ctx.pos, ctx.stop, ctx.vexl |
| 485 | 503 | ||
| 486 | -- Chars used: 1DFGIMPQRSTUVWXYabcdfgijlmoprstuvwxyz | 504 | -- Chars used: 1DFGHIMPQRSTUVWXYabcdfgijlmoprstuvwxyz |
| 487 | for p in gmatch(pat, ".") do | 505 | for p in gmatch(pat, ".") do |
| 488 | local x = nil | 506 | local x = nil |
| 489 | if p == "V" or p == "U" then | 507 | if p == "V" or p == "U" then |
| @@ -506,6 +524,9 @@ local function putpat(ctx, name, pat) | |||
| 506 | sz = ctx.o16 and "X" or "M"; ctx.o16 = false | 524 | sz = ctx.o16 and "X" or "M"; ctx.o16 = false |
| 507 | if sz == "X" and vexl then sz = "Y"; ctx.vexl = false end | 525 | if sz == "X" and vexl then sz = "Y"; ctx.vexl = false end |
| 508 | regs = map_regs[sz] | 526 | regs = map_regs[sz] |
| 527 | elseif p == "H" then | ||
| 528 | name = name..(ctx.rexw and "d" or "s") | ||
| 529 | ctx.rexw = false | ||
| 509 | elseif p == "S" then | 530 | elseif p == "S" then |
| 510 | name = name..lower(sz) | 531 | name = name..lower(sz) |
| 511 | elseif p == "s" then | 532 | elseif p == "s" then |
| @@ -735,6 +756,7 @@ map_act = { | |||
| 735 | V = putpat, U = putpat, T = putpat, | 756 | V = putpat, U = putpat, T = putpat, |
| 736 | M = putpat, X = putpat, P = putpat, | 757 | M = putpat, X = putpat, P = putpat, |
| 737 | F = putpat, G = putpat, Y = putpat, | 758 | F = putpat, G = putpat, Y = putpat, |
| 759 | H = putpat, | ||
| 738 | 760 | ||
| 739 | -- Collect prefixes. | 761 | -- Collect prefixes. |
| 740 | [":"] = function(ctx, name, pat) | 762 | [":"] = function(ctx, name, pat) |
