diff options
author | Mike Pall <mike> | 2009-12-10 12:52:32 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2009-12-10 12:52:32 +0100 |
commit | d12d036023bc7c50443bb6dbf4743c23a6783244 (patch) | |
tree | 8e67e0c6ec2bfd6793a108f47ffca3d2111d8adf | |
parent | 33171e818077838ed673e927ea593f3dc72efde8 (diff) | |
download | luajit-d12d036023bc7c50443bb6dbf4743c23a6783244.tar.gz luajit-d12d036023bc7c50443bb6dbf4743c23a6783244.tar.bz2 luajit-d12d036023bc7c50443bb6dbf4743c23a6783244.zip |
Pick unused X char to force REX.W in DynASM x64.
-rw-r--r-- | dynasm/dasm_x86.lua | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/dynasm/dasm_x86.lua b/dynasm/dasm_x86.lua index e43e4675..af5bd111 100644 --- a/dynasm/dasm_x86.lua +++ b/dynasm/dasm_x86.lua | |||
@@ -853,7 +853,7 @@ end | |||
853 | -- Hex chars are accumulated to form the opcode (left to right). | 853 | -- Hex chars are accumulated to form the opcode (left to right). |
854 | -- "n" disables the standard opcode mods | 854 | -- "n" disables the standard opcode mods |
855 | -- (otherwise: -1 for "b", o16 prefix for "w", rex.w for "q") | 855 | -- (otherwise: -1 for "b", o16 prefix for "w", rex.w for "q") |
856 | -- "W" Force REX.W. | 856 | -- "X" Force REX.W. |
857 | -- "r"/"R" adds the reg. number from the 1st/2nd operand to the opcode. | 857 | -- "r"/"R" adds the reg. number from the 1st/2nd operand to the opcode. |
858 | -- "m"/"M" generates ModRM/SIB from the 1st/2nd operand. | 858 | -- "m"/"M" generates ModRM/SIB from the 1st/2nd operand. |
859 | -- The spare 3 bits are either filled with the last hex digit or | 859 | -- The spare 3 bits are either filled with the last hex digit or |
@@ -1158,8 +1158,8 @@ local map_op = { | |||
1158 | cvtps2pd_2 = "rro:0F5ArM|rx/oq:", | 1158 | cvtps2pd_2 = "rro:0F5ArM|rx/oq:", |
1159 | cvtsd2si_2 = "rr/do:F20F2DrM|rr/qo:|rx/dq:|rxq:", | 1159 | cvtsd2si_2 = "rr/do:F20F2DrM|rr/qo:|rx/dq:|rxq:", |
1160 | cvtsd2ss_2 = "rro:F20F5ArM|rx/oq:", | 1160 | cvtsd2ss_2 = "rro:F20F5ArM|rx/oq:", |
1161 | cvtsi2sd_2 = "rm/od:F20F2ArM|rm/oq:F20F2ArWM", | 1161 | cvtsi2sd_2 = "rm/od:F20F2ArM|rm/oq:F20F2ArXM", |
1162 | cvtsi2ss_2 = "rm/od:F30F2ArM|rm/oq:F30F2ArWM", | 1162 | cvtsi2ss_2 = "rm/od:F30F2ArM|rm/oq:F30F2ArXM", |
1163 | cvtss2sd_2 = "rro:F30F5ArM|rx/od:", | 1163 | cvtss2sd_2 = "rro:F30F5ArM|rx/od:", |
1164 | cvtss2si_2 = "rr/do:F20F2CrM|rr/qo:|rxd:|rx/qd:", | 1164 | cvtss2si_2 = "rr/do:F20F2CrM|rr/qo:|rxd:|rx/qd:", |
1165 | cvttpd2dq_2 = "rmo:660FE6rM", | 1165 | cvttpd2dq_2 = "rmo:660FE6rM", |
@@ -1172,7 +1172,7 @@ local map_op = { | |||
1172 | mfence_0 = "0FAEF0", | 1172 | mfence_0 = "0FAEF0", |
1173 | movapd_2 = "rmo:660F28rM|mro:660F29Rm", | 1173 | movapd_2 = "rmo:660F28rM|mro:660F29Rm", |
1174 | movaps_2 = "rmo:0F28rM|mro:0F29Rm", | 1174 | movaps_2 = "rmo:0F28rM|mro:0F29Rm", |
1175 | movd_2 = "rm/od:660F6ErM|rm/oq:660F6EWrM|mr/do:660F7ERm|mr/qo:", | 1175 | movd_2 = "rm/od:660F6ErM|rm/oq:660F6ErXM|mr/do:660F7ERm|mr/qo:", |
1176 | movdqa_2 = "rmo:660F6FrM|mro:660F7FRm", | 1176 | movdqa_2 = "rmo:660F6FrM|mro:660F7FRm", |
1177 | movdqu_2 = "rmo:F30F6FrM|mro:F30F7FRm", | 1177 | movdqu_2 = "rmo:F30F6FrM|mro:F30F7FRm", |
1178 | movhlps_2 = "rro:0F12rM", | 1178 | movhlps_2 = "rro:0F12rM", |
@@ -1319,7 +1319,7 @@ local map_op = { | |||
1319 | blendvps_3 = "rmRo:660F3814rM", | 1319 | blendvps_3 = "rmRo:660F3814rM", |
1320 | dppd_3 = "rmio:660F3A41rMU", | 1320 | dppd_3 = "rmio:660F3A41rMU", |
1321 | dpps_3 = "rmio:660F3A40rMU", | 1321 | dpps_3 = "rmio:660F3A40rMU", |
1322 | extractps_3 = "mri/do:660F3A17RmU|rri/qo:660F3A17RWmU", | 1322 | extractps_3 = "mri/do:660F3A17RmU|rri/qo:660F3A17RXmU", |
1323 | insertps_3 = "rrio:660F3A41rMU|rxi/od:", | 1323 | insertps_3 = "rrio:660F3A41rMU|rxi/od:", |
1324 | movntdqa_2 = "rmo:660F382ArM", | 1324 | movntdqa_2 = "rmo:660F382ArM", |
1325 | mpsadbw_3 = "rmio:660F3A42rMU", | 1325 | mpsadbw_3 = "rmio:660F3A42rMU", |
@@ -1334,7 +1334,7 @@ local map_op = { | |||
1334 | phminposuw_2 = "rmo:660F3841rM", | 1334 | phminposuw_2 = "rmo:660F3841rM", |
1335 | pinsrb_3 = "rri/od:660F3A20nrMU|rxi/ob:", | 1335 | pinsrb_3 = "rri/od:660F3A20nrMU|rxi/ob:", |
1336 | pinsrd_3 = "rmi/od:660F3A22rMU", | 1336 | pinsrd_3 = "rmi/od:660F3A22rMU", |
1337 | pinsrq_3 = "rmi/oq:660F3A22rWMU", | 1337 | pinsrq_3 = "rmi/oq:660F3A22rXMU", |
1338 | pmaxsb_2 = "rmo:660F383CrM", | 1338 | pmaxsb_2 = "rmo:660F383CrM", |
1339 | pmaxsd_2 = "rmo:660F383DrM", | 1339 | pmaxsd_2 = "rmo:660F383DrM", |
1340 | pmaxud_2 = "rmo:660F383FrM", | 1340 | pmaxud_2 = "rmo:660F383FrM", |
@@ -1465,7 +1465,7 @@ local function dopattern(pat, args, sz, op) | |||
1465 | addin = nil | 1465 | addin = nil |
1466 | elseif c == "n" then -- Disable operand size mods for opcode. | 1466 | elseif c == "n" then -- Disable operand size mods for opcode. |
1467 | szov = nil | 1467 | szov = nil |
1468 | elseif c == "W" then -- Force REX.W. | 1468 | elseif c == "X" then -- Force REX.W. |
1469 | rex = 8 | 1469 | rex = 8 |
1470 | elseif c == "r" then -- Merge 1st operand regno. into opcode. | 1470 | elseif c == "r" then -- Merge 1st operand regno. into opcode. |
1471 | addin = args[1]; opcode = opcode + (addin.reg % 8) | 1471 | addin = args[1]; opcode = opcode + (addin.reg % 8) |