From abf8b674bef8920cbf1d1729fa35cc57f19f7a5f Mon Sep 17 00:00:00 2001 From: JanLJL Date: Wed, 24 Jul 2019 10:58:13 +0200 Subject: [PATCH] more data --- osaca/data/csl.yml | 227 ++++++++++++++++++++++++++++++++++--- osaca/data/isa/AArch64.yml | 75 ++++++++++++ osaca/data/isa/x86.yml | 74 ++++++++++++ osaca/data/vulcan.yml | 197 +++++++++++++++++++++++++++++--- 4 files changed, 545 insertions(+), 28 deletions(-) diff --git a/osaca/data/csl.yml b/osaca/data/csl.yml index 1508fef..6a4a91b 100644 --- a/osaca/data/csl.yml +++ b/osaca/data/csl.yml @@ -59,21 +59,21 @@ instruction_forms: port_pressure: [0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] - name: addl operands: - - class: "register" - name: "xmm" - class: "immediate" - name: "int" + imd: "int" + - class: "register" + name: "gpr" throughput: 0.25 - latency: ~ # 0 0DV 1 2 3 4 5 6 7 + latency: 1.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.25, 0.0, 0.25, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0] - name: addq operands: - - class: "register" - name: "xmm" - class: "immediate" - name: "int" + imd: "int" + - class: "register" + name: "gpr" throughput: 0.25 - latency: ~ # 0 0DV 1 2 3 4 5 6 7 + latency: 1.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.25, 0.0, 0.25, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0] - name: cmpl operands: @@ -84,12 +84,39 @@ instruction_forms: throughput: 0.25 latency: ~ # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.25, 0.0, 0.25, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0] + - name: cmpq + operands: + - class: "register" + name: "gpr" + - class: "register" + name: "gpr" + throughput: 0.25 + latency: ~ # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.25, 0.0, 0.25, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0] + - name: cmpq + operands: + - class: "register" + name: "gpr" + - class: "memory" + base: "gpr" + offset: "imd" + index: ~ + scale: 1 + throughput: 0.5 + latency: ~ # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.25, 0.0, 0.25, 0.5, 0.5, 0.0, 0.25, 0.25, 0.0] - name: ja operands: - class: 'identifier' throughput: 0.0 latency: 0.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + - name: jne + operands: + - class: 'identifier' + throughput: 0.0 + latency: 0.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] - name: mulsd operands: - class: "register" @@ -135,6 +162,54 @@ instruction_forms: throughput: 3.0 latency: 16.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [1.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + - name: subq + operands: + - class: "immediate" + imd: "int" + - class: "register" + name: "gpr" + throughput: 0.25 + latency: 1.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.25, 0.0, 0.25, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0] + - name: vaddpd + operands: + - class: "register" + name: "ymm" + - class: "register" + name: "ymm" + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 5.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + - name: vaddpd + operands: + - class: "memory" + base: "gpr" + offset: ~ + index: "gpr" + scale: 1 + - class: "register" + name: "ymm" + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 8.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.5, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] + - name: vaddpd + operands: + - class: "memory" + base: "gpr" + offset: "imd" + index: "gpr" + scale: 1 + - class: "register" + name: "ymm" + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 8.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.5, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] - name: vaddsd operands: - class: "register" @@ -179,6 +254,48 @@ instruction_forms: throughput: 3.0 latency: 11.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [1.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + - name: vfmadd213pd + operands: + - class: "memory" + base: "gpr" + offset: ~ + index: "gpr" + scale: 1 + - class: "register" + name: "ymm" + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 4.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.5, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] + - name: vfmadd231pd + operands: + - class: "memory" + base: "gpr" + offset: "imd" + index: "gpr" + scale: 1 + - class: "register" + name: "ymm" + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 4.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.5, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] + - name: vfmadd231pd + operands: + - class: "memory" + base: "gpr" + offset: ~ + index: "gpr" + scale: 1 + - class: "register" + name: "ymm" + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 4.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.5, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] - name: vfmadd132pd operands: - class: "memory" @@ -191,7 +308,7 @@ instruction_forms: - class: "register" name: "ymm" throughput: 0.5 - latency: ~ # 0 0DV 1 2 3 4 5 6 7 + latency: 4.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.5, 0.0, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] - name: vmulsd operands: @@ -215,6 +332,17 @@ instruction_forms: throughput: 0.5 latency: 4.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + - name: vmulpd + operands: + - class: "register" + name: "ymm" + - class: "register" + name: "ymm" + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 4.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] - name: vmovapd operands: - class: "memory" @@ -225,7 +353,7 @@ instruction_forms: - class: "register" name: "xmm" throughput: 0.5 - latency: ~ # 0 0DV 1 2 3 4 5 6 7 + latency: 2.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] - name: vmovapd operands: @@ -237,7 +365,7 @@ instruction_forms: index: "gpr" scale: 1 throughput: 1.0 - latency: ~ # 0 0DV 1 2 3 4 5 6 7 + latency: 3.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 1.0, 0.0, 0.0, 0.0] - name: vmovapd operands: @@ -249,7 +377,19 @@ instruction_forms: - class: "register" name: "ymm" throughput: 0.5 - latency: ~ # 0 0DV 1 2 3 4 5 6 7 + latency: 3.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] + - name: vmovapd + operands: + - class: "memory" + base: "gpr" + offset: "imd" + index: "gpr" + scale: 1 + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 3.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] - name: vmovapd operands: @@ -261,7 +401,66 @@ instruction_forms: index: "gpr" scale: 1 throughput: 1.0 - latency: ~ # 0 0DV 1 2 3 4 5 6 7 + latency: 3.0 # 0 0DV 1 2 3 4 5 6 7 port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 1.0, 0.0, 0.0, 0.0] - + - name: vmovapd + operands: + - class: "register" + name: "ymm" + - class: "memory" + base: "gpr" + offset: "imd" + index: "gpr" + scale: 1 + throughput: 1.0 + latency: 3.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 1.0, 0.0, 0.0, 0.0] + - name: vmovupd + operands: + - class: "register" + name: "ymm" + - class: "memory" + base: "gpr" + offset: ~ + index: "gpr" + scale: 1 + throughput: 1.0 + latency: 3.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 1.0, 0.0, 0.0, 0.0] + - name: vmovupd + operands: + - class: "register" + name: "ymm" + - class: "memory" + base: "gpr" + offset: "imd" + index: "gpr" + scale: 1 + throughput: 1.0 + latency: 3.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 1.0, 0.0, 0.0, 0.0] + - name: vmovupd + operands: + - class: "memory" + base: "gpr" + offset: ~ + index: "gpr" + scale: 1 + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 3.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] + - name: vmovupd + operands: + - class: "memory" + base: "gpr" + offset: "imd" + index: "gpr" + scale: 1 + - class: "register" + name: "ymm" + throughput: 0.5 + latency: 3.0 # 0 0DV 1 2 3 4 5 6 7 + port_pressure: [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0] diff --git a/osaca/data/isa/AArch64.yml b/osaca/data/isa/AArch64.yml index 66e60df..f5878bf 100644 --- a/osaca/data/isa/AArch64.yml +++ b/osaca/data/isa/AArch64.yml @@ -191,3 +191,78 @@ instruction_forms: post-indexed: false source: false destination: true + - name: "str" + operands: + - class: "register" + prefix: "x" + source: true + destination: false + - class: "memory" + base: "x" + offset: ~ + index: ~ + scale: 1 + pre-indexed: false + post-indexed: false + source: false + destination: true + - name: "str" + operands: + - class: "register" + prefix: "q" + source: true + destination: false + - class: "memory" + base: "x" + offset: ~ + index: "x" + scale: 1 + pre-indexed: false + post-indexed: false + source: false + destination: true + - name: "str" + operands: + - class: "register" + prefix: "q" + source: true + destination: false + - class: "memory" + base: "x" + offset: ~ + index: ~ + scale: 1 + pre-indexed: false + post-indexed: false + source: false + destination: true + - name: "str" + operands: + - class: "register" + prefix: "x" + source: true + destination: false + - class: "memory" + base: "x" + offset: ~ + index: "x" + scale: 1 + pre-indexed: false + post-indexed: true + source: false + destination: true + - name: "str" + operands: + - class: "register" + prefix: "x" + source: true + destination: false + - class: "memory" + base: "x" + offset: ~ + index: "x" + scale: 1 + pre-indexed: false + post-indexed: false + source: false + destination: true diff --git a/osaca/data/isa/x86.yml b/osaca/data/isa/x86.yml index 57f9199..c95fa8a 100644 --- a/osaca/data/isa/x86.yml +++ b/osaca/data/isa/x86.yml @@ -35,6 +35,29 @@ instruction_forms: name: "gpr" source: true destination: false + - name: cmpq + operands: + - class: "register" + name: "gpr" + source: true + destination: false + - class: "register" + name: "gpr" + source: true + destination: false + - name: cmpq + operands: + - class: "register" + name: "gpr" + source: true + destination: false + - class: "memory" + base: "gpr" + offset: "imd" + index: ~ + scale: 1 + source: true + destination: false - name: ja operands: - class: "identifier" @@ -87,4 +110,55 @@ instruction_forms: name: "ymm" source: true destination: true + - name: vfmadd213pd + operands: + - class: "memory" + base: "gpr" + offset: ~ + index: "gpr" + scale: 1 + source: true + destination: false + - class: "register" + name: "ymm" + source: true + destination: false + - class: "register" + name: "ymm" + source: true + destination: true + - name: vfmadd231pd + operands: + - class: "memory" + base: "gpr" + offset: "imd" + index: "gpr" + scale: 1 + source: true + destination: false + - class: "register" + name: "ymm" + source: true + destination: false + - class: "register" + name: "ymm" + source: true + destination: true + - name: vfmadd231pd + operands: + - class: "memory" + base: "gpr" + offset: ~ + index: "gpr" + scale: 1 + source: true + destination: false + - class: "register" + name: "ymm" + source: true + destination: false + - class: "register" + name: "ymm" + source: true + destination: true diff --git a/osaca/data/vulcan.yml b/osaca/data/vulcan.yml index 17f7f9d..f24fab7 100644 --- a/osaca/data/vulcan.yml +++ b/osaca/data/vulcan.yml @@ -2,17 +2,17 @@ osaca_version: 0.3.0 micro_architecture: "Vulcan" isa: "AArch64" port_model_scheme: | - ┌---------------------------------------------------------------┐ - | 60 entry unified scheduler | - └---------------------------------------------------------------┘ - 0 | 1 | 2 | 3 | 4 | 5 | - ▼ ▼ ▼ ▼ ▼ ▼ - ┌------┐ ┌------┐ ┌------┐ ┌-------┐ ┌-------┐ ┌---------┐ - | ALU | | ALU | | ALU/ | | LD/ST | | LD/ST | | ST Data | - └------┘ └------┘ | BR | └-------┘ └-------┘ └---------┘ - ┌------┐ ┌------┐ └------┘ - | FP/ | | FP/ | - | NEON | | NEON | + ┌-----------------------------------------------------------┐ + | 60 entry unified scheduler | + └-----------------------------------------------------------┘ + 0 | 1 | 2 | 3 | 4 | 5 | + ▼ ▼ ▼ ▼ ▼ ▼ + ┌------┐ ┌------┐ ┌------┐ ┌------┐ ┌------┐ ┌------┐ + | ALU | | ALU | | ALU/ | | LD | | LD | | ST | + └------┘ └------┘ | BR | └------┘ └------┘ └------┘ + ┌------┐ ┌------┐ └------┘ ┌------┐ ┌------┐ + | FP/ | | FP/ | | AGU | | AGU | + | NEON | | NEON | └------┘ └------┘ └------┘ └------┘ ┌------┐ | INT | @@ -57,7 +57,21 @@ instruction_forms: throughput: 0.33333333 latency: 1.0 # 0 0DV 1 1DV 2 3 4 5 port_pressure: [0.33333333, 0.0, 0.33333333, 0.0, 0.33333333, 0.0, 0.0, 0.0] - + - name: "bne" + operands: + - class: 'identifier' + throughput: 0.0 + latency: 0.0 # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0, 0, 0, 0, 0, 0, 0, 0] + - name: "cmp" + operands: + - class: "register" + prefix: "x" + - class: "register" + prefix: "x" + throughput: 0.33333333 + latency: 0.0 # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.33333333, 0.0, 0.33333333, 0.0, 0.33333333, 0.0, 0.0, 0.0] - name: "fadd" operands: - class: "register" @@ -262,6 +276,59 @@ instruction_forms: throughput: 1.0 latency: ~ # 0 0DV 1 1DV 2 3 4 5 port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0] + - name: "ldr" + operands: + - class: "register" + prefix: "x" + - class: "memory" + base: "x" + offset: ~ + index: "x" + scale: 1 + pre-indexed: false + post-indexed: false + throughput: 0.5 + latency: 4.0 # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0] + - name: "ldr" + operands: + - class: "register" + prefix: "q" + - class: "memory" + base: "x" + offset: ~ + index: "x" + scale: 1 + pre-indexed: false + post-indexed: false + throughput: 0.5 + latency: 4.0 # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0] + - name: "ldr" + operands: + - class: "register" + prefix: "x" + - class: "memory" + base: "x" + offset: ~ + index: ~ + scale: 1 + pre-indexed: false + post-indexed: false + throughput: 0.5 + latency: 4.0 # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0] + - name: "mov" + operands: + - class: "register" + prefix: "v" + shape: "b" + - class: "register" + prefix: "v" + shape: "b" + 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: "stp" operands: - class: "register" @@ -294,6 +361,22 @@ instruction_forms: throughput: 2.0 latency: ~ # 0 0DV 1 1DV 2 3 4 5 port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 0.0] + - name: "stp" + operands: + - class: "register" + prefix: "q" + - class: "register" + prefix: "q" + - class: "memory" + base: "x" + offset: ~ + index: ~ + scale: 1 + pre-indexed: false + post-indexed: true + throughput: 2.0 + latency: ~ # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 2.0] - name: "stp" operands: - class: "register" @@ -309,7 +392,23 @@ instruction_forms: post-indexed: false throughput: 2.0 latency: ~ # 0 0DV 1 1DV 2 3 4 5 - port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 0.0] + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 2.0] + - name: "ldp" + operands: + - class: "register" + prefix: "q" + - class: "register" + prefix: "q" + - class: "memory" + base: "x" + offset: ~ + index: ~ + scale: 1 + pre-indexed: false + post-indexed: false + throughput: 1.0 + latency: ~ # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0] - name: "stp" operands: - class: "register" @@ -325,4 +424,74 @@ instruction_forms: post-indexed: false throughput: 2.0 latency: ~ # 0 0DV 1 1DV 2 3 4 5 - port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 0.0] + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 2.0] + - name: "str" + operands: + - class: "register" + prefix: "x" + - class: "memory" + base: "x" + offset: ~ + index: ~ + scale: 1 + pre-indexed: false + post-indexed: false + throughput: 1.0 + latency: ~ # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0] + - name: "str" + operands: + - class: "register" + prefix: "q" + - class: "memory" + base: "x" + offset: ~ + index: "x" + scale: 1 + pre-indexed: false + post-indexed: false + throughput: 1.0 + latency: ~ # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.0] + - name: "str" + operands: + - class: "register" + prefix: "q" + - class: "memory" + base: "x" + offset: ~ + index: ~ + scale: 1 + pre-indexed: false + post-indexed: true + throughput: 1.0 + latency: ~ # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.0] + - name: "str" + operands: + - class: "register" + prefix: "x" + - class: "memory" + base: "x" + offset: ~ + index: ~ + scale: 1 + pre-indexed: false + post-indexed: true + throughput: 1.0 + latency: ~ # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.0] + - name: "str" + operands: + - class: "register" + prefix: "x" + - class: "memory" + base: "x" + offset: ~ + index: "x" + scale: 1 + pre-indexed: false + post-indexed: false + throughput: 1.0 + latency: ~ # 0 0DV 1 1DV 2 3 4 5 + port_pressure: [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.0]