diff --git a/osaca/data/isa/x86.yml b/osaca/data/isa/x86.yml index 02ffd16..57bb5d5 100644 --- a/osaca/data/isa/x86.yml +++ b/osaca/data/isa/x86.yml @@ -4415,7 +4415,7 @@ instruction_forms: name: "xmm" source: true destination: true - - name: [shl, shr, shlq, shrq] + - name: [sal, sar, salq, sarq, shl, shr, shlq, shrq] operands: - class: "immediate" imd: "int" diff --git a/tests/test_semantics.py b/tests/test_semantics.py index 0748bfe..4f001a0 100755 --- a/tests/test_semantics.py +++ b/tests/test_semantics.py @@ -849,6 +849,9 @@ class TestSemanticTools(unittest.TestCase): instr_form_r_ymm = self.parser_x86_intel.parse_line("vmovapd ymm0, ymm1") self.semantics_csx_intel.normalize_instruction_form(instr_form_r_ymm) self.semantics_csx_intel.assign_src_dst(instr_form_r_ymm) + instr_form_rw_sar = self.parser_x86_intel.parse_line("sar rcx, 43") + self.semantics_csx_intel.normalize_instruction_form(instr_form_rw_sar) + self.semantics_csx_intel.assign_src_dst(instr_form_rw_sar) self.assertTrue(dag.is_read(reg_rcx, instr_form_r_c)) self.assertFalse(dag.is_read(reg_rcx, instr_form_non_r_c)) self.assertFalse(dag.is_read(reg_rcx, instr_form_w_c)) @@ -860,6 +863,8 @@ class TestSemanticTools(unittest.TestCase): self.assertTrue(dag.is_written(reg_ymm1, instr_form_rw_ymm_1)) self.assertTrue(dag.is_written(reg_ymm1, instr_form_rw_ymm_2)) self.assertFalse(dag.is_written(reg_ymm1, instr_form_r_ymm)) + self.assertTrue(dag.is_read(reg_rcx, instr_form_rw_sar)) + self.assertTrue(dag.is_written(reg_rcx, instr_form_rw_sar)) def test_is_read_is_written_AArch64(self): # independent form HW model