mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Fix encoding of test x86 instruction
This commit is contained in:
parent
54fe43b45c
commit
5c2f74fc32
2 changed files with 11 additions and 1 deletions
10
yjit_asm.c
10
yjit_asm.c
|
@ -1664,7 +1664,15 @@ void test(codeblock_t* cb, x86opnd_t rm_opnd, x86opnd_t test_opnd)
|
|||
else
|
||||
{
|
||||
assert (test_opnd.num_bits == rm_opnd.num_bits);
|
||||
cb_write_rm(cb, false, rm_opnd.num_bits == 64, test_opnd, rm_opnd, 0xFF, 1, 0x85);
|
||||
|
||||
if (rm_opnd.num_bits == 8)
|
||||
{
|
||||
cb_write_rm(cb, false, false, test_opnd, rm_opnd, 0xFF, 1, 0x84);
|
||||
}
|
||||
else
|
||||
{
|
||||
cb_write_rm(cb, rm_opnd.num_bits == 16, rm_opnd.num_bits == 64, test_opnd, rm_opnd, 0xFF, 1, 0x85);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -323,6 +323,8 @@ void run_tests()
|
|||
cb_set_pos(cb, 0); sub(cb, RAX, imm_opnd(2)); check_bytes(cb, "4883E802");
|
||||
|
||||
// test
|
||||
cb_set_pos(cb, 0); test(cb, AL, AL); check_bytes(cb, "84C0");
|
||||
cb_set_pos(cb, 0); test(cb, AX, AX); check_bytes(cb, "6685C0");
|
||||
cb_set_pos(cb, 0); test(cb, CL, imm_opnd(8)); check_bytes(cb, "F6C108");
|
||||
cb_set_pos(cb, 0); test(cb, DL, imm_opnd(7)); check_bytes(cb, "F6C207");
|
||||
cb_set_pos(cb, 0); test(cb, RCX, imm_opnd(8)); check_bytes(cb, "F6C108");
|
||||
|
|
Loading…
Reference in a new issue