mirror of
https://github.com/asmjit/asmjit.git
synced 2025-12-17 04:24:37 +03:00
[Bug] Fixed LDURSW instruction on AArch64 (#389)
The instruction was wrongly described as supporting both W/X registers, however, it only supports X register.
This commit is contained in:
@@ -300,7 +300,7 @@ const InstInfo _instInfoTable[] = {
|
||||
INST(Ldurh , BaseRM_SImm9 , (0b0111100001000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0) , kRWI_W , 0 , 9 , 2153), // #230
|
||||
INST(Ldursb , BaseRM_SImm9 , (0b0011100011000000000000, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 10 , 2159), // #231
|
||||
INST(Ldursh , BaseRM_SImm9 , (0b0111100011000000000000, 0b0000000000000000000000, kWX, kZR, 22, 0) , kRWI_W , 0 , 11 , 2166), // #232
|
||||
INST(Ldursw , BaseRM_SImm9 , (0b1011100010000000000000, 0b0000000000000000000000, kWX, kZR, 0 , 0) , kRWI_W , 0 , 12 , 2173), // #233
|
||||
INST(Ldursw , BaseRM_SImm9 , (0b1011100010000000000000, 0b0000000000000000000000, kX, kZR, 0 , 0) , kRWI_W , 0 , 12 , 2173), // #233
|
||||
INST(Ldxp , BaseLdxp , (0b1000100001111111000000, kWX, 30) , kRWI_WW , 0 , 1 , 2180), // #234
|
||||
INST(Ldxr , BaseRM_NoImm , (0b1000100001011111011111, kWX, kZR, 30) , kRWI_W , 0 , 10 , 2185), // #235
|
||||
INST(Ldxrb , BaseRM_NoImm , (0b0000100001011111011111, kW , kZR, 0 ) , kRWI_W , 0 , 11 , 2190), // #236
|
||||
@@ -1275,7 +1275,7 @@ const BaseRM_SImm9 baseRM_SImm9[23] = {
|
||||
{ 0b0111100001000000000000, 0b0000000000000000000000, kW , kZR, 0 , 0 }, // ldurh
|
||||
{ 0b0011100011000000000000, 0b0000000000000000000000, kWX, kZR, 22, 0 }, // ldursb
|
||||
{ 0b0111100011000000000000, 0b0000000000000000000000, kWX, kZR, 22, 0 }, // ldursh
|
||||
{ 0b1011100010000000000000, 0b0000000000000000000000, kWX, kZR, 0 , 0 }, // ldursw
|
||||
{ 0b1011100010000000000000, 0b0000000000000000000000, kX, kZR, 0 , 0 }, // ldursw
|
||||
{ 0b1101100110100000000010, 0b1101100110100000000001, kX, kSP, 0, 4 }, // st2g
|
||||
{ 0b1101100100100000000010, 0b1101100100100000000001, kX, kSP, 0, 4 }, // stg
|
||||
{ 0b1011100000000000000010, 0b0000000000000000000000, kWX, kZR, 30, 0 }, // sttr
|
||||
|
||||
@@ -746,6 +746,10 @@ static void ASMJIT_NOINLINE testA64AssemblerBase(AssemblerTester<a64::Assembler>
|
||||
TEST_INSTRUCTION("411088B8", ldursw(x1, ptr(x2, 129)));
|
||||
TEST_INSTRUCTION("E10380B8", ldursw(x1, ptr(sp)));
|
||||
TEST_INSTRUCTION("E11388B8", ldursw(x1, ptr(sp, 129)));
|
||||
TEST_INSTRUCTION("420080B8", ldursw(x2, ptr(x2)));
|
||||
TEST_INSTRUCTION("421088B8", ldursw(x2, ptr(x2, 129)));
|
||||
TEST_INSTRUCTION("E20380B8", ldursw(x2, ptr(sp)));
|
||||
TEST_INSTRUCTION("E21388B8", ldursw(x2, ptr(sp, 129)));
|
||||
TEST_INSTRUCTION("61087F88", ldxp(w1, w2, ptr(x3)));
|
||||
TEST_INSTRUCTION("E10B7F88", ldxp(w1, w2, ptr(sp)));
|
||||
TEST_INSTRUCTION("61087FC8", ldxp(x1, x2, ptr(x3)));
|
||||
|
||||
Reference in New Issue
Block a user