mirror of
https://github.com/RRZE-HPC/OSACA.git
synced 2026-01-04 18:20:09 +01:00
added instructions for BHIVE
This commit is contained in:
@@ -163,6 +163,16 @@ instruction_forms:
|
||||
port_pressure: [[1, '06']] # JH: assumed from SKX
|
||||
throughput: 0.5 # JH: measured on casclakesp2
|
||||
uops: 1
|
||||
- name: BT
|
||||
operands:
|
||||
- class: immediate
|
||||
imd: int
|
||||
- class: register
|
||||
name: gpr
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']] # JH: assumed from SKX
|
||||
throughput: 0.5 # JH: measured on casclakesp2
|
||||
uops: 1
|
||||
- name: BTS
|
||||
operands:
|
||||
- class: immediate
|
||||
@@ -369,6 +379,11 @@ instruction_forms:
|
||||
throughput: 0.25
|
||||
latency: 1.0
|
||||
port_pressure: [[1, '0156']]
|
||||
- name: lock
|
||||
operands: []
|
||||
throughput: 0.0
|
||||
latency: 0.0
|
||||
port_pressure: []
|
||||
- name: cmp
|
||||
operands:
|
||||
- class: register
|
||||
@@ -746,6 +761,15 @@ instruction_forms:
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: SAR
|
||||
operands:
|
||||
# assume implicit immediate (0)
|
||||
- class: register
|
||||
name: gpr
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: SARX
|
||||
operands:
|
||||
- class: register
|
||||
@@ -788,6 +812,15 @@ instruction_forms:
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: [shr, shl]
|
||||
# assume implicit immediate (0)
|
||||
operands:
|
||||
- class: register
|
||||
name: gpr
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: SHR
|
||||
operands:
|
||||
- class: immediate
|
||||
@@ -840,7 +873,7 @@ instruction_forms:
|
||||
throughput: 3.0
|
||||
latency: 16.0 # 1"*"p0+3"*"p0DV
|
||||
port_pressure: [[1, '0'], [3.0, [0DV]]]
|
||||
- name: subq
|
||||
- name: sub
|
||||
operands:
|
||||
- class: immediate
|
||||
imd: int
|
||||
@@ -849,6 +882,15 @@ instruction_forms:
|
||||
throughput: 0.25
|
||||
latency: 1.0 # 1"*"p0156
|
||||
port_pressure: [[1, '0156']]
|
||||
- name: sub
|
||||
operands:
|
||||
- class: register
|
||||
name: gpr
|
||||
- class: register
|
||||
name: gpr
|
||||
throughput: 0.25
|
||||
latency: 1.0 # 1"*"p0156
|
||||
port_pressure: [[1, '0156']]
|
||||
- name: TEST
|
||||
operands:
|
||||
- class: immediate
|
||||
@@ -4620,7 +4662,7 @@ instruction_forms:
|
||||
port_pressure: [[1, '23'], [1, ['2D', '3D']]] # ./generate_mov_entries.py csx
|
||||
throughput: 0.5 # ./generate_mov_entries.py csx
|
||||
uops: 2 # ./generate_mov_entries.py csx
|
||||
- name: mov # ./generate_mov_entries.py csx
|
||||
- name: [mov, movabs] # ./generate_mov_entries.py csx
|
||||
operands: # ./generate_mov_entries.py csx
|
||||
- class: immediate # ./generate_mov_entries.py csx
|
||||
imd: int # ./generate_mov_entries.py csx
|
||||
@@ -4630,7 +4672,7 @@ instruction_forms:
|
||||
port_pressure: [[1, '0156']] # ./generate_mov_entries.py csx
|
||||
throughput: 0.25 # ./generate_mov_entries.py csx
|
||||
uops: 1 # ./generate_mov_entries.py csx
|
||||
- name: mov # with store, simple AGU # ./generate_mov_entries.py csx
|
||||
- name: [mov, movabs] # with store, simple AGU # ./generate_mov_entries.py csx
|
||||
operands: # ./generate_mov_entries.py csx
|
||||
- class: immediate # ./generate_mov_entries.py csx
|
||||
imd: int # ./generate_mov_entries.py csx
|
||||
@@ -4643,7 +4685,7 @@ instruction_forms:
|
||||
port_pressure: [[1, '237'], [1, '4']] # ./generate_mov_entries.py csx
|
||||
throughput: 1.0 # ./generate_mov_entries.py csx
|
||||
uops: 2 # ./generate_mov_entries.py csx
|
||||
- name: mov # with store, complex AGU # ./generate_mov_entries.py csx
|
||||
- name: [mov, movabs] # with store, complex AGU # ./generate_mov_entries.py csx
|
||||
operands: # ./generate_mov_entries.py csx
|
||||
- class: immediate # ./generate_mov_entries.py csx
|
||||
imd: int # ./generate_mov_entries.py csx
|
||||
@@ -8738,6 +8780,17 @@ instruction_forms:
|
||||
port_pressure: [[1, '0156']] # model_importer.py SKX
|
||||
throughput: 0.25 # model_importer.py SKX
|
||||
uops: 0 # model_importer.py SKX
|
||||
- name: NOP
|
||||
operands:
|
||||
- class: memory
|
||||
base: '*'
|
||||
offset: '*'
|
||||
index: '*'
|
||||
scale: '*'
|
||||
latency: ~
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 0
|
||||
- name: INC # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: memory # model_importer.py SKX
|
||||
@@ -8767,6 +8820,14 @@ instruction_forms:
|
||||
port_pressure: [[3, '0156'], [2, '23']] # model_importer.py SKX
|
||||
throughput: 1.0 # model_importer.py SKX
|
||||
uops: 5 # model_importer.py SKX
|
||||
- name: [sete, setne, setg, setge, seta, setae]
|
||||
operands:
|
||||
- class: register
|
||||
name: gpr
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: SETB # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: memory # model_importer.py SKX
|
||||
@@ -8904,6 +8965,16 @@ instruction_forms:
|
||||
port_pressure: [[1, '0156'], [2, '06'], [1, '23'], [1, '237'], [1, '4']] # model_importer.py SKX
|
||||
throughput: 1.25 # model_importer.py SKX
|
||||
uops: 6 # model_importer.py SKX
|
||||
- name: SBB
|
||||
operands:
|
||||
- class: register
|
||||
name: gpr
|
||||
- class: register
|
||||
name: gpr
|
||||
latency: 2
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 2
|
||||
- name: SBB # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: immediate # model_importer.py SKX
|
||||
@@ -9791,7 +9862,7 @@ instruction_forms:
|
||||
port_pressure: [[1, '0156']] # model_importer.py SKX
|
||||
throughput: 0.25 # model_importer.py SKX
|
||||
uops: 10 # model_importer.py SKX
|
||||
- name: CDQ # model_importer.py SKX
|
||||
- name: [CDQ, CLTD] # model_importer.py SKX
|
||||
operands: [] # model_importer.py SKX
|
||||
latency: 1 # model_importer.py SKX
|
||||
port_pressure: [[1, '06']] # model_importer.py SKX
|
||||
@@ -9839,10 +9910,22 @@ instruction_forms:
|
||||
scale: '*' # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: gpr # model_importer.py SKX
|
||||
latency: ~ # model_importer.py SKX
|
||||
latency: 3 # model_importer.py SKX
|
||||
port_pressure: [[1, '1'], [1, '23'], [1, [2D, 3D]]] # model_importer.py SKX
|
||||
throughput: 1.0 # model_importer.py SKX
|
||||
uops: 2 # model_importer.py SKX
|
||||
- name: IMUL
|
||||
operands:
|
||||
- class: immediate
|
||||
imd: int
|
||||
- class: register
|
||||
name: gpr
|
||||
- class: register
|
||||
name: gpr
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1.0
|
||||
uops: 1
|
||||
- name: IMUL # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: memory # model_importer.py SKX
|
||||
@@ -10077,6 +10160,30 @@ instruction_forms:
|
||||
port_pressure: [[1, '0156'], [1, '1'], [1, '23'], [1, '237'], [1, '4']] # model_importer.py SKX
|
||||
throughput: 1.25 # model_importer.py SKX
|
||||
uops: 5 # model_importer.py SKX
|
||||
- name: [SHLD, SHRD]
|
||||
operands:
|
||||
- class: register #CL
|
||||
name: gpr
|
||||
- class: register
|
||||
name: gpr
|
||||
- class: register
|
||||
name: gpr
|
||||
latency: 5
|
||||
port_pressure: [[1, '0156'], [2, '06'], [1, '1']]
|
||||
throughput: 1.00
|
||||
uops: 4
|
||||
- name: [SHLD, SHRD]
|
||||
operands:
|
||||
- class: immediate
|
||||
imd: int
|
||||
- class: register
|
||||
name: gpr
|
||||
- class: register
|
||||
name: gpr
|
||||
latency: 5
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1.00
|
||||
uops: 1
|
||||
- name: SHLD # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
@@ -10140,7 +10247,17 @@ instruction_forms:
|
||||
latency: ~ # model_importer.py SKX
|
||||
port_pressure: [[1, '0156'], [1, '23'], [1, '237'], [1, '4']] # model_importer.py SKX
|
||||
throughput: 1.0 # model_importer.py SKX
|
||||
uops: 4 # model_importer.py SKX
|
||||
uops: 4
|
||||
- name: OR
|
||||
operands:
|
||||
- class: register
|
||||
name: gpr
|
||||
- class: register
|
||||
name: gpr
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: OR # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: immediate # model_importer.py SKX
|
||||
@@ -10664,6 +10781,29 @@ instruction_forms:
|
||||
port_pressure: [[1, '015']] # model_importer.py SKX
|
||||
throughput: 0.3333333333333333 # model_importer.py SKX
|
||||
uops: 1 # model_importer.py SKX
|
||||
- name: [CMPEQSS, CMPLTSS, CMPLESS, CMPUNORDSS, CMPNEQSS, CMPNLTSS, CMPNLESS, CMPORDSS] # pseudo op to CMPSS
|
||||
operands:
|
||||
- class: memory
|
||||
base: '*'
|
||||
offset: '*'
|
||||
index: '*'
|
||||
scale: '*'
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 4
|
||||
port_pressure: [[1, '015'], [1, '23'], [1, [2D, 3D]]]
|
||||
throughput: 0.5
|
||||
uops: 2
|
||||
- name: [CMPEQSS, CMPLTSS, CMPLESS, CMPUNORDSS, CMPNEQSS, CMPNLTSS, CMPNLESS, CMPORDSS] # pseudo op to CMPSS
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 4
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
uops: 1
|
||||
- name: FXSAVE64 # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: memory # model_importer.py SKX
|
||||
@@ -12144,6 +12284,30 @@ instruction_forms:
|
||||
port_pressure: [[1, '015']] # model_importer.py SKX
|
||||
throughput: 0.3333333333333333 # model_importer.py SKX
|
||||
uops: 1 # model_importer.py SKX
|
||||
- name: [CMPEQSD, CMPLTSD, CMPLESD, CMPUNORDSD, CMPNEQSD, CMPNLTSD, CMPNLESD, CMPORDSD] # pseudo op to CMPSD
|
||||
operands:
|
||||
- class: memory
|
||||
base: '*'
|
||||
offset: '*'
|
||||
index: '*'
|
||||
scale: '*'
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 4
|
||||
port_pressure: [[1, '015'], [1, '23'], [1, [2D, 3D]]]
|
||||
throughput: 0.5
|
||||
uops: 2
|
||||
- name: [CMPEQSD, CMPLTSD, CMPLESD, CMPUNORDSD, CMPNEQSD, CMPNLTSD, CMPNLESD, CMPORDSD] # pseudo op to CMPSD
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 4
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
uops: 1
|
||||
|
||||
- name: PMULHUW # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: memory # model_importer.py SKX
|
||||
@@ -15616,7 +15780,7 @@ instruction_forms:
|
||||
port_pressure: [[2, '0'], [6, '0156'], [4, '06'], [1, '23'], [1, '237'], [1, '4'], [4, '5']] # model_importer.py SKX
|
||||
throughput: 5.5 # model_importer.py SKX
|
||||
uops: 23 # model_importer.py SKX
|
||||
- name: CQO # model_importer.py SKX
|
||||
- name: [CQO, CQTO] # model_importer.py SKX
|
||||
operands: [] # model_importer.py SKX
|
||||
latency: 1 # model_importer.py SKX
|
||||
port_pressure: [[1, '06']] # model_importer.py SKX
|
||||
@@ -19074,6 +19238,18 @@ instruction_forms:
|
||||
port_pressure: [[1, '01']] # model_importer.py SKX
|
||||
throughput: 0.5 # model_importer.py SKX
|
||||
uops: 1 # model_importer.py SKX
|
||||
- name: [VCMPEQSS, VCMPGESS, VCMPLTSS, VCMPLESS, VCMPUNORDSS, VCMPNEQSS, VCMPNLTSS, VCMPNLESS, VCMPORDSS] # pseudo op to VCMPSS # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
latency: 4 # model_importer.py SKX
|
||||
port_pressure: [[1, '01']] # model_importer.py SKX
|
||||
throughput: 0.5 # model_importer.py SKX
|
||||
uops: 1 # model_importer.py SKX
|
||||
- name: VPSHUFLW # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: immediate # model_importer.py SKX
|
||||
@@ -19155,6 +19331,18 @@ instruction_forms:
|
||||
port_pressure: [[1, '01']] # model_importer.py SKX
|
||||
throughput: 0.5 # model_importer.py SKX
|
||||
uops: 1 # model_importer.py SKX
|
||||
- name: [VCMPEQSD, VCMPGESD, VCMPLTSD, VCMPLESD, VCMPUNORDSD, VCMPNEQSD, VCMPNLTSD, VCMPNLESD, VCMPORDSD] # pseudo op to VCMPSD # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
latency: 4 # model_importer.py SKX
|
||||
port_pressure: [[1, '01']] # model_importer.py SKX
|
||||
throughput: 0.5 # model_importer.py SKX
|
||||
uops: 1 # model_importer.py SKX
|
||||
- name: VPSLLQ # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
@@ -20313,6 +20501,18 @@ instruction_forms:
|
||||
port_pressure: [[1, '01']] # model_importer.py SKX
|
||||
throughput: 0.5 # model_importer.py SKX
|
||||
uops: 1 # model_importer.py SKX
|
||||
- name: [VCMPEQPS, VCMPGEPS, VCMPLTPS, VCMPLEPS, VCMPUNORDPS, VCMPNEQPS, VCMPNLTPS, VCMPNLEPS, VCMPORDPS] # pseudo op to VCMPPS # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
latency: 4 # model_importer.py SKX
|
||||
port_pressure: [[1, '01']] # model_importer.py SKX
|
||||
throughput: 0.5 # model_importer.py SKX
|
||||
uops: 1 # model_importer.py SKX
|
||||
- name: VCMPPS # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: immediate # model_importer.py SKX
|
||||
@@ -57595,6 +57795,18 @@ instruction_forms:
|
||||
port_pressure: [[1, '01'], [1, '23'], [1, [2D, 3D]]] # model_importer.py SKX
|
||||
throughput: 0.5 # model_importer.py SKX
|
||||
uops: 2 # model_importer.py SKX
|
||||
- name: VPSRLD # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: immediate # model_importer.py SKX
|
||||
imd: int # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
- class: register # model_importer.py SKX
|
||||
name: xmm # model_importer.py SKX
|
||||
latency: 1 # model_importer.py SKX
|
||||
port_pressure: [[1, '01']] # model_importer.py SKX
|
||||
throughput: 0.5 # model_importer.py SKX
|
||||
uops: 1 # model_importer.py SKX
|
||||
- name: VPSRLD # model_importer.py SKX
|
||||
operands: # model_importer.py SKX
|
||||
- class: immediate # model_importer.py SKX
|
||||
|
||||
@@ -422,6 +422,17 @@ instruction_forms:
|
||||
name: "eax"
|
||||
source: false
|
||||
destination: true
|
||||
- name: [cqo, cqto]
|
||||
operands: []
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "rax"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "rdx"
|
||||
source: false
|
||||
destination: true
|
||||
- name: [cltq, cdqe]
|
||||
operands: []
|
||||
hidden_operands:
|
||||
@@ -2639,7 +2650,7 @@ instruction_forms:
|
||||
source: true
|
||||
destination: true
|
||||
- name: [pxor]
|
||||
breaks_pedendency_on_equal_operands: true
|
||||
breaks_dependency_on_equal_operands: true
|
||||
operands:
|
||||
- class: "register"
|
||||
name: "xmm"
|
||||
@@ -2660,7 +2671,7 @@ instruction_forms:
|
||||
source: true
|
||||
destination: true
|
||||
- name: [pxor]
|
||||
breaks_pedendency_on_equal_operands: true
|
||||
breaks_dependency_on_equal_operands: true
|
||||
operands:
|
||||
- class: "register"
|
||||
name: "mm"
|
||||
@@ -3321,6 +3332,42 @@ instruction_forms:
|
||||
name: "ID"
|
||||
source: true
|
||||
destination: false
|
||||
- name: sbb
|
||||
operands:
|
||||
- class: "register"
|
||||
name: "gpr"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "gpr"
|
||||
source: true
|
||||
destination: true
|
||||
hidden_operands:
|
||||
- class: "flag"
|
||||
name: "OF"
|
||||
source: false
|
||||
destination: true
|
||||
- class: "flag"
|
||||
name: "SF"
|
||||
source: false
|
||||
destination: true
|
||||
- class: "flag"
|
||||
name: "ZF"
|
||||
source: false
|
||||
destination: true
|
||||
- class: "flag"
|
||||
name: "AF"
|
||||
source: false
|
||||
destination: true
|
||||
- class: "flag"
|
||||
name: "PF"
|
||||
source: false
|
||||
destination: true
|
||||
- class: "flag"
|
||||
name: "CF"
|
||||
source: true
|
||||
destination: true
|
||||
operation: "op2['value'] -= (op1['value'])" # + CF['value'])" TODO
|
||||
- name: sub
|
||||
operands:
|
||||
- class: "immediate"
|
||||
@@ -3358,7 +3405,7 @@ instruction_forms:
|
||||
destination: true
|
||||
operation: "op2['value'] -= op1['value']"
|
||||
- name: sub
|
||||
breaks_pedendency_on_equal_operands: true
|
||||
breaks_dependency_on_equal_operands: true
|
||||
operands:
|
||||
- class: "register"
|
||||
name: "gpr"
|
||||
@@ -3846,7 +3893,7 @@ instruction_forms:
|
||||
source: false
|
||||
destination: true
|
||||
- name: vzeroall
|
||||
breaks_pedendency_on_equal_operands: true
|
||||
breaks_dependency_on_equal_operands: true
|
||||
operands: []
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
@@ -4003,7 +4050,7 @@ instruction_forms:
|
||||
source: true
|
||||
destination: true
|
||||
- name: [xorps, xorpd]
|
||||
breaks_pedendency_on_equal_operands: true
|
||||
breaks_dependency_on_equal_operands: true
|
||||
operands:
|
||||
- class: "register"
|
||||
name: "xmm"
|
||||
@@ -4024,7 +4071,7 @@ instruction_forms:
|
||||
source: true
|
||||
destination: true
|
||||
- name: [vxorpd, vxorps]
|
||||
breaks_pedendency_on_equal_operands: true
|
||||
breaks_dependency_on_equal_operands: true
|
||||
operands:
|
||||
- class: "register"
|
||||
name: "*"
|
||||
@@ -4039,7 +4086,7 @@ instruction_forms:
|
||||
source: false
|
||||
destination: true
|
||||
- name: xor
|
||||
breaks_pedendency_on_equal_operands: true
|
||||
breaks_dependency_on_equal_operands: true
|
||||
operands:
|
||||
- class: "register"
|
||||
name: "gpr"
|
||||
|
||||
Reference in New Issue
Block a user