From 7724ce27c745bfc8df5716867a0c8b68f328d1de Mon Sep 17 00:00:00 2001 From: JanLJL Date: Tue, 27 Sep 2022 18:39:14 +0200 Subject: [PATCH] added Zen3 support --- osaca/data/zen3.yml | 5217 +++++++++++++++++++++++++++++ osaca/osaca.py | 4 +- osaca/semantics/arch_semantics.py | 62 +- osaca/semantics/hw_model.py | 18 +- tests/test_files/test_db_x86.yml | 18 + tests/test_semantics.py | 25 +- 6 files changed, 5328 insertions(+), 16 deletions(-) create mode 100644 osaca/data/zen3.yml diff --git a/osaca/data/zen3.yml b/osaca/data/zen3.yml new file mode 100644 index 0000000..c788543 --- /dev/null +++ b/osaca/data/zen3.yml @@ -0,0 +1,5217 @@ +osaca_version: 0.4.10 +micro_architecture: AMD Zen3 +arch_code: ZEN3 +isa: x86 +load_latency: {gpr: 4.0, mm: 4.0, xmm: 4.0, ymm: 4.0} +load_throughput: +- {dst: gpr, base: gpr, index: "*", offset: "*", scale: "*", port_pressure: [[1, ['11', '12', '13']]]} +- {dst: xmm, base: gpr, index: "*", offset: "*", scale: "*", port_pressure: [[1, ['11', '12']]]} +- {dst: ymm, base: gpr, index: "*", offset: "*", scale: "*", port_pressure: [[1, ['11', '12']]]} +load_throughput_default: [[1, ['11', '12']]] +store_throughput: +- {dst: gpr, base: gpr, index: "*", offset: "*", scale: "*", port_pressure: [[1, ['12', '13']]]} +- {dst: xmm, base: gpr, index: "*", offset: "*", scale: "*", port_pressure: [[1, ['4']], [1, ['13']]]} +- {dst: ymm, base: gpr, index: "*", offset: "*", scale: "*", port_pressure: [[1, ['4']], [1, ['13']]]} +store_throughput_default: [1 ,['13']] +store_to_load_forward_latency: 0.0 # JH: according to Agner Fog "little or no penalty" +hidden_loads: false +ports: ['0', '1', '2', '3', DV0, DV1, '4', '5', '6', '7', '8', 8DV, '9', '10', '11', '12', '13'] +port_model_scheme: | + +--------------------------------------------------------+ +----------------------------------------------------------------+ + | [(0,2,4),(1,3,5)] 2x32 OoO scheduler | | [(6,11),(7,12),(8,13),(9,10)] 4x24 OoO scheduler | + +--------------------------------------------------------+ +----------------------------------------------------------------+ + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | + \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ + +-------+ +-------+ +-------+ +-------+ +------+ +------+ +------+ +-----+ +-----+ +------+ +------+ +-----+ +-----+ +-----+ + |AVX ALU| |AVX ALU| |AVX ALU| |AVX ALU| | ST | | F2I | | ALU | | ALU | | ALU | | ALU | |BRANCH| | AGU | | AGU | | AGU | + +-------+ +-------+ +-------+ +-------+ +------+ +------+ +------+ +-----+ +-----+ +------+ +------+ +-----+ +-----+ +-----+ + +-------+ +-------+ +-------+ +-------+ +------+ +-----+ +-----+ +-----+ +-----+ +-----+ + |AVX MUL| |AVX MUL| |AVX ADD| |AVX ADD| |BRANCH| | MUL | | DIV | | LD | | LD | | ST | + +-------+ +-------+ +-------+ +-------+ +------+ +-----+ +-----+ +-----+ +-----+ +-----+ + +-------+ +-------+ +-------+ +-------+ +-----+ +-----+ +-----+ +-----+ + |AVX FMA| |AVX FMA| | AVX | |AVX DIV| |SHIFT| |SHIFT| |intST| |intLD| + +-------+ +-------+ | SHUF | +-------+ +-----+ +-----+ +-----+ +-----+ + +-------+ +-------+ + | AVX | + | SHUF | + +-------+ + +instruction_forms: +########################################## +# assume all jmp instruction 0 +- name: [jo, jno, js, jns, jp, jpe, jnp, jpo] + operands: + - class: identifier + throughput: 0.0 + latency: 0.0 + port_pressure: [[1, ['6', '10']]] +- name: [jc, jb, jae, jnb, jna, jbe, ja, jnbe] + operands: + - class: identifier + throughput: 0.0 + latency: 0.0 + port_pressure: [[1, ['6', '10']]] +- name: [je, jz, jne, jnz, jl, jnge] + operands: + - class: identifier + throughput: 0.0 + latency: 0.0 + port_pressure: [[1, ['6', '10']]] +- name: [jge, jnl, jle, jng, jg, jnle] + operands: + - class: identifier + throughput: 0.0 + latency: 0.0 + port_pressure: [[1, ['6', '10']]] +- name: jmp + operands: + - class: identifier + throughput: 0.0 + latency: 0.0 + port_pressure: [[1, ['6', '10']]] +########################################## +# assume all cmp's equal for now +- name: [cmp, cmpeqpd, cmpltpd, cmplepd, cmpunordpd, cmpneqpd, cmpnltpd, cmpnlepd, cmpordpd, cmpltps, cmpleps, cmpunordps, cmpneqps, cmpnltps, cmpnleps, cmpordps] + operands: + - class: register + name: '*' + - class: register + name: '*' + latency: 1.0 + port_pressure: [[1, '6789']] + throughput: 0.25 + uops: 1 +- name: [cmp, cmpeqpd, cmpltpd, cmplepd, cmpunordpd, cmpneqpd, cmpnltpd, cmpnlepd, cmpordpd, cmpltps, cmpleps, cmpunordps, cmpneqps, cmpnltps, cmpnleps, cmpordps] + operands: + - class: immediate + imd: int + - class: register + latency: 1.0 + port_pressure: [[1, '6789']] + throughput: 0.25 + uops: 1 +########################################## +- name: mov # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: mov # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: mov # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: mov # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: immediate # ./generate_mov_entries.py zen3 + imd: int # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: mov # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: immediate # ./generate_mov_entries.py zen3 + imd: int # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movabs # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: immediate # ./generate_mov_entries.py zen3 + imd: int # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movapd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movapd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movapd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovapd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovapd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovapd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovapd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovapd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovapd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movaps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movaps # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movaps # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovaps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovaps # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovaps # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovaps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovaps # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovaps # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movddup # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movddup # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovddup # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovddup # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovddup # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovddup # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movdq2q # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movdqa # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movdqa # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movdqa # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovdqa # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovdqa # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovdqa # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovdqa # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovdqa # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovdqa # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movdqu # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movdqu # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movdqu # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovdqu # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovdqu # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovdqu # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovdqu # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovdqu # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovdqu # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movhlps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovhlps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movhpd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovhpd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movhpd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovhpd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movhps # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovhps # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movhps # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovhps # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movlhps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovlhps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movlpd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovlpd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movlpd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 3 # ./generate_mov_entries.py zen3 +- name: vmovlpd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movlps # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovlps # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movlps # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 3 # ./generate_mov_entries.py zen3 +- name: vmovlps # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movmskpd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovmskpd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovmskpd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movmskps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovmskps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovmskps # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movntdq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovntdq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovntdq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movntdqa # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovntdqa # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovntdqa # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movnti # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movntpd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovntpd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovntpd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movntps # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovntps # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovntps # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movntq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [] # ./generate_mov_entries.py zen3 + throughput: 0.0 # ./generate_mov_entries.py zen3 + uops: 0 # ./generate_mov_entries.py zen3 +- name: movq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovq # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movsd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovsd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovsd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovsd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movshdup # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movshdup # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovshdup # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovshdup # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovshdup # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovshdup # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsldup # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsldup # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovsldup # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovsldup # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovsldup # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovsldup # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movss # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movss # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovss # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovss # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovss # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovss # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movss # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsx # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsx # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsxd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [] # ./generate_mov_entries.py zen3 + throughput: 0.0 # ./generate_mov_entries.py zen3 + uops: 0 # ./generate_mov_entries.py zen3 +- name: movsxd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsb # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsb # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsw # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsw # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsl # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsl # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movsq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movupd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movupd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movupd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovupd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovupd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovupd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovupd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovupd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovupd # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movups # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movups # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movups # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovups # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovups # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovups # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vmovups # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovups # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vmovups # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 0 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['4']], [1, ['13']]] # ./generate_mov_entries.py zen3 + throughput: 1.0 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movzx # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movzx # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movzb # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movzb # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movzw # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movzw # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movzl # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movzl # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movzq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '6789']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: movzq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmova # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmova # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovae # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovae # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovb # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovb # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovbe # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovbe # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovc # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovc # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmove # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmove # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovg # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovg # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovge # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovge # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovl # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovl # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovle # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovle # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovna # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovna # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnae # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnae # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnb # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnb # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnbe # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnbe # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnc # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnc # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovne # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovne # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovng # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovng # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnge # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnge # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnl # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnl # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovno # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovno # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnp # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnp # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovns # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovns # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnz # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovnz # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovo # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovo # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovp # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovp # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovpe # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovpe # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovpo # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovpo # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovs # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovs # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovz # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '69']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: cmovz # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 4 # ./generate_mov_entries.py zen3 + port_pressure: [[1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.3333333333333333 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: pmovmskb # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: pmovmskb # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vpmovmskb # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: pmovsxbw # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: pmovsxbw # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: pmovsxbd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: pmovsxbd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: pmovsxbq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: pmovsxbq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vpmovsxbw # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vpmovsxbw # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vpmovsxbd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vpmovsxbd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vpmovsxbq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vpmovsxbq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vpmovsxbw # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vpmovsxbw # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vpmovsxbd # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vpmovsxbd # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vpmovsxbq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vpmovsxbq # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: pmovzxbw # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: pmovzxbw # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vpmovzxbw # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vpmovzxbw # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: vpmovzxbw # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.25 # ./generate_mov_entries.py zen3 + uops: 1 # ./generate_mov_entries.py zen3 +- name: vpmovzxbw # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: ymm # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '12'], [1, ['11', '12']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movbe # with store # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + latency: 5 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '67'], [1, ['12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movbe # with load # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: memory # ./generate_mov_entries.py zen3 + base: "*" # ./generate_mov_entries.py zen3 + offset: "*" # ./generate_mov_entries.py zen3 + index: "*" # ./generate_mov_entries.py zen3 + scale: "*" # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: gpr # ./generate_mov_entries.py zen3 + latency: 9 # ./generate_mov_entries.py zen3 + port_pressure: [[1, '67'], [1, ['11', '12', '13']]] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +- name: movq2dq # ./generate_mov_entries.py zen3 + operands: # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: mm # ./generate_mov_entries.py zen3 + - class: register # ./generate_mov_entries.py zen3 + name: xmm # ./generate_mov_entries.py zen3 + latency: 1 # ./generate_mov_entries.py zen3 + port_pressure: [[2, '0123']] # ./generate_mov_entries.py zen3 + throughput: 0.5 # ./generate_mov_entries.py zen3 + uops: 2 # ./generate_mov_entries.py zen3 +########################################## +- name: push + operands: + - class: immediate + imd: int + latency: 10 + port_pressure: [[1, ['12', '13']]] + throughput: 0.5 + uops: 2 +- name: push + operands: + - class: register + name: gpr + latency: 10 + port_pressure: [[1, ['12', '13']]] + throughput: 0.5 + uops: 2 +- name: push + operands: + - class: memory + base: "*" + offset: "*" + index: "*" + scale: "*" + latency: 10 + port_pressure: [[1, ['12', '13']]] + throughput: 0.5 + uops: 2 +- name: pop + operands: + - class: immediate + imd: int + latency: 10 + port_pressure: [[1, ['12', '13']]] + throughput: 0.5 + uops: 2 +- name: pop + operands: + - class: register + name: gpr + latency: 10 + port_pressure: [[1, ['12', '13']]] + throughput: 0.5 + uops: 2 +- name: pop + operands: + - class: memory + base: "*" + offset: "*" + index: "*" + scale: "*" + latency: 10 + port_pressure: [[1, ['12', '13']]] + throughput: 0.5 + uops: 2 +########################################## +- name: adc + operands: + - class: register + name: gpr + - class: register + name: gpr + latency: 1 + port_pressure: [[1, '69']] + throughput: 0.5 + uops: 1 +- name: add + operands: + - class: register + name: gpr + - class: register + name: gpr + latency: 1 + port_pressure: [[1, '6789']] + throughput: 0.25 + uops: 1 +- name: add + operands: + - class: immediate + imd: int + - class: register + name: gpr + latency: 1 + port_pressure: [[1, '6789']] + throughput: 0.25 + uops: 1 +- name: addpd + operands: + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '23']] + throughput: 0.5 + uops: 1 +- name: vaddpd + operands: + - class: register + name: xmm + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '23']] + throughput: 0.5 + uops: 1 +- name: vaddpd + operands: + - class: register + name: ymm + - class: register + name: ymm + - class: register + name: ymm + latency: 3 + port_pressure: [[1, '23']] + throughput: 0.5 + uops: 1 +- name: addsd + operands: + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '23']] + throughput: 0.5 + uops: 1 +- name: addss + operands: + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '23']] + throughput: 0.5 + uops: 1 +- name: mulsd + operands: + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '01']] + throughput: 0.5 + uops: 1 +- name: mulss + operands: + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '01']] + throughput: 0.5 + uops: 1 +- name: rcpss + operands: + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '01']] + throughput: 0.5 + uops: 1 +- name: rcpps + operands: + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '01']] + throughput: 0.5 + uops: 1 +- name: vrcpss + operands: + - class: register + name: xmm + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '01']] + throughput: 0.5 + uops: 1 +- name: vrcpps + operands: + - class: register + name: ymm + - class: register + name: ymm + latency: 3 + port_pressure: [[1, '01']] + throughput: 0.5 + uops: 1 +- name: vrcpps + operands: + - class: register + name: xmm + - class: register + name: xmm + latency: 3 + port_pressure: [[1, '01']] + throughput: 0.5 + uops: 1 +- name: [shl, shr] + operands: + - class: immediate + imd: int + - class: register + name: gpr + latency: 1 + port_pressure: [[1, '78']] + throughput: 0.5 + uops: 1 +- name: [shl, shr, sal, sar] + operands: + - class: register + name: gpr + latency: 1 + port_pressure: [[1, '78']] + throughput: 0.5 + uops: 1 +- name: lea # with load # uops.info + operands: # uops.info + - class: memory # uops.info + base: "*" # uops.info + offset: "*" # uops.info + index: "*" # uops.info + scale: "*" # uops.info + - class: register # uops.info + name: gpr # uops.info + latency: 5 # uops.info + port_pressure: [[1, '6789'], [1, ['11', '12', '13']]] # uops.info + throughput: 0.3333333333333333 # uops.info + uops: 2 # uops.info +- name: sub # ibench + operands: # ibench + - class: immediate # ibench + imd: int # ibench + - class: register # ibench + name: gpr # ibench + latency: 1 # ibench + port_pressure: [[1, '6789']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: sub # ibench + operands: # ibench + - class: register # ibench + name: gpr # ibench + - class: register # ibench + name: gpr # ibench + latency: 1 # ibench + port_pressure: [[1, '6789']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vaddps # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '23']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vaddps # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 3 # ibench + port_pressure: [[1, '23']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vaddsd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '23']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vaddss # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '23']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vcvtsi2ss # ibench + operands: # ibench + - class: register # ibench + name: gpr # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '5']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vdivpd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 13 # ibench + port_pressure: [[9, ['DV0', 'DV1']]] # ibench + throughput: 4.5 # ibench + uops: 9 # ibench +- name: vdivpd # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 13 # ibench + port_pressure: [[9, ['DV0', 'DV1']]] # ibench + throughput: 4.5 # ibench + uops: 9 # ibench +- name: vdivsd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 13 # ibench + port_pressure: [[9, ['DV0', 'DV1']]] # ibench + throughput: 4.5 # ibench + uops: 9 # ibench +- name: vdivss # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 10 # ibench + port_pressure: [[7, ['DV0', 'DV1']]] # ibench + throughput: 3.5 # ibench + uops: 7 # ibench +- name: vdivps # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 10 # ibench + port_pressure: [[7, ['DV0', 'DV1']]] # ibench + throughput: 3.5 # ibench + uops: 7 # ibench +- name: vdivps # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 10 # ibench + port_pressure: [[7, ['DV0', 'DV1']]] # ibench + throughput: 3.5 # ibench + uops: 7 # ibench +- name: [vfmadd213pd, vfmadd132pd, vfmadd231pd, vfnmadd213pd, vfnmadd132pd, vfnmadd231pd, vfmadd213ps, vfmadd132ps, vfmadd231ps, vfnmadd213ps, vfnmadd132ps, vfnmadd231ps] # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 4 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: [vfmadd213pd, vfmadd132pd, vfmadd231pd, vfnmadd213pd, vfnmadd132pd, vfnmadd231pd, vfmadd213ps, vfmadd132ps, vfmadd231ps, vfnmadd213ps, vfnmadd132ps, vfnmadd231ps] # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 4 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: [vfmadd213sd, vfmadd132sd, vfmadd231sd, vfnmadd213ps, vfnmadd132ps, vfnmadd231ps, vfmadd213ss, vfmadd132ss, vfmadd231ss, vfnmadd213ss, vfnmadd132ss, vfnmadd231ss] # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 4 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: [vfmsub213pd, vfmsub132pd, vfmsub231pd, vfnmsub213pd, vfnmsub132pd, vfnmsub231pd, vfmsub213ps, vfmsub132ps, vfmsub231ps, vfnmsub213ps, vfnmsub132ps, vfnmsub231ps] # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 4 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: [vfmsub213pd, vfmsub132pd, vfmsub231pd, vfnmsub213pd, vfnmsub132pd, vfnmsub231pd, vfmsub213ps, vfmsub132ps, vfmsub231ps, vfnmsub213ps, vfnmsub132ps, vfnmsub231ps] # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 4 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: [vfmsub213sd, vfmsub132sd, vfmsub231sd, vfnmsub213ps, vfnmsub132ps, vfnmsub231ps, vfmsub213ss, vfmsub132ss, vfmsub231ss, vfnmsub213ss, vfnmsub132ss, vfnmsub231ss] # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 4 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: [vgatherdpd, vgatherqpd] # with load # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: memory # uops.info + base: "*" # uops.info + offset: "*" # uops.info + index: "*" # uops.info + scale: "*" # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 14 # uops.info + port_pressure: [[1, '01'], [1, '0123'], [1, '1'], [3, ['11']], [3, ['12']]] # uops.info + throughput: 3.0 # uops.info + uops: 9 # uops.info +- name: vgatherdpd # with load # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: memory # uops.info + base: "*" # uops.info + offset: "*" # uops.info + index: "*" # uops.info + scale: "*" # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 16 # uops.info + port_pressure: [[1, '01'], [3, '0123'], [3, '1'], [4, ['11']], [4, ['12']]] # uops.info + throughput: 4.0 # uops.info + uops: 14 # uops.info +- name: vgatherqpd # with load # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: memory # uops.info + base: "*" # uops.info + offset: "*" # uops.info + index: "*" # uops.info + scale: "*" # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 18 # uops.info + port_pressure: [[2, '01'], [2, '0123'], [2, '1'], [4, ['11']], [4, ['12']]] # uops.info + throughput: 4.0 # uops.info + uops: 14 # uops.info +- name: vgatherdps # with load # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: memory # uops.info + base: "*" # uops.info + offset: "*" # uops.info + index: "*" # uops.info + scale: "*" # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 16 # uops.info + port_pressure: [[1, '01'], [3, '0123'], [3, '1'], [4, ['11']], [4, ['12']]] # uops.info + throughput: 4.0 # uops.info + uops: 15 # uops.info +- name: vgatherqps # with load # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: memory # uops.info + base: "*" # uops.info + offset: "*" # uops.info + index: "*" # uops.info + scale: "*" # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 20 # uops.info + port_pressure: [[2, '0123'], [2, '1'], [3, ['11']], [3, ['12']]] # uops.info + throughput: 3.0 # uops.info + uops: 15 # uops.info +- name: vgatherdps # with load # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: memory # uops.info + base: "*" # uops.info + offset: "*" # uops.info + index: "*" # uops.info + scale: "*" # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 28 # uops.info + port_pressure: [[1, '01'], [7, '0123'], [7, '1'], [8, ['11']], [8, ['12']]] # uops.info + throughput: 8.0 # uops.info + uops: 31 # uops.info +- name: vgatherqps # with load # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: memory # uops.info + base: "*" # uops.info + offset: "*" # uops.info + index: "*" # uops.info + scale: "*" # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 18 # uops.info + port_pressure: [[2, '01'], [2, '0123'], [2, '1'], [4, ['11']], [4, ['12']]] # uops.info + throughput: 4.0 # uops.info + uops: 14 # uops.info +- name: mulpd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vmulpd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vmulpd # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: mulps # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vmulps # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vmulps # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: mulsd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vmulsd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vmulsd # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: mulss # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vmulss # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: sqrtsd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 20 # ibench + port_pressure: [[18, ['DV0', 'DV1']]] # ibench + throughput: 9.0 # ibench + uops: 18 # ibench +- name: sqrtpd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 20 # ibench + port_pressure: [[17, ['DV0', 'DV1']]] # ibench + throughput: 8.5 # ibench + uops: 17 # ibench +- name: sqrtss # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 14 # ibench + port_pressure: [[10, ['DV0', 'DV1']]] # ibench + throughput: 5.0 # ibench + uops: 10 # ibench +- name: sqrtps # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 14 # ibench + port_pressure: [[10, ['DV0', 'DV1']]] # ibench + throughput: 5.0 # ibench + uops: 10 # ibench +- name: rsqrtps # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: rsqrtss # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 3 # ibench + port_pressure: [[1, '01']] # ibench + throughput: 1.0 # ibench + uops: 1 # ibench +- name: vsqrtpd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 20 # ibench + port_pressure: [[17, ['DV0', 'DV1']]] # ibench + throughput: 8.5 # ibench + uops: 17 # ibench +- name: vsqrtpd # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 20 # ibench + port_pressure: [[17, ['DV0', 'DV1']]] # ibench + throughput: 8.5 # ibench + uops: 17 # ibench +- name: vsqrtps # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 14 # ibench + port_pressure: [[10, ['DV0', 'DV1']]] # ibench + throughput: 5.0 # ibench + uops: 10 # ibench +- name: vsqrtps # ibench + operands: # ibench + - class: register # ibench + name: ymm # ibench + - class: register # ibench + name: ymm # ibench + latency: 14 # ibench + port_pressure: [[10, ['DV0', 'DV1']]] # ibench + throughput: 5.0 # ibench + uops: 10 # ibench +- name: vsqrtsd # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 20 # ibench + port_pressure: [[17, ['DV0', 'DV1']]] # ibench + throughput: 8.5 # ibench + uops: 17 # ibench +- name: vsqrtss # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 14 # ibench + port_pressure: [[10, ['DV0', 'DV1']]] # ibench + throughput: 5.0 # ibench + uops: 10 # ibench +########################################## +- name: inc # asmbench + operands: # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '6789']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: vinsertf128 # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '1']] # asmbench + throughput: 1.0 # asmbench + uops: 1 # asmbench +- name: vinsertps # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '12']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: vinserti128 # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '1']] # asmbench + throughput: 1.0 # asmbench + uops: 1 # asmbench +- name: [vsubpd, vsubps] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 3 # asmbench + port_pressure: [[1, '23']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [vsubpd, vsubps] # asmbench + operands: # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 3 # asmbench + port_pressure: [[1, '23']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [vsubsd, vsubss] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 3 # asmbench + port_pressure: [[1, '23']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [subsd, subss] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 3 # asmbench + port_pressure: [[1, '23']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [subpd, subps] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 3 # asmbench + port_pressure: [[1, '23']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [vextractf128, vextracti128] # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: vextractps # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: gpr # uops.info + latency: 6 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: vpalignr # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '12']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vpalignr # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '12']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: [vperm2f128, vperm2i128] # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 3 # asmbench + port_pressure: [[1, '1']] # asmbench + throughput: 1.0 # asmbench + uops: 1 # asmbench +- name: vpermd # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 6 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: vpermq # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 6 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: vpermps # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 8 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: vpermpd # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 6 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: [vpermilps, vpermilpd] # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '01']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: [vpermilps, vpermilpd] # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '12']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [vpermilps, vpermilpd] # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '01']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: [vpermilps, vpermilpd] # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '12']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [vunpckhpd, vunpckhps, vunpcklpd, vunpcklps] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '12']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [vunpckhpd, vunpckhps, vunpcklpd, vunpcklps] # asmbench + operands: # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '12']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [vpcmpgtb, vpcmpgtw, vpcmpgtd, vpcmpgtq] # asmbench + operands: # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: [vpcmpgtb, vpcmpgtw, vpcmpgtd, vpcmpgtq] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: [vpcmpeqb, vpcmpeqw, vpcmpeqd] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: vpcmpeqq # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '01']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: [vpcmpeqb, vpcmpeqw, vpcmpeqd] # asmbench + operands: # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: vpcmpeqq # asmbench + operands: # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '01']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: and # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '6789']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: [vpand, vpandn, vandps, vandpd, vandnps, vandnpd] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: [vpand, vpandn, vandps, vandpd, vandnps, vandnpd] # asmbench + operands: # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: ret # docs + operands: [] # docs + latency: 1 # docs + port_pressure: [[1, ['6', '10']]] # docs + throughput: 0.5 # docs + uops: 1 # docs +- name: call # docs + operands: # docs + - class: identifier # docs + latency: 1 # docs + port_pressure: [[1, ['6', '10']], [1, '13']] # docs + throughput: 0.5 # docs + uops: 2 # docs +- name: test # uops.info + operands: # uops.info + - class: register # uops.info + name: gpr # uops.info + - class: register # uops.info + name: gpr # uops.info + latency: 1 # uops.info + port_pressure: [[1, '6789']] # uops.info + throughput: 0.25 # uops.info + uops: 1 # uops.info +- name: test # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: gpr # uops.info + latency: 1 # uops.info + port_pressure: [[1, '6789']] # uops.info + throughput: 0.25 # uops.info + uops: 1 # uops.info +- name: vptest # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: vptest # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: [vtestpd, vtestps] # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: [vtestpd, vtestps] # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: [vxorps, vxorpd] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: [vxorps, vxorpd] # asmbench + operands: # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + - class: register # asmbench + name: ymm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: vbroadcastsd # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '0']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: vbroadcastss # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '0']] # uops.info + throughput: 1.0 # uops.info + uops: 1 # uops.info +- name: vbroadcastss # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '12']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vpxor # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '0123']] # uops.info + throughput: 0.25 # uops.info + uops: 1 # uops.info +- name: vpxor # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 1 # uops.info + port_pressure: [[1, '0123']] # uops.info + throughput: 0.25 # uops.info + uops: 1 # uops.info +- name: xor # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '6789']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: xor # asmbench + operands: # asmbench + - class: register # asmbench + name: gpr # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '6789']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: [xorps, xorpd] # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: pxor # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 1 # asmbench + port_pressure: [[1, '0123']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: vzeroupper # uops.info + operands: [] # uops.info + latency: 1 # uops.info + port_pressure: [[1, '0123']] # uops.info + throughput: 0.25 # uops.info + uops: 1 # uops.info +- name: [cdq, cdqe] # docs + operands: [] # docs + latency: 1 # docs + port_pressure: [[1, '6789']] # docs + throughput: 0.25 # docs + uops: 1 # docs +- name: [vucomiss, vucomisd] # ibench + operands: # ibench + - class: register # ibench + name: xmm # ibench + - class: register # ibench + name: xmm # ibench + latency: 1 # ibench + port_pressure: [[1, '23'], [1, ['12', '13']]] # ibench + throughput: 0.5 # ibench + uops: 2 # ibench +- name: mul # asmbench + operands: # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '7']] # asmbench + throughput: 1.0 # asmbench + uops: 1 # asmbench +- name: neg # asmbench + operands: # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '6789']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: not # asmbench + operands: # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '6789']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: or # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '6789']] # asmbench + throughput: 0.25 # asmbench + uops: 1 # asmbench +- name: rcl # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '78']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: rcr # asmbench + operands: # asmbench + - class: immediate # asmbench + imd: int # asmbench + - class: register # asmbench + name: gpr # asmbench + latency: 1 # asmbench + port_pressure: [[1, '78']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: rol # uopsinfo + operands: # uopsinfo + - class: immediate # uopsinfo + imd: int # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + latency: 1 # uopsinfo + port_pressure: [[1, '78']] # uopsinfo + throughput: 0.5 # uopsinfo + uops: 1 # uopsinfo +- name: ror # uopsinfo + operands: # uopsinfo + - class: immediate # uopsinfo + imd: int # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + latency: 1 # uopsinfo + port_pressure: [[1, '78']] # uopsinfo + throughput: 0.5 # uopsinfo + uops: 1 # uopsinfo +- name: ror # uopsinfo + operands: # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + latency: 1 # uopsinfo + port_pressure: [[1, '78']] # uopsinfo + throughput: 0.5 # uopsinfo + uops: 1 # uopsinfo +- name: rol # uopsinfo + operands: # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + latency: 1 # uopsinfo + port_pressure: [[1, '78']] # uopsinfo + throughput: 0.5 # uopsinfo + uops: 1 # uopsinfo +- name: [sar, sbb] # uopsinfo + operands: # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + latency: 1 # uopsinfo + port_pressure: [[1, '78']] # uopsinfo + throughput: 0.5 # uopsinfo + uops: 1 # uopsinfo +- name: [sar, sbb] # uopsinfo + operands: # uopsinfo + - class: immediate # uopsinfo + imd: int # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + latency: 1 # uopsinfo + port_pressure: [[1, '78']] # uopsinfo + throughput: 0.5 # uopsinfo + uops: 1 # uopsinfo +- name: [shr, shl] # uopsinfo + operands: # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + - class: register # uopsinfo + name: gpr # uopsinfo + latency: 1 # uopsinfo + port_pressure: [[1, '78']] # uopsinfo + throughput: 0.5 # uopsinfo + uops: 1 # uopsinfo +- name: stc # uopsinfo + operands: # uopsinfo + - class: register # uopsinfo + name: # uopsinfo + latency: ~ # uopsinfo + port_pressure: [[1, '6789']] # uopsinfo + throughput: 0.25 # uopsinfo + uops: 1 # uopsinfo +- name: vcvtdq2pd # uopsinfo + operands: # uopsinfo + - class: register # uopsinfo + name: xmm # uopsinfo + - class: register # uopsinfo + name: xmm # uopsinfo + latency: 3 # uopsinfo + port_pressure: [[1, '23']] # uopsinfo + throughput: 0.5 # uopsinfo + uops: 1 # uopsinfo +- name: vcvtdq2pd # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 4 # uops.info + port_pressure: [[1, '1'], [1, '23']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvtdq2ps # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtdq2ps # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtpd2dq # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtpd2dq # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 6 # uops.info + port_pressure: [[1, '23'], [1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvtpd2ps # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtpd2ps # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 6 # uops.info + port_pressure: [[1, '23'], [1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvtps2dq # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtps2dq # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtps2pd # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtps2pd # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 4 # uops.info + port_pressure: [[1, '23'], [1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvtsd2si # docs + operands: # docs + - class: register # docs + name: xmm # docs + - class: register # docs + name: gpr # docs + latency: 9 # docs + port_pressure: [[1, '23'], [1, '4']] # docs + throughput: 1.0 # docs + uops: 2 # docs +- name: vcvtsd2ss # asmbench + operands: # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + - class: register # asmbench + name: xmm # asmbench + latency: 3 # asmbench + port_pressure: [[1, '23']] # asmbench + throughput: 0.5 # asmbench + uops: 1 # asmbench +- name: vcvtsi2sd # uops.info + operands: # uops.info + - class: register # uops.info + name: gpr # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 9 # uops.info + port_pressure: [[1, '3'], [1, '6789']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvtsi2ss # uops.info + operands: # uops.info + - class: register # uops.info + name: gpr # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 9 # uops.info + port_pressure: [[1, '3'], [1, '6789']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvttpd2dq # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 6 # uops.info + port_pressure: [[1, '23'], [1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvttpd2dq # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvttps2dq # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvttps2dq # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvttsd2si # docs + operands: # docs + - class: register # docs + name: xmm # docs + - class: register # docs + name: gpr # docs + latency: 9 # docs + port_pressure: [[1, '23'], [1, '4']] # docs + throughput: 1.0 # docs + uops: 2 # docs +- name: vcvttss2si # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: gpr # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23'], [1, '4']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvtdq2pd # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtdq2pd # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 4 # uops.info + port_pressure: [[1, '23'], [1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvtdq2ps # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtdq2ps # uops.info + operands: # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtph2ps # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtph2ps # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: ymm # uops.info + latency: 4 # uops.info + port_pressure: [[1, '23'], [1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: vcvtps2ph # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 3 # uops.info + port_pressure: [[1, '23']] # uops.info + throughput: 0.5 # uops.info + uops: 1 # uops.info +- name: vcvtps2ph # uops.info + operands: # uops.info + - class: immediate # uops.info + imd: int # uops.info + - class: register # uops.info + name: ymm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 6 # uops.info + port_pressure: [[1, '23'], [1, '1']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info +- name: [vcomiss, vcomisd] # uops.info + operands: # uops.info + - class: register # uops.info + name: xmm # uops.info + - class: register # uops.info + name: xmm # uops.info + latency: 2 # uops.info + port_pressure: [[1, '23'], [1, '4']] # uops.info + throughput: 1.0 # uops.info + uops: 2 # uops.info diff --git a/osaca/osaca.py b/osaca/osaca.py index f7cc57f..8ef44d3 100755 --- a/osaca/osaca.py +++ b/osaca/osaca.py @@ -30,6 +30,7 @@ SUPPORTED_ARCHS = [ "ICX", "ZEN1", "ZEN2", + "ZEN3", "TX2", "N1", "A64FX", @@ -97,7 +98,7 @@ def create_parser(parser=None): parser.add_argument( "--arch", type=str, - help="Define architecture (SNB, IVB, HSW, BDW, SKX, CSX, ICL, ICX, ZEN1, ZEN2, TX2, N1, " + help="Define architecture (SNB, IVB, HSW, BDW, SKX, CSX, ICL, ICX, ZEN1, ZEN2, ZEN3, TX2, N1, " "A64FX, TSV110, A72). If no architecture is given, OSACA assumes a default uarch for x86/AArch64.", ) parser.add_argument( @@ -329,6 +330,7 @@ def inspect(args, output_file=sys.stdout): # Do optimal schedule for kernel throughput if wished if not args.fixed: semantics.assign_optimal_throughput(kernel) + semantics.assign_optimal_throughput(kernel) # Create DiGrahps kernel_graph = KernelDG(kernel, parser, machine_model, semantics, args.lcd_timeout) diff --git a/osaca/semantics/arch_semantics.py b/osaca/semantics/arch_semantics.py index 6940b7e..dea490f 100755 --- a/osaca/semantics/arch_semantics.py +++ b/osaca/semantics/arch_semantics.py @@ -1,9 +1,11 @@ #!/usr/bin/env python3 """Semantics opbject responsible for architecture specific semantic operations""" +import sys import warnings from itertools import chain from operator import itemgetter +from copy import deepcopy from .hw_model import MachineModel from .isa_semantics import INSTR_FLAGS, ISASemantics @@ -31,7 +33,7 @@ class ArchSemantics(ISASemantics): if self._machine_model.has_hidden_loads(): self.set_hidden_loads(kernel) - def assign_optimal_throughput(self, kernel): + def assign_optimal_throughput(self, kernel, start=0): """ Assign optimal throughput port pressure to a kernel. This is done in steps of ``0.01cy``. @@ -40,7 +42,26 @@ class ArchSemantics(ISASemantics): INC = 0.01 kernel.reverse() port_list = self._machine_model.get_ports() - for instruction_form in kernel: + for idx, instruction_form in enumerate(kernel[start:], start): + multiple_assignments = False + # if iform has multiple possible port assignments, check all in a DFS manner and take the best + if isinstance(instruction_form["port_uops"], dict): + best_kernel = None + best_kernel_tp = sys.maxsize + for port_util_alt in list(instruction_form["port_uops"].values())[1:]: + k_tmp = deepcopy(kernel) + k_tmp[idx]["port_uops"] = deepcopy(port_util_alt) + k_tmp[idx]["port_pressure"] = self._machine_model.average_port_pressure( + k_tmp[idx]["port_uops"] + ) + k_tmp.reverse() + self.assign_optimal_throughput(k_tmp, idx) + if max(self.get_throughput_sum(k_tmp)) < best_kernel_tp: + best_kernel = k_tmp + best_kernel_tp = max(self.get_throughput_sum(best_kernel)) + # check the first option in the main branch and compare against the best option later + multiple_assignments = True + kernel[idx]["port_uops"] = list(instruction_form["port_uops"].values())[0] for uop in instruction_form["port_uops"]: cycles = uop[0] ports = list(uop[1]) @@ -84,6 +105,7 @@ class ArchSemantics(ISASemantics): p for p in indices if round(instruction_form["port_pressure"][p], 2) == 0 + or instruction_form["port_pressure"][p] < 0.00 ][0] instruction_form["port_pressure"][zero_index] = 0.0 # Remove from further balancing @@ -108,6 +130,11 @@ class ArchSemantics(ISASemantics): itemgetter(*indices)(self.get_throughput_sum(kernel)) ) kernel.reverse() + if multiple_assignments: + if max(self.get_throughput_sum(kernel)) > best_kernel_tp: + for i, instr in enumerate(best_kernel): + kernel[i]["port_uops"] = best_kernel[i]["port_uops"] + kernel[i]["port_pressure"] = best_kernel[i]["port_pressure"] def set_hidden_loads(self, kernel): """Hide loads behind stores if architecture supports hidden loads (depricated)""" @@ -209,11 +236,12 @@ class ArchSemantics(ISASemantics): operands.index(self._create_reg_wildcard()) ] ) + dummy_reg = {"class": "register", "name": reg_type} data_port_pressure = [0.0 for _ in range(port_number)] data_port_uops = [] if INSTR_FLAGS.HAS_LD in instruction_form["flags"]: # LOAD performance data - data_port_uops = self._machine_model.get_load_throughput( + load_perf_data = self._machine_model.get_load_throughput( [ x["memory"] for x in instruction_form["semantic_operands"]["source"] @@ -221,6 +249,19 @@ class ArchSemantics(ISASemantics): if "memory" in x ][0] ) + # if multiple options, choose based on reg type + data_port_uops = [ + ldp["port_pressure"] + for ldp in load_perf_data + if "dst" in ldp + and self._machine_model._check_operands( + dummy_reg, {"register": {"name": ldp["dst"]}} + ) + ] + if len(data_port_uops) < 1: + data_port_uops = load_perf_data[0]["port_pressure"] + else: + data_port_uops = data_port_uops[0] data_port_pressure = self._machine_model.average_port_pressure( data_port_uops ) @@ -235,9 +276,22 @@ class ArchSemantics(ISASemantics): instruction_form["semantic_operands"]["destination"] + instruction_form["semantic_operands"]["src_dst"] ) - st_data_port_uops = self._machine_model.get_store_throughput( + store_perf_data = self._machine_model.get_store_throughput( [x["memory"] for x in destinations if "memory" in x][0] ) + # if multiple options, choose based on reg type + st_data_port_uops = [ + stp["port_pressure"] + for stp in store_perf_data + if "src" in stp + and self._machine_model._check_operands( + dummy_reg, {"register": {"name": stp["src"]}} + ) + ] + if len(data_port_uops) < 1: + st_data_port_uops = store_perf_data[0]["port_pressure"] + else: + st_data_port_uops = st_data_port_uops[0] # zero data port pressure and remove HAS_ST flag if # - no mem operand in dst && # - all mem operands in src_dst are pre-/post-indexed diff --git a/osaca/semantics/hw_model.py b/osaca/semantics/hw_model.py index 37337ec..15bef95 100755 --- a/osaca/semantics/hw_model.py +++ b/osaca/semantics/hw_model.py @@ -143,11 +143,16 @@ class MachineModel(object): print("\nname: {}\noperands: {}".format(name, operands)) raise TypeError from e - def average_port_pressure(self, port_pressure): + def average_port_pressure(self, port_pressure, option=0): """Construct average port pressure list from instruction data.""" port_list = self._data["ports"] average_pressure = [0.0] * len(port_list) - for cycles, ports in port_pressure: + # if there are multiple port utilization options and none is selected, choose first one + if isinstance(port_pressure, dict): + used_pp = port_pressure[option] + else: + used_pp = port_pressure + for cycles, ports in used_pp: for p in ports: try: average_pressure[port_list.index(p)] += cycles / len(ports) @@ -221,8 +226,8 @@ class MachineModel(object): """Return load thorughput for given register type.""" ld_tp = [m for m in self._data["load_throughput"] if self._match_mem_entries(memory, m)] if len(ld_tp) > 0: - return ld_tp[0]["port_pressure"].copy() - return self._data["load_throughput_default"].copy() + return ld_tp.copy() + return [{"port_pressure": self._data["load_throughput_default"].copy()}] def get_store_latency(self, reg_type): """Return store latency for given register type.""" @@ -233,8 +238,8 @@ class MachineModel(object): """Return store throughput for given register type.""" st_tp = [m for m in self._data["store_throughput"] if self._match_mem_entries(memory, m)] if len(st_tp) > 0: - return st_tp[0]["port_pressure"].copy() - return self._data["store_throughput_default"].copy() + return st_tp.copy() + return [{"port_pressure": self._data["store_throughput_default"].copy()}] def _match_mem_entries(self, mem, i_mem): """Check if memory addressing ``mem`` and ``i_mem`` are of the same type.""" @@ -273,6 +278,7 @@ class MachineModel(object): "zen1": "x86", "zen+": "x86", "zen2": "x86", + "zen3": "x86", "con": "x86", # Intel Conroe "wol": "x86", # Intel Wolfdale "snb": "x86", diff --git a/tests/test_files/test_db_x86.yml b/tests/test_files/test_db_x86.yml index 8b40fee..a5a290d 100644 --- a/tests/test_files/test_db_x86.yml +++ b/tests/test_files/test_db_x86.yml @@ -61,6 +61,24 @@ port_model_scheme: | +-------+ | VNNI | +-------+ instruction_forms: +- name: fantasyinstr1 + operands: + - class: register + name: gpr + - class: register + name: gpr + port_pressure: {0: [[1, '015']], 1: [[1, '56']]} + throughput: 0.333333 + latency: 1.0 +- name: fantasyinstr2 + operands: + - class: register + name: gpr + - class: register + name: gpr + port_pressure: [[1, '0'], [1, '1'], [1, '5']] + throughput: 0.5 + latency: 1.0 - name: LEA operands: - class: memory diff --git a/tests/test_semantics.py b/tests/test_semantics.py index 54e851f..327f173 100755 --- a/tests/test_semantics.py +++ b/tests/test_semantics.py @@ -175,7 +175,7 @@ class TestSemanticTools(unittest.TestCase): self.assertEqual( test_mm_x86.get_store_throughput( {"base": {"name": "x"}, "offset": None, "index": None, "scale": 1} - ), + )[0]["port_pressure"], [[2, "237"], [2, "4"]], ) self.assertEqual( @@ -186,13 +186,13 @@ class TestSemanticTools(unittest.TestCase): "index": "NOT_NONE", "scale": 1, } - ), + )[0]["port_pressure"], [[1, "23"], [1, "4"]], ) self.assertEqual( test_mm_arm.get_store_throughput( {"base": {"prefix": "x"}, "offset": None, "index": None, "scale": 1} - ), + )[0]["port_pressure"], [[2, "34"], [2, "5"]], ) self.assertEqual( @@ -203,7 +203,7 @@ class TestSemanticTools(unittest.TestCase): "index": None, "scale": 1, } - ), + )[0]["port_pressure"], [[1, "34"], [1, "5"]], ) @@ -228,7 +228,7 @@ class TestSemanticTools(unittest.TestCase): self.assertEqual( test_mm_x86.get_load_throughput( {"base": {"name": "x"}, "offset": None, "index": None, "scale": 1} - ), + )[0]["port_pressure"], [[1, "23"], [1, ["2D", "3D"]]], ) @@ -288,6 +288,21 @@ class TestSemanticTools(unittest.TestCase): tp_optimal = self.semantics_csx.get_throughput_sum(kernel_optimal) self.assertNotEqual(tp_fixed, tp_optimal) self.assertTrue(max(tp_optimal) <= max(tp_fixed)) + # test multiple port assignment options + test_mm_x86 = MachineModel(path_to_yaml=self._find_file("test_db_x86.yml")) + tmp_semantics = ArchSemantics(test_mm_x86) + tmp_code_1 = "fantasyinstr1 %rax, %rax\n" + tmp_code_2 = "fantasyinstr1 %rax, %rax\nfantasyinstr2 %rbx, %rbx\n" + tmp_kernel_1 = self.parser_x86.parse_file(tmp_code_1) + tmp_kernel_2 = self.parser_x86.parse_file(tmp_code_2) + tmp_semantics.add_semantics(tmp_kernel_1) + tmp_semantics.add_semantics(tmp_kernel_2) + tmp_semantics.assign_optimal_throughput(tmp_kernel_1) + tmp_semantics.assign_optimal_throughput(tmp_kernel_2) + k1i1_pp = [round(x, 2) for x in tmp_kernel_1[0]["port_pressure"]] + k2i1_pp = [round(x, 2) for x in tmp_kernel_2[0]["port_pressure"]] + self.assertEqual(k1i1_pp, [0.33, 0.0, 0.33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.33, 0.0, 0.0]) + self.assertEqual(k2i1_pp, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]) # arm kernel_fixed = deepcopy(self.kernel_AArch64)