more instructions

This commit is contained in:
JanLJL
2019-08-29 18:54:28 +02:00
parent ff672fb5ec
commit fc06b968d8
3 changed files with 44 additions and 18 deletions

View File

@@ -161,6 +161,13 @@ instruction_forms:
throughput: 0.5
latency: 6.0 # 0 0DV 1 1DV 2 3 4 5
port_pressure: [0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0]
- latency: ~
name: "fmov"
operands:
- {class: "register", prefix: "s"}
- {class: "immediate", imd: "double"}
port_pressure: [0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0]
throughput: 0.5
- name: "fmul"
operands:
- class: "register"
@@ -366,6 +373,22 @@ instruction_forms:
throughput: 0.5
latency: 5.0 # 0 0DV 1 1DV 2 3 4 5
port_pressure: [0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0]
- name: "prfm"
operands:
- class: "prfop"
type: "pld"
target: "l1"
policy: "keep"
- class: "memory"
base: "x"
offset: "imd"
index: ~
scale: 1
pre-indexed: false
post-indexed: false
throughput: ~
latency: ~
port_pressure: ~
- name: "stp"
operands:
- class: "register"

View File

@@ -1,3 +1,5 @@
// mov x1, #111
// .byte 213,3,32,31
.LBB0_32:
ldp q4, q5, [x9, #-32]
ldp q6, q7, [x9], #64
@@ -20,5 +22,6 @@
fmov s0, -1.0e+0
fmov s1, #2.0f
prfm pldl1keep, [x26, #2112]
b.ne .LBB0_32
// mov x1, #222
// .byte 213,3,32,31

View File

@@ -131,24 +131,24 @@ class TestSemanticTools(unittest.TestCase):
def test_kernelDG_AArch64(self):
dg = KernelDG(self.kernel_AArch64, self.parser_AArch64, self.machine_model_tx2)
self.assertTrue(nx.algorithms.dag.is_directed_acyclic_graph(dg.dg))
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=2)), {6, 7})
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=3)), {8, 9})
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=4)), {5, 6, 7})
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=5)), {8, 9})
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=6)), 12)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=7)), 13)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=8)), 15)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=9)), 16)
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=10)), {12, 13})
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=11)), {15, 16})
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=12)), 14)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=13)), 14)
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=14))), 0)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=15)), 17)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=16)), 17)
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=17))), 0)
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=18))), 0)
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=4)), {8, 9})
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=5)), {10, 11})
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=6)), {7, 8, 9})
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=7)), {10, 11})
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=8)), 14)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=9)), 15)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=10)), 17)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=11)), 18)
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=12)), {14, 15})
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=13)), {17, 18})
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=14)), 16)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=15)), 16)
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=16))), 0)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=17)), 19)
self.assertEqual(next(dg.get_dependent_instruction_forms(line_number=18)), 19)
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=19))), 0)
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=20))), 0)
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=21))), 0)
def test_is_read_is_written_x86(self):
# independent form HW model