From 87ea8f0f0a95b8a7c9bd3e6db0d41ff7f624911b Mon Sep 17 00:00:00 2001 From: JanLJL Date: Wed, 11 Nov 2020 12:27:49 +0100 Subject: [PATCH] new instructions --- osaca/data/tx2.yml | 292 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 283 insertions(+), 9 deletions(-) diff --git a/osaca/data/tx2.yml b/osaca/data/tx2.yml index 95ace4c..d1a0cbe 100644 --- a/osaca/data/tx2.yml +++ b/osaca/data/tx2.yml @@ -80,24 +80,114 @@ instruction_forms: throughput: 0.33333333 latency: 1.0 # 1*p012 port_pressure: [[1, '012']] +- name: and + operands: + - class: register + prefix: x + - class: register + prefix: x + - class: register + prefix: x + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: and + operands: + - class: register + prefix: w + - class: register + prefix: w + - class: register + prefix: w + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: and + operands: + - class: register + prefix: x + - class: register + prefix: x + - class: immediate + imd: int + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: and + operands: + - class: register + prefix: w + - class: register + prefix: w + - class: immediate + imd: int + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: mul + operands: + - class: register + prefix: x + - class: register + prefix: x + - class: register + prefix: x + throughput: 1.0 + latency: 4.0 # 1*p1 + port_pressure: [[1, '1']] +- name: mul + operands: + - class: register + prefix: w + - class: register + prefix: w + - class: register + prefix: w + throughput: 1.0 + latency: 4.0 # 1*p1 + port_pressure: [[1, '1']] - name: b.ne operands: - class: identifier - throughput: 0.0 + throughput: 1.0 latency: 0.0 - port_pressure: [] + port_pressure: [[1, '2']] +- name: b.lt + operands: + - class: identifier + throughput: 1.0 + latency: 0.0 + port_pressure: [[1, '2']] +- name: b.hs + operands: + - class: identifier + throughput: 1.0 + latency: 0.0 + port_pressure: [[1, '2']] +- name: b.eq + operands: + - class: identifier + throughput: 1.0 + latency: 0.0 + port_pressure: [[1, '2']] +- name: b + operands: + - class: identifier + throughput: 1.0 + latency: 0.0 + port_pressure: [[1, '2']] - name: b.gt operands: - class: identifier - throughput: 0.0 + throughput: 1.0 latency: 0.0 - port_pressure: [] + port_pressure: [[1, '2']] - name: bne operands: - class: identifier - throughput: 0.0 + throughput: 1.0 latency: 0.0 - port_pressure: [] + port_pressure: [[1, '2']] - name: cmp operands: - class: register @@ -107,6 +197,15 @@ instruction_forms: throughput: 0.33333333 latency: 1.0 # 1*p012 port_pressure: [[1, '012']] +- name: cmp + operands: + - class: register + prefix: x + - class: immediate + imd: int + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] - name: cmp operands: - class: register @@ -126,6 +225,17 @@ instruction_forms: throughput: 0.5 latency: 5.0 # 1*p01 port_pressure: [[1, '01']] +- name: dup + operands: + - class: register + prefix: v + shape: d + - class: register + prefix: v + shape: d + throughput: 0.5 + latency: 5.0 # 1*p01 + port_pressure: [[1, '01']] - name: fadd operands: - class: register @@ -323,6 +433,28 @@ instruction_forms: throughput: 0.5 latency: 6.0 # 1*p01 port_pressure: [[1, '01']] +- name: lsl + operands: + - class: register + prefix: x + - class: register + prefix: x + - class: immediate + imd: int + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: lsl + operands: + - class: register + prefix: w + - class: register + prefix: w + - class: immediate + imd: int + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] - name: ldp operands: - class: register @@ -521,6 +653,15 @@ instruction_forms: throughput: 0.5 latency: 4.0 # 1*p34 port_pressure: [[1.0, '34']] +- name: ldr + operands: + - class: register + prefix: w + - class: register + prefix: w + throughput: 0.0 + latency: 0.0 + port_pressure: [] - name: ldr operands: - class: register @@ -548,15 +689,42 @@ instruction_forms: throughput: 0.0 latency: 0.0 port_pressure: [] +- name: mov + operands: + - class: register + prefix: w + - class: immediate + imd: int + throughput: 0.333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: mov + operands: + - class: register + prefix: x + - class: immediate + imd: int + throughput: 0.333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: mov + operands: + - class: register + prefix: w + - class: register + prefix: w + throughput: 0.333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] - name: mov operands: - class: register prefix: x - class: register prefix: x - throughput: 0.5 - latency: 1.0 # 1*p01 - port_pressure: [[1, '01']] + throughput: 0.333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] - name: mov operands: - class: register @@ -584,6 +752,43 @@ instruction_forms: throughput: ~ latency: ~ port_pressure: [] +- name: ret + operands: [] + throughput: 0.5 + latency: ~ # 1*p34 + port_pressure: [[1, '34']] +- name: stp + operands: + - class: register + prefix: w + - class: register + prefix: w + - class: memory + base: x + offset: '*' + index: '*' + scale: '*' + pre-indexed: false + post-indexed: false + throughput: 1.0 + latency: 0 # 2*p34+1*p5 + port_pressure: [[2, '34'], [1, '5']] +- name: stp + operands: + - class: register + prefix: x + - class: register + prefix: x + - class: memory + base: x + offset: '*' + index: '*' + scale: '*' + pre-indexed: false + post-indexed: false + throughput: 1.0 + latency: 0 # 2*p34+1*p5 + port_pressure: [[2, '34'], [1, '5']] - name: stp operands: - class: register @@ -660,6 +865,20 @@ instruction_forms: throughput: 1.0 latency: 4.0 # 1*p34+1*p5 port_pressure: [[1.0, '34'], [1.0, '5']] +- name: str + operands: + - class: register + prefix: w + - class: memory + base: x + offset: '*' + index: '*' + scale: '*' + pre-indexed: false + post-indexed: false + throughput: 1.0 + latency: 0 # 1*p34+1*p5 + port_pressure: [[1.0, '34'], [1.0, '5']] - name: str operands: - class: register @@ -744,6 +963,39 @@ instruction_forms: throughput: 1.0 latency: 0 # 1*p34+1*p5 port_pressure: [[1.0, '34'], [1.0, '5'], [1, '012']] +- name: subs + operands: + - class: register + prefix: x + - class: register + prefix: x + - class: immediate + imd: int + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: subs + operands: + - class: register + prefix: w + - class: register + prefix: w + - class: immediate + imd: int + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: sub + operands: + - class: register + prefix: x + - class: register + prefix: x + - class: immediate + imd: int + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] - name: sub operands: - class: register @@ -755,3 +1007,25 @@ instruction_forms: throughput: 0.33333333 latency: 1.0 # 1*p012 port_pressure: [[1, '012']] +- name: sub + operands: + - class: register + prefix: w + - class: register + prefix: w + - class: register + prefix: w + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']] +- name: sub + operands: + - class: register + prefix: x + - class: register + prefix: x + - class: register + prefix: x + throughput: 0.33333333 + latency: 1.0 # 1*p012 + port_pressure: [[1, '012']]