mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-08 15:34:09 +00:00
Add more RI-a (register-immediate) instructions.
This commit is contained in:
parent
3ef1f21531
commit
c83f4af9cc
@ -269,7 +269,7 @@ void dasm_put(Dst_DECL, int start, ...)
|
|||||||
b[pos++] = ofs; /* Store pass1 offset estimate. */
|
b[pos++] = ofs; /* Store pass1 offset estimate. */
|
||||||
break;
|
break;
|
||||||
case DASM_IMM16:
|
case DASM_IMM16:
|
||||||
CK(((short)n) == n, RANGE_I); /* TODO: unsigned immediates? */
|
CK(((short)n) == n || ((unsigned short)n) == n, RANGE_I); /* TODO: is this the right way to handle unsigned immediates? */
|
||||||
ofs += 2;
|
ofs += 2;
|
||||||
b[pos++] = n;
|
b[pos++] = n;
|
||||||
break;
|
break;
|
||||||
|
@ -299,6 +299,10 @@ local function is_int32(num)
|
|||||||
return -2147483648 <= num and num < 2147483648
|
return -2147483648 <= num and num < 2147483648
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function is_uint16(num)
|
||||||
|
return 0 <= num and num < 0xffff
|
||||||
|
end
|
||||||
|
|
||||||
local function is_int16(num)
|
local function is_int16(num)
|
||||||
return -32768 <= num and num < 32768
|
return -32768 <= num and num < 32768
|
||||||
end
|
end
|
||||||
@ -478,7 +482,7 @@ end
|
|||||||
local function parse_imm16(imm)
|
local function parse_imm16(imm)
|
||||||
local imm_val = tonumber(imm)
|
local imm_val = tonumber(imm)
|
||||||
if imm_val then
|
if imm_val then
|
||||||
if not is_int16(imm_val) then
|
if not is_int16(imm_val) and not is_uint16(imm_val) then
|
||||||
werror("immediate value out of range: ", imm_val)
|
werror("immediate value out of range: ", imm_val)
|
||||||
end
|
end
|
||||||
wputhw(band(imm_val, 0xffff))
|
wputhw(band(imm_val, 0xffff))
|
||||||
@ -581,7 +585,11 @@ map_op = {
|
|||||||
ng_2 = "e30000000080l",
|
ng_2 = "e30000000080l",
|
||||||
ngr_2 = "0000b9800000h",
|
ngr_2 = "0000b9800000h",
|
||||||
nihf_2 = "c00a00000000n",
|
nihf_2 = "c00a00000000n",
|
||||||
|
nihh_2 = "0000a5040000i",
|
||||||
|
nihl_2 = "0000a5050000i",
|
||||||
nilf_2 = "c00b00000000n",
|
nilf_2 = "c00b00000000n",
|
||||||
|
nilh_2 = "0000a5060000i",
|
||||||
|
nill_2 = "0000a5070000i",
|
||||||
bal_2 = "000045000000j",
|
bal_2 = "000045000000j",
|
||||||
balr_2 = "000000000500g",
|
balr_2 = "000000000500g",
|
||||||
bas_2 = "00004d000000j",
|
bas_2 = "00004d000000j",
|
||||||
@ -772,7 +780,11 @@ map_op = {
|
|||||||
icm_3 = "0000bf000000r",
|
icm_3 = "0000bf000000r",
|
||||||
icmy_3 = "eb0000000081t",
|
icmy_3 = "eb0000000081t",
|
||||||
iihf_2 = "c00800000000n",
|
iihf_2 = "c00800000000n",
|
||||||
|
iihh_2 = "0000a5000000i",
|
||||||
|
iihl_2 = "0000a5010000i",
|
||||||
iilf_2 = "c00900000000n",
|
iilf_2 = "c00900000000n",
|
||||||
|
iilh_2 = "0000a5020000i",
|
||||||
|
iill_2 = "0000a5030000i",
|
||||||
ipm_2 = "0000b2220000h",
|
ipm_2 = "0000b2220000h",
|
||||||
iske_2 = "0000b2290000h",
|
iske_2 = "0000b2290000h",
|
||||||
ivsk_2 = "0000b2230000h",
|
ivsk_2 = "0000b2230000h",
|
||||||
@ -876,7 +888,11 @@ map_op = {
|
|||||||
llhrl_2 = "c40200000000o",
|
llhrl_2 = "c40200000000o",
|
||||||
llghrl_2 = "c40600000000o",
|
llghrl_2 = "c40600000000o",
|
||||||
llihf_2 = "c00e00000000n",
|
llihf_2 = "c00e00000000n",
|
||||||
|
llihh_2 = "0000a50c0000i",
|
||||||
|
llihl_2 = "0000a50d0000i",
|
||||||
llilf_2 = "c00f00000000n",
|
llilf_2 = "c00f00000000n",
|
||||||
|
llilh_2 = "0000a50e0000i",
|
||||||
|
llill_2 = "0000a50f0000i",
|
||||||
llgfrl_2 = "c40e00000000o",
|
llgfrl_2 = "c40e00000000o",
|
||||||
llgt_2 = "e30000000017l",
|
llgt_2 = "e30000000017l",
|
||||||
llgtr_2 = "0000b9170000h",
|
llgtr_2 = "0000b9170000h",
|
||||||
@ -980,7 +996,11 @@ map_op = {
|
|||||||
og_2 = "e30000000081l",
|
og_2 = "e30000000081l",
|
||||||
ogr_2 = "0000b9810000h",
|
ogr_2 = "0000b9810000h",
|
||||||
oihf_2 = "c00c00000000n",
|
oihf_2 = "c00c00000000n",
|
||||||
|
oihh_2 = "0000a5080000i",
|
||||||
|
oihl_2 = "0000a5090000i",
|
||||||
oilf_2 = "c00d00000000n",
|
oilf_2 = "c00d00000000n",
|
||||||
|
oilh_2 = "0000a50a0000i",
|
||||||
|
oill_2 = "0000a50b0000i",
|
||||||
pgin_2 = "0000b22e0000h",
|
pgin_2 = "0000b22e0000h",
|
||||||
pgout_2 = "0000b22f0000h",
|
pgout_2 = "0000b22f0000h",
|
||||||
pcc_2 = "0000b92c0000h",
|
pcc_2 = "0000b92c0000h",
|
||||||
@ -1099,6 +1119,10 @@ map_op = {
|
|||||||
swr_2 = "000000002f00g",
|
swr_2 = "000000002f00g",
|
||||||
tar_2 = "0000b24c0000h",
|
tar_2 = "0000b24c0000h",
|
||||||
tb_2 = "0000b22c0000h",
|
tb_2 = "0000b22c0000h",
|
||||||
|
tmhh_2 = "0000a7020000i",
|
||||||
|
tmhl_2 = "0000a7030000i",
|
||||||
|
tmlh_2 = "0000a7000000i",
|
||||||
|
tmll_2 = "0000a7010000i",
|
||||||
trace_3 = "000099000000q",
|
trace_3 = "000099000000q",
|
||||||
tracg_3 = "eb000000000fs",
|
tracg_3 = "eb000000000fs",
|
||||||
tre_2 = "0000b2a50000h",
|
tre_2 = "0000b2a50000h",
|
||||||
|
Loading…
Reference in New Issue
Block a user