mirror of
https://github.com/RRZE-HPC/OSACA.git
synced 2026-01-05 10:40:06 +01:00
Merge branch 'master' of github.com:RRZE-HPC/osaca
This commit is contained in:
@@ -170,18 +170,6 @@ instruction_forms:
|
||||
port_pressure: [[3, '0156']]
|
||||
throughput: 0.75
|
||||
uops: 3
|
||||
- name: '{store} SHRD'
|
||||
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: wait
|
||||
operands: []
|
||||
latency: 1
|
||||
@@ -222,6 +210,62 @@ instruction_forms:
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: cbtw # AT&T version of CBW
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: cwtl # AT&T version of CWDE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: cwtd # AT&T version of CWD
|
||||
operands: []
|
||||
latency: 2
|
||||
port_pressure: [[1, '0156'], [1, '06']]
|
||||
throughput: 0.75
|
||||
uops: 2
|
||||
- name: cltd # AT&T version of CDQ
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: cltq # AT&T version of CDQE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: cqtq # AT&T version of CQO
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: [cmpeqsd, cmpltsd, cmplesd, cmpunordsd, cmpneqsd, cmpnltsd, cmpnlesd, cmpordsd]
|
||||
# same as CMPSD xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: [cmpeqss, cmpltss, cmpless, cmpunordss, cmpneqss, cmpnltss, cmpnless, cmpordss]
|
||||
# same as CMPSS xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: cmpps
|
||||
operands:
|
||||
- class: immediate
|
||||
@@ -681,18 +725,38 @@ instruction_forms:
|
||||
port_pressure: [[1, '23'], [1, [2D, 3D]]]
|
||||
throughput: 0.5
|
||||
uops: 2
|
||||
|
||||
|
||||
- name: '{store} MOVDQA'
|
||||
- name: [vcmpeqsd, vcmpltsd, vcmplesd, vcmpunordsd, vcmpneqsd, vcmpnltsd, vcmpnlesd, vcmpordsd,
|
||||
vcmpeq_uqsd, vcmpngesd, vcmpngtsd, vcmpfalsesd, vcmpneq_oqsd, vcmpgesd, vcmpgtsd,
|
||||
vcmptruesd, vcmpeq_ossd, vcmplt_oqsd, vcmple_oqsd, vcmpunord_ssd, vcmpneq_ussd,
|
||||
vcmpnlt_uqsd, vcmpnle_uqsd, vcmpord_ssd, vcmpeq_ussd, vcmpnge_uqsd, vcmpngt_uqsd,
|
||||
vcmpfalse_ossd, vcmpneq_ossd, vcmpge_oqsd, vcmpgt_oqsd, vcmptrue_ussd]
|
||||
# same as VCMPSD xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 0
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
uops: 1
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: [vcmpeqss, vcmpltss, vcmpless, vcmpunordss, vcmpneqss, vcmpnltss, vcmpnless, vcmpordss,
|
||||
vcmpeq_uqss, vcmpngess, vcmpngtss, vcmpfalsess, vcmpneq_oqss, vcmpgess, vcmpgtss,
|
||||
vcmptruess, vcmpeq_osss, vcmplt_oqss, vcmple_oqss, vcmpunord_sss, vcmpneq_usss,
|
||||
vcmpnlt_uqss, vcmpnle_uqss, vcmpord_sss, vcmpeq_usss, vcmpnge_uqss, vcmpngt_uqss,
|
||||
vcmpfalse_osss, vcmpneq_osss, vcmpge_oqss, vcmpgt_oqss, vcmptrue_usss]
|
||||
# same as VCMPSS xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: vcvtss2sd
|
||||
operands:
|
||||
- class: register
|
||||
@@ -28500,6 +28564,17 @@ instruction_forms:
|
||||
throughput: 0.25 # ./generate_mov_entries.py bdw
|
||||
uops: 1 # ./generate_mov_entries.py bdw
|
||||
# ./generate_mov_entries.py bdw
|
||||
- name: movabs # ./generate_mov_entries.py bdw
|
||||
operands: # ./generate_mov_entries.py bdw
|
||||
- class: immediate # ./generate_mov_entries.py bdw
|
||||
imd: int # ./generate_mov_entries.py bdw
|
||||
- class: register # ./generate_mov_entries.py bdw
|
||||
name: gpr # ./generate_mov_entries.py bdw
|
||||
latency: 1 # ./generate_mov_entries.py bdw
|
||||
port_pressure: [[1, '0156']] # ./generate_mov_entries.py bdw
|
||||
throughput: 0.25 # ./generate_mov_entries.py bdw
|
||||
uops: 1 # ./generate_mov_entries.py bdw
|
||||
# ./generate_mov_entries.py bdw
|
||||
- name: mov # with store, simple AGU # ./generate_mov_entries.py bdw
|
||||
operands: # ./generate_mov_entries.py bdw
|
||||
- class: immediate # ./generate_mov_entries.py bdw
|
||||
|
||||
@@ -209,6 +209,42 @@ instruction_forms:
|
||||
port_pressure: [[1, '01']] # uops.info (measured)
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: cbtw # AT&T version of CBW
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: cwtl # AT&T version of CWDE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: cwtd # AT&T version of CWD
|
||||
operands: []
|
||||
latency: 2
|
||||
port_pressure: [[1, '0156'], [1, '06']]
|
||||
throughput: 0.75
|
||||
uops: 2
|
||||
- name: cltd # AT&T version of CDQ
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: cltq # AT&T version of CDQE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: cqtq # AT&T version of CQO
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: cmp
|
||||
operands:
|
||||
- class: register
|
||||
@@ -228,6 +264,26 @@ instruction_forms:
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: [cmpeqsd, cmpltsd, cmplesd, cmpunordsd, cmpneqsd, cmpnltsd, cmpnlesd, cmpordsd]
|
||||
# same as CMPSD xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
- name: [cmpeqss, cmpltss, cmpless, cmpunordss, cmpneqss, cmpnltss, cmpnless, cmpordss]
|
||||
# same as CMPSS xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 4
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
- name: cmppd
|
||||
operands:
|
||||
- class: immediate
|
||||
@@ -526,6 +582,38 @@ instruction_forms:
|
||||
throughput: 0.5
|
||||
latency: 4.0 # 1"*"p01
|
||||
port_pressure: [[1, '01']]
|
||||
- name: [vcmpeqsd, vcmpltsd, vcmplesd, vcmpunordsd, vcmpneqsd, vcmpnltsd, vcmpnlesd, vcmpordsd,
|
||||
vcmpeq_uqsd, vcmpngesd, vcmpngtsd, vcmpfalsesd, vcmpneq_oqsd, vcmpgesd, vcmpgtsd,
|
||||
vcmptruesd, vcmpeq_ossd, vcmplt_oqsd, vcmple_oqsd, vcmpunord_ssd, vcmpneq_ussd,
|
||||
vcmpnlt_uqsd, vcmpnle_uqsd, vcmpord_ssd, vcmpeq_ussd, vcmpnge_uqsd, vcmpngt_uqsd,
|
||||
vcmpfalse_ossd, vcmpneq_ossd, vcmpge_oqsd, vcmpgt_oqsd, vcmptrue_ussd]
|
||||
# same as VCMPSD xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 4
|
||||
port_pressure: [[1, '01']]
|
||||
throughput: 1
|
||||
- name: [vcmpeqss, vcmpltss, vcmpless, vcmpunordss, vcmpneqss, vcmpnltss, vcmpnless, vcmpordss,
|
||||
vcmpeq_uqss, vcmpngess, vcmpngtss, vcmpfalsess, vcmpneq_oqss, vcmpgess, vcmpgtss,
|
||||
vcmptruess, vcmpeq_osss, vcmplt_oqss, vcmple_oqss, vcmpunord_sss, vcmpneq_usss,
|
||||
vcmpnlt_uqss, vcmpnle_uqss, vcmpord_sss, vcmpeq_usss, vcmpnge_uqss, vcmpngt_uqss,
|
||||
vcmpfalse_osss, vcmpneq_osss, vcmpge_oqss, vcmpgt_oqss, vcmptrue_usss]
|
||||
# same as VCMPSS xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 4
|
||||
port_pressure: [[1, '01']]
|
||||
throughput: 1
|
||||
- name: vcvtsi2ss
|
||||
operands:
|
||||
- class: register
|
||||
@@ -627,39 +715,6 @@ instruction_forms:
|
||||
throughput: 0.5
|
||||
latency: 4.0 # 1"*"p01
|
||||
port_pressure: [[1, '05']]
|
||||
- name: vpsrld # JH: assumed from SKX
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 1
|
||||
port_pressure: [[1, '0'], [1, '15']]
|
||||
throughput: 1
|
||||
- name: VXORPS # JH: assumed from SKX
|
||||
operands:
|
||||
- class: register
|
||||
name: ymm
|
||||
- class: register
|
||||
name: ymm
|
||||
- class: register
|
||||
name: ymm
|
||||
latency: 1
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
- name: VXORPD # JH: assumed from SKX
|
||||
operands:
|
||||
- class: register
|
||||
name: ymm
|
||||
- class: register
|
||||
name: ymm
|
||||
- class: register
|
||||
name: ymm
|
||||
latency: 1
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
- name: wait
|
||||
operands: []
|
||||
latency: 1
|
||||
@@ -82603,6 +82658,17 @@ instruction_forms:
|
||||
throughput: 0.25 # ./generate_mov_entries.py csx
|
||||
uops: 1 # ./generate_mov_entries.py csx
|
||||
# ./generate_mov_entries.py csx
|
||||
- name: 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
|
||||
- class: register # ./generate_mov_entries.py csx
|
||||
name: gpr # ./generate_mov_entries.py csx
|
||||
latency: 1 # ./generate_mov_entries.py csx
|
||||
port_pressure: [[1, '0156']] # ./generate_mov_entries.py csx
|
||||
throughput: 0.25 # ./generate_mov_entries.py csx
|
||||
uops: 1 # ./generate_mov_entries.py csx
|
||||
# ./generate_mov_entries.py csx
|
||||
- name: mov # with store, simple AGU # ./generate_mov_entries.py csx
|
||||
operands: # ./generate_mov_entries.py csx
|
||||
- class: immediate # ./generate_mov_entries.py csx
|
||||
|
||||
@@ -148,6 +148,7 @@ snb_mov_instructions = [
|
||||
('mov mem gpr', ('', 0)),
|
||||
('mov imd gpr', ('1*p015', 1)),
|
||||
('mov imd mem', ('', 0)),
|
||||
('movabs imd gpr', ('1*p015', 1)), # AT&T version
|
||||
|
||||
# https://www.felixcloutier.com/x86/movapd
|
||||
('movapd xmm xmm', ('1*p5', 1)),
|
||||
@@ -533,6 +534,7 @@ hsw_mov_instructions = list(OrderedDict(ivb_mov_instructions + [
|
||||
# https://www.felixcloutier.com/x86/mov
|
||||
('mov imd gpr', ('1*p0156', 1)),
|
||||
('mov gpr gpr', ('1*p0156', 1)),
|
||||
('movabs imd gpr', ('1*p0156', 1)), # AT&T version
|
||||
|
||||
# https://www.felixcloutier.com/x86/movbe
|
||||
('movbe gpr mem', ('1*p15', 6)),
|
||||
|
||||
@@ -191,6 +191,62 @@ instruction_forms:
|
||||
port_pressure: [[1, '0156'], [1, '23']]
|
||||
throughput: 0.5
|
||||
uops: 3
|
||||
- name: cbtw # AT&T version of CBW
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: cwtl # AT&T version of CWDE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: cwtd # AT&T version of CWD
|
||||
operands: []
|
||||
latency: 2
|
||||
port_pressure: [[1, '0156'], [1, '06']]
|
||||
throughput: 0.75
|
||||
uops: 2
|
||||
- name: cltd # AT&T version of CDQ
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: cltq # AT&T version of CDQE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '0156']]
|
||||
throughput: 0.25
|
||||
uops: 1
|
||||
- name: cqtq # AT&T version of CQO
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '06']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: [cmpeqsd, cmpltsd, cmplesd, cmpunordsd, cmpneqsd, cmpnltsd, cmpnlesd, cmpordsd]
|
||||
# same as CMPSD xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: [cmpeqss, cmpltss, cmpless, cmpunordss, cmpneqss, cmpnltss, cmpnless, cmpordss]
|
||||
# same as CMPSS xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: cmpps
|
||||
operands:
|
||||
- class: immediate
|
||||
@@ -375,6 +431,38 @@ instruction_forms:
|
||||
port_pressure: [[1, '1']] # JH: according to uops.info
|
||||
throughput: 1.0 # JH: measured on phinally
|
||||
uops: 1
|
||||
- name: [vcmpeqsd, vcmpltsd, vcmplesd, vcmpunordsd, vcmpneqsd, vcmpnltsd, vcmpnlesd, vcmpordsd,
|
||||
vcmpeq_uqsd, vcmpngesd, vcmpngtsd, vcmpfalsesd, vcmpneq_oqsd, vcmpgesd, vcmpgtsd,
|
||||
vcmptruesd, vcmpeq_ossd, vcmplt_oqsd, vcmple_oqsd, vcmpunord_ssd, vcmpneq_ussd,
|
||||
vcmpnlt_uqsd, vcmpnle_uqsd, vcmpord_ssd, vcmpeq_ussd, vcmpnge_uqsd, vcmpngt_uqsd,
|
||||
vcmpfalse_ossd, vcmpneq_ossd, vcmpge_oqsd, vcmpgt_oqsd, vcmptrue_ussd]
|
||||
# same as VCMPSD xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: [vcmpeqss, vcmpltss, vcmpless, vcmpunordss, vcmpneqss, vcmpnltss, vcmpnless, vcmpordss,
|
||||
vcmpeq_uqss, vcmpngess, vcmpngtss, vcmpfalsess, vcmpneq_oqss, vcmpgess, vcmpgtss,
|
||||
vcmptruess, vcmpeq_osss, vcmplt_oqss, vcmple_oqss, vcmpunord_sss, vcmpneq_usss,
|
||||
vcmpnlt_uqss, vcmpnle_uqss, vcmpord_sss, vcmpeq_usss, vcmpnge_uqss, vcmpngt_uqss,
|
||||
vcmpfalse_osss, vcmpneq_osss, vcmpge_oqss, vcmpgt_oqss, vcmptrue_usss]
|
||||
# same as VCMPSS xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: vcvtss2sd
|
||||
operands:
|
||||
- class: register
|
||||
@@ -28288,6 +28376,17 @@ instruction_forms:
|
||||
throughput: 0.25 # ./generate_mov_entries.py hsw
|
||||
uops: 1 # ./generate_mov_entries.py hsw
|
||||
# ./generate_mov_entries.py hsw
|
||||
- name: movabs # ./generate_mov_entries.py hsw
|
||||
operands: # ./generate_mov_entries.py hsw
|
||||
- class: immediate # ./generate_mov_entries.py hsw
|
||||
imd: int # ./generate_mov_entries.py hsw
|
||||
- class: register # ./generate_mov_entries.py hsw
|
||||
name: gpr # ./generate_mov_entries.py hsw
|
||||
latency: 1 # ./generate_mov_entries.py hsw
|
||||
port_pressure: [[1, '0156']] # ./generate_mov_entries.py hsw
|
||||
throughput: 0.25 # ./generate_mov_entries.py hsw
|
||||
uops: 1 # ./generate_mov_entries.py hsw
|
||||
# ./generate_mov_entries.py hsw
|
||||
- name: mov # with store, simple AGU # ./generate_mov_entries.py hsw
|
||||
operands: # ./generate_mov_entries.py hsw
|
||||
- class: immediate # ./generate_mov_entries.py hsw
|
||||
|
||||
@@ -353,6 +353,91 @@ instruction_forms:
|
||||
scale: "*"
|
||||
source: true
|
||||
destination: true
|
||||
- name: cld
|
||||
operands: []
|
||||
hidden_operands:
|
||||
- class: "flag"
|
||||
name: "DF"
|
||||
source: false
|
||||
destination: true
|
||||
- name: cbtw
|
||||
operands: []
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "al"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "ax"
|
||||
source: false
|
||||
destination: true
|
||||
- name: cwtl
|
||||
operands: []
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "ax"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "eax"
|
||||
source: false
|
||||
destination: true
|
||||
- name: cwtd
|
||||
operands: []
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "ax"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "dx"
|
||||
source: false
|
||||
destination: true
|
||||
- class: "register"
|
||||
name: "ax"
|
||||
source: false
|
||||
destination: true
|
||||
- name: cltd
|
||||
operands: []
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "eax"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "edx"
|
||||
source: false
|
||||
destination: true
|
||||
- class: "register"
|
||||
name: "eax"
|
||||
source: false
|
||||
destination: true
|
||||
- name: cltq
|
||||
operands: []
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "eax"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "rax"
|
||||
source: false
|
||||
destination: true
|
||||
- name: cqtq
|
||||
operands: []
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "rax"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "rdx"
|
||||
source: false
|
||||
destination: true
|
||||
- class: "register"
|
||||
name: "rax"
|
||||
source: false
|
||||
destination: true
|
||||
- name: cmova
|
||||
operands:
|
||||
- class: "register"
|
||||
@@ -2197,6 +2282,69 @@ instruction_forms:
|
||||
name: "PF"
|
||||
source: false
|
||||
destination: true
|
||||
- name: cmpxchg
|
||||
operands:
|
||||
- class: "register"
|
||||
name: "gpr"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "gpr"
|
||||
source: true
|
||||
destination: true
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "rax"
|
||||
source: true
|
||||
destination: true
|
||||
- class: "flag"
|
||||
name: "ZF"
|
||||
source: true
|
||||
destination: true
|
||||
- name: cmpxchg
|
||||
operands:
|
||||
- class: "memory"
|
||||
base: "*"
|
||||
offset: "*"
|
||||
index: "*"
|
||||
scale: "*"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "register"
|
||||
name: "gpr"
|
||||
source: true
|
||||
destination: true
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "rax"
|
||||
source: true
|
||||
destination: true
|
||||
- class: "flag"
|
||||
name: "ZF"
|
||||
source: true
|
||||
destination: true
|
||||
- name: cmpxchg
|
||||
operands:
|
||||
- class: "register"
|
||||
name: "gpr"
|
||||
source: true
|
||||
destination: false
|
||||
- class: "memory"
|
||||
base: "*"
|
||||
offset: "*"
|
||||
index: "*"
|
||||
scale: "*"
|
||||
source: true
|
||||
destination: true
|
||||
hidden_operands:
|
||||
- class: "register"
|
||||
name: "rax"
|
||||
source: true
|
||||
destination: true
|
||||
- class: "flag"
|
||||
name: "ZF"
|
||||
source: true
|
||||
destination: true
|
||||
- name: dec
|
||||
operands:
|
||||
- class: "register"
|
||||
|
||||
@@ -175,6 +175,62 @@ instruction_forms:
|
||||
port_pressure: [[2, '015']]
|
||||
throughput: 0.6666666666666666
|
||||
uops: 3
|
||||
- name: cbtw # AT&T version of CBW
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
uops: 1
|
||||
- name: cwtl # AT&T version of CWDE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
uops: 1
|
||||
- name: cwtd # AT&T version of CWD
|
||||
operands: []
|
||||
latency: 2
|
||||
port_pressure: [[1, '015'], [1, '05']]
|
||||
throughput: 0.8333333333333333
|
||||
uops: 2
|
||||
- name: cltd # AT&T version of CDQ
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '05']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: cltq # AT&T version of CDQE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
uops: 1
|
||||
- name: cqtq # AT&T version of CQO
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '05']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: [cmpeqsd, cmpltsd, cmplesd, cmpunordsd, cmpneqsd, cmpnltsd, cmpnlesd, cmpordsd]
|
||||
# same as CMPSD xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: [cmpeqss, cmpltss, cmpless, cmpunordss, cmpneqss, cmpnltss, cmpnless, cmpordss]
|
||||
# same as CMPSS xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: cmpps
|
||||
operands:
|
||||
- class: immediate
|
||||
@@ -359,6 +415,38 @@ instruction_forms:
|
||||
port_pressure: [[1, '1']] # JH: according to uops.info
|
||||
throughput: 1.0 # JH: measured on phinally
|
||||
uops: 1
|
||||
- name: [vcmpeqsd, vcmpltsd, vcmplesd, vcmpunordsd, vcmpneqsd, vcmpnltsd, vcmpnlesd, vcmpordsd,
|
||||
vcmpeq_uqsd, vcmpngesd, vcmpngtsd, vcmpfalsesd, vcmpneq_oqsd, vcmpgesd, vcmpgtsd,
|
||||
vcmptruesd, vcmpeq_ossd, vcmplt_oqsd, vcmple_oqsd, vcmpunord_ssd, vcmpneq_ussd,
|
||||
vcmpnlt_uqsd, vcmpnle_uqsd, vcmpord_ssd, vcmpeq_ussd, vcmpnge_uqsd, vcmpngt_uqsd,
|
||||
vcmpfalse_ossd, vcmpneq_ossd, vcmpge_oqsd, vcmpgt_oqsd, vcmptrue_ussd]
|
||||
# same as VCMPSD xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: [vcmpeqss, vcmpltss, vcmpless, vcmpunordss, vcmpneqss, vcmpnltss, vcmpnless, vcmpordss,
|
||||
vcmpeq_uqss, vcmpngess, vcmpngtss, vcmpfalsess, vcmpneq_oqss, vcmpgess, vcmpgtss,
|
||||
vcmptruess, vcmpeq_osss, vcmplt_oqss, vcmple_oqss, vcmpunord_sss, vcmpneq_usss,
|
||||
vcmpnlt_uqss, vcmpnle_uqss, vcmpord_sss, vcmpeq_usss, vcmpnge_uqss, vcmpngt_uqss,
|
||||
vcmpfalse_osss, vcmpneq_osss, vcmpge_oqss, vcmpgt_oqss, vcmptrue_usss]
|
||||
# same as VCMPSS xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: vcvtss2sd
|
||||
operands:
|
||||
- class: register
|
||||
@@ -21001,6 +21089,17 @@ instruction_forms:
|
||||
throughput: 0.0 # ./generate_mov_entries.py ivb
|
||||
uops: 0 # ./generate_mov_entries.py ivb
|
||||
# ./generate_mov_entries.py ivb
|
||||
- name: movabs # ./generate_mov_entries.py ivb
|
||||
operands: # ./generate_mov_entries.py ivb
|
||||
- class: immediate # ./generate_mov_entries.py ivb
|
||||
imd: int # ./generate_mov_entries.py ivb
|
||||
- class: register # ./generate_mov_entries.py ivb
|
||||
name: gpr # ./generate_mov_entries.py ivb
|
||||
latency: 0 # ./generate_mov_entries.py ivb
|
||||
port_pressure: [] # ./generate_mov_entries.py ivb
|
||||
throughput: 0.0 # ./generate_mov_entries.py ivb
|
||||
uops: 0 # ./generate_mov_entries.py ivb
|
||||
# ./generate_mov_entries.py ivb
|
||||
- name: mov # with store # ./generate_mov_entries.py ivb
|
||||
operands: # ./generate_mov_entries.py ivb
|
||||
- class: immediate # ./generate_mov_entries.py ivb
|
||||
|
||||
4875
osaca/data/skx.yml
4875
osaca/data/skx.yml
File diff suppressed because it is too large
Load Diff
@@ -62,6 +62,62 @@ instruction_forms:
|
||||
port_pressure: []
|
||||
throughput: 1
|
||||
uops: 0
|
||||
- name: cbtw # AT&T version of CBW
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
uops: 1
|
||||
- name: cwtl # AT&T version of CWDE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
uops: 1
|
||||
- name: cwtd # AT&T version of CWD
|
||||
operands: []
|
||||
latency: 2
|
||||
port_pressure: [[1, '015'], [1, '05']]
|
||||
throughput: 0.8333333333333333
|
||||
uops: 2
|
||||
- name: cltd # AT&T version of CDQ
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '05']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: cltq # AT&T version of CDQE
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '015']]
|
||||
throughput: 0.3333333333333333
|
||||
uops: 1
|
||||
- name: cqtq # AT&T version of CQO
|
||||
operands: []
|
||||
latency: 1
|
||||
port_pressure: [[1, '05']]
|
||||
throughput: 0.5
|
||||
uops: 1
|
||||
- name: [cmpeqsd, cmpltsd, cmplesd, cmpunordsd, cmpneqsd, cmpnltsd, cmpnlesd, cmpordsd]
|
||||
# same as CMPSD xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: [cmpeqss, cmpltss, cmpless, cmpunordss, cmpneqss, cmpnltss, cmpnless, cmpordss]
|
||||
# same as CMPSS xmm1, xmm2, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: cmpeqps # same as CMPPS xmm1, xmm2, 0
|
||||
operands:
|
||||
- class: register
|
||||
@@ -222,6 +278,38 @@ instruction_forms:
|
||||
port_pressure: [[1, '1']] # JH: according to uops.info
|
||||
throughput: 1.0 # JH: measured on phinally
|
||||
uops: 1
|
||||
- name: [vcmpeqsd, vcmpltsd, vcmplesd, vcmpunordsd, vcmpneqsd, vcmpnltsd, vcmpnlesd, vcmpordsd,
|
||||
vcmpeq_uqsd, vcmpngesd, vcmpngtsd, vcmpfalsesd, vcmpneq_oqsd, vcmpgesd, vcmpgtsd,
|
||||
vcmptruesd, vcmpeq_ossd, vcmplt_oqsd, vcmple_oqsd, vcmpunord_ssd, vcmpneq_ussd,
|
||||
vcmpnlt_uqsd, vcmpnle_uqsd, vcmpord_ssd, vcmpeq_ussd, vcmpnge_uqsd, vcmpngt_uqsd,
|
||||
vcmpfalse_ossd, vcmpneq_ossd, vcmpge_oqsd, vcmpgt_oqsd, vcmptrue_ussd]
|
||||
# same as VCMPSD xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: [vcmpeqss, vcmpltss, vcmpless, vcmpunordss, vcmpneqss, vcmpnltss, vcmpnless, vcmpordss,
|
||||
vcmpeq_uqss, vcmpngess, vcmpngtss, vcmpfalsess, vcmpneq_oqss, vcmpgess, vcmpgtss,
|
||||
vcmptruess, vcmpeq_osss, vcmplt_oqss, vcmple_oqss, vcmpunord_sss, vcmpneq_usss,
|
||||
vcmpnlt_uqss, vcmpnle_uqss, vcmpord_sss, vcmpeq_usss, vcmpnge_uqss, vcmpngt_uqss,
|
||||
vcmpfalse_osss, vcmpneq_osss, vcmpge_oqss, vcmpgt_oqss, vcmptrue_usss]
|
||||
# same as VCMPSS xmm, xmm, xmm, imd
|
||||
operands:
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
- class: register
|
||||
name: xmm
|
||||
latency: 3
|
||||
port_pressure: [[1, '1']]
|
||||
throughput: 1
|
||||
- name: vpsrld
|
||||
operands:
|
||||
- class: register
|
||||
@@ -20722,6 +20810,18 @@ instruction_forms:
|
||||
uops: 2 # ./generate_mov_entries.py snb
|
||||
# ./generate_mov_entries.py snb
|
||||
- name: mov # ./generate_mov_entries.py snb
|
||||
operands: # ./generate_mov_entries.py snb
|
||||
- class: immediate # ./generate_mov_entries.py snb
|
||||
imd: int # ./generate_mov_entries.py snb
|
||||
- class: register # ./generate_mov_entries.py snb
|
||||
name: gpr # ./generate_mov_entries.py snb
|
||||
latency: 1 # ./generate_mov_entries.py snb
|
||||
port_pressure: [[1, '015']] # ./generate_mov_entries.py snb
|
||||
throughput: 0.3333333333333333 # ./generate_mov_entries.py snb
|
||||
uops: 1 # ./generate_mov_entries.py snb
|
||||
|
||||
# ./generate_mov_entries.py snb
|
||||
- name: movabs # ./generate_mov_entries.py snb
|
||||
operands: # ./generate_mov_entries.py snb
|
||||
- class: immediate # ./generate_mov_entries.py snb
|
||||
imd: int # ./generate_mov_entries.py snb
|
||||
|
||||
Reference in New Issue
Block a user