about summary refs log tree commit diff stats
path: root/test/arch/mep/asm/test_major_opcode_0.py
diff options
context:
space:
mode:
authorGuillaume Valadon <guillaume@valadon.net>2018-06-15 12:10:10 +0200
committerGuillaume Valadon <guillaume@valadon.net>2018-07-12 22:50:51 +0200
commitb8e5038798b0dece628846acb5ad25d9d4e60395 (patch)
tree932dd2676afcf0c4ba6bf0c57d3b574954461ad2 /test/arch/mep/asm/test_major_opcode_0.py
parent82eb5f6eb197fc59d2e9ae21cfda05a1868e462e (diff)
downloadmiasm-b8e5038798b0dece628846acb5ad25d9d4e60395.tar.gz
miasm-b8e5038798b0dece628846acb5ad25d9d4e60395.zip
Toshiba MeP support
Diffstat (limited to 'test/arch/mep/asm/test_major_opcode_0.py')
-rw-r--r--test/arch/mep/asm/test_major_opcode_0.py268
1 files changed, 268 insertions, 0 deletions
diff --git a/test/arch/mep/asm/test_major_opcode_0.py b/test/arch/mep/asm/test_major_opcode_0.py
new file mode 100644
index 00000000..d517850a
--- /dev/null
+++ b/test/arch/mep/asm/test_major_opcode_0.py
@@ -0,0 +1,268 @@
+# Toshiba MeP-c4 - Major Opcode #0 unit tests
+# Guillaume Valadon <guillaume@valadon.net>
+
+from ut_helpers_asm import check_instruction
+
+
+class TestMajor0:
+
+    def test_MOV(self):
+        """Test the MOV instruction"""
+
+        # Top instructions
+        check_instruction("MOV $0, $4", "0040")
+        check_instruction("MOV $TP, $1", "0d10")
+        check_instruction("MOV $1, $7", "0170")
+        check_instruction("MOV $1, $8", "0180")
+        check_instruction("MOV $1, $TP", "01d0")
+
+        # Randomly choosen instructions
+        check_instruction("MOV $3, $7", "0370")
+        check_instruction("MOV $0, $SP", "00f0")
+        check_instruction("MOV $5, $SP", "05f0")
+        check_instruction("MOV $2, $10", "02a0")
+        check_instruction("MOV $GP, $12", "0ec0")
+
+    def test_NEG(self):
+        """Test the NEG instruction"""
+
+        # Top instructions
+        check_instruction("NEG $0, $12", "00c1")
+        check_instruction("NEG $1, $0", "0101")
+        check_instruction("NEG $0, $1", "0011")
+        check_instruction("NEG $0, $0", "0001")
+        check_instruction("NEG $0, $8", "0081")
+
+        # Randomly choosen instructions
+        check_instruction("NEG $6, $6", "0661")
+        check_instruction("NEG $9, $5", "0951")
+        check_instruction("NEG $11, $12", "0bc1")
+        check_instruction("NEG $2, $6", "0261")
+        check_instruction("NEG $4, $9", "0491")
+
+    def test_SLT3(self):
+        """Test the SLT3 instruction"""
+
+        # Top instructions
+        check_instruction("SLT3 $0, $1, $0", "0102")
+        check_instruction("SLT3 $0, $4, $12", "04c2")
+        check_instruction("SLT3 $0, $0, $12", "00c2")
+        check_instruction("SLT3 $0, $0, $0", "0002")
+        check_instruction("SLT3 $0, $0, $8", "0082")
+
+        # Randomly choosen instructions
+        check_instruction("SLT3 $0, $2, $4", "0242")
+        check_instruction("SLT3 $0, $SP, $2", "0f22")
+        check_instruction("SLT3 $0, $5, $9", "0592")
+        check_instruction("SLT3 $0, $6, $4", "0642")
+        check_instruction("SLT3 $0, $12, $6", "0c62")
+
+    def test_SLTU3(self):
+        """Test the SLTU3 instruction"""
+
+        # Top instructions
+        check_instruction("SLTU3 $0, $6, $8", "0683")
+        check_instruction("SLTU3 $0, $0, $0", "0003")
+        check_instruction("SLTU3 $0, $10, $11", "0ab3")
+        check_instruction("SLTU3 $0, $12, $0", "0c03")
+        check_instruction("SLTU3 $0, $4, $3", "0433")
+
+        # Randomly choosen instructions
+        check_instruction("SLTU3 $0, $5, $TP", "05d3")
+        check_instruction("SLTU3 $0, $2, $5", "0253")
+        check_instruction("SLTU3 $0, $SP, $TP", "0fd3")
+        check_instruction("SLTU3 $0, $11, $10", "0ba3")
+        check_instruction("SLTU3 $0, $4, $7", "0473")
+
+    def test_SUB(self):
+        """Test the SUB instruction"""
+
+        # Top instructions
+        check_instruction("SUB $0, $6", "0064")
+        check_instruction("SUB $0, $0", "0004")
+        check_instruction("SUB $12, $4", "0c44")
+        check_instruction("SUB $4, $3", "0434")
+        check_instruction("SUB $0, $8", "0084")
+
+        # Randomly choosen instructions
+        check_instruction("SUB $11, $9", "0b94")
+        check_instruction("SUB $9, $9", "0994")
+        check_instruction("SUB $TP, $2", "0d24")
+        check_instruction("SUB $1, $9", "0194")
+        check_instruction("SUB $SP, $11", "0fb4")
+
+    def test_SBVCK3(self):
+        """Test the SBVCK3 instruction"""
+
+        # Top instructions
+        check_instruction("SBVCK3 $0, $0, $4", "0045")
+        check_instruction("SBVCK3 $0, $5, $0", "0505")
+        check_instruction("SBVCK3 $0, $0, $0", "0005")
+        check_instruction("SBVCK3 $0, $0, $6", "0065")
+        check_instruction("SBVCK3 $0, $0, $12", "00c5")
+
+        # Randomly choosen instructions
+        check_instruction("SBVCK3 $0, $0, $5", "0055")
+        check_instruction("SBVCK3 $0, $4, $8", "0485")
+        check_instruction("SBVCK3 $0, $4, $1", "0415")
+        check_instruction("SBVCK3 $0, $TP, $4", "0d45")
+        check_instruction("SBVCK3 $0, $1, $7", "0175")
+
+    def test_RI(self):
+        """Test the (RI) instruction"""
+
+        # No samples were found
+        assert(True)
+
+    def test_ADVCK3(self):
+        """Test the ADVCK3 instruction"""
+
+        # Top instructions
+        check_instruction("ADVCK3 $0, $0, $6", "0067")
+        check_instruction("ADVCK3 $0, $0, $4", "0047")
+        check_instruction("ADVCK3 $0, $8, $9", "0897")
+        check_instruction("ADVCK3 $0, $0, $0", "0007")
+        check_instruction("ADVCK3 $0, $0, $12", "00c7")
+
+        # Randomly choosen instructions
+        check_instruction("ADVCK3 $0, $3, $9", "0397")
+        check_instruction("ADVCK3 $0, $10, $7", "0a77")
+        check_instruction("ADVCK3 $0, $1, $5", "0157")
+        check_instruction("ADVCK3 $0, $0, $9", "0097")
+        check_instruction("ADVCK3 $0, $0, $2", "0027")
+
+    def test_SB(self):
+        """Test the SB instruction"""
+
+        # Top instructions
+        check_instruction("SB $10, ($12)", "0ac8")
+        check_instruction("SB $8, ($0)", "0808")
+        check_instruction("SB $12, ($10)", "0ca8")
+        check_instruction("SB $12, ($4)", "0c48")
+        check_instruction("SB $12, ($11)", "0cb8")
+
+        # Randomly choosen instructions
+        check_instruction("SB $4, ($4)", "0448")
+        check_instruction("SB $10, ($8)", "0a88")
+        check_instruction("SB $7, ($6)", "0768")
+        check_instruction("SB $8, ($11)", "08b8")
+        check_instruction("SB $2, ($GP)", "02e8")
+
+    def test_SH(self):
+        """Test the SH instruction"""
+
+        # Top instructions
+        check_instruction("SH $12, ($11)", "0cb9")
+        check_instruction("SH $12, ($0)", "0c09")
+        check_instruction("SH $12, ($4)", "0c49")
+        check_instruction("SH $0, ($2)", "0029")
+        check_instruction("SH $0, ($12)", "00c9")
+
+        # Randomly choosen instructions
+        check_instruction("SH $GP, ($12)", "0ec9")
+        check_instruction("SH $6, ($10)", "06a9")
+        check_instruction("SH $10, ($11)", "0ab9")
+        check_instruction("SH $9, ($4)", "0949")
+        check_instruction("SH $1, ($5)", "0159")
+
+    def test_SW(self):
+        """Test the SW instruction"""
+
+        # Top instructions
+        check_instruction("SW $10, ($12)", "0aca")
+        check_instruction("SW $0, ($12)", "00ca")
+        check_instruction("SW $0, ($0)", "000a")
+        check_instruction("SW $12, ($SP)", "0cfa")
+        check_instruction("SW $0, ($SP)", "00fa")
+
+        # Randomly choosen instructions
+        check_instruction("SW $0, ($7)", "007a")
+        check_instruction("SW $4, ($12)", "04ca")
+        check_instruction("SW $12, ($7)", "0c7a")
+        check_instruction("SW $9, ($12)", "09ca")
+        check_instruction("SW $TP, ($1)", "0d1a")
+
+    def test_LBU(self):
+        """Test the LBU instruction"""
+
+        # Top instructions
+        check_instruction("LBU $12, ($TP)", "0cdb")
+        check_instruction("LBU $12, ($10)", "0cab")
+        check_instruction("LBU $12, ($11)", "0cbb")
+        check_instruction("LBU $12, ($4)", "0c4b")
+        check_instruction("LBU $0, ($4)", "004b")
+
+        # Randomly choosen instructions
+        check_instruction("LBU $6, ($TP)", "06db")
+        check_instruction("LBU $11, ($SP)", "0bfb")
+        check_instruction("LBU $10, ($10)", "0aab")
+        check_instruction("LBU $1, ($9)", "019b")
+        check_instruction("LBU $12, ($1)", "0c1b")
+
+    def test_LB(self):
+        """Test the LB instruction"""
+
+        # Top instructions
+        check_instruction("LB $11, ($TP)", "0bdc")
+        check_instruction("LB $11, ($12)", "0bcc")
+        check_instruction("LB $11, ($4)", "0b4c")
+        check_instruction("LB $10, ($4)", "0a4c")
+        check_instruction("LB $12, ($TP)", "0cdc")
+
+        # Randomly choosen instructions
+        check_instruction("LB $0, ($12)", "00cc")
+        check_instruction("LB $2, ($7)", "027c")
+        check_instruction("LB $5, ($7)", "057c")
+        check_instruction("LB $10, ($1)", "0a1c")
+        check_instruction("LB $12, ($12)", "0ccc")
+
+    def test_LH(self):
+        """Test the LH instruction"""
+
+        # Top instructions
+        check_instruction("LH $0, ($4)", "004d")
+        check_instruction("LH $0, ($0)", "000d")
+        check_instruction("LH $12, ($4)", "0c4d")
+        check_instruction("LH $0, ($12)", "00cd")
+        check_instruction("LH $10, ($0)", "0a0d")
+
+        # Randomly choosen instructions
+        check_instruction("LH $0, ($GP)", "00ed")
+        check_instruction("LH $12, ($5)", "0c5d")
+        check_instruction("LH $0, ($3)", "003d")
+        check_instruction("LH $10, ($SP)", "0afd")
+        check_instruction("LH $3, ($6)", "036d")
+
+    def test_LW(self):
+        """Test the LW instruction"""
+
+        # Top instructions
+        check_instruction("LW $0, ($SP)", "00fe")
+        check_instruction("LW $12, ($4)", "0c4e")
+        check_instruction("LW $12, ($SP)", "0cfe")
+        check_instruction("LW $0, ($12)", "00ce")
+        check_instruction("LW $1, ($SP)", "01fe")
+
+        # Randomly choosen instructions
+        check_instruction("LW $1, ($0)", "010e")
+        check_instruction("LW $7, ($12)", "07ce")
+        check_instruction("LW $TP, ($2)", "0d2e")
+        check_instruction("LW $5, ($2)", "052e")
+        check_instruction("LW $10, ($2)", "0a2e")
+
+    def test_LHU(self):
+        """Test the LHU instruction"""
+
+        # Top instructions
+        check_instruction("LHU $12, ($1)", "0c1f")
+        check_instruction("LHU $11, ($4)", "0b4f")
+        check_instruction("LHU $11, ($3)", "0b3f")
+        check_instruction("LHU $12, ($8)", "0c8f")
+        check_instruction("LHU $12, ($4)", "0c4f")
+
+        # Randomly choosen instructions
+        check_instruction("LHU $5, ($11)", "05bf")
+        check_instruction("LHU $12, ($3)", "0c3f")
+        check_instruction("LHU $9, ($8)", "098f")
+        check_instruction("LHU $10, ($3)", "0a3f")
+        check_instruction("LHU $5, ($8)", "058f")