mirror of
https://github.com/RRZE-HPC/OSACA.git
synced 2026-01-05 02:30:08 +01:00
also added pmovs and updated some port numbers
This commit is contained in:
@@ -143,31 +143,31 @@ p7 = MOVEntryBuilderIntelWithPort7AGU()
|
|||||||
# SNB
|
# SNB
|
||||||
snb_mov_instructions = [
|
snb_mov_instructions = [
|
||||||
# https://www.felixcloutier.com/x86/mov
|
# https://www.felixcloutier.com/x86/mov
|
||||||
('mov gpr gpr', ('', 0)),
|
('mov gpr gpr', ('1*p015', 1)),
|
||||||
('mov gpr mem', ('', 0)),
|
('mov gpr mem', ('', 0)),
|
||||||
('mov mem gpr', ('', 0)),
|
('mov mem gpr', ('', 0)),
|
||||||
('mov imd gpr', ('', 0)),
|
('mov imd gpr', ('1*p015', 1)),
|
||||||
('mov imd mem', ('', 0)),
|
('mov imd mem', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movapd
|
# https://www.felixcloutier.com/x86/movapd
|
||||||
('movapd xmm xmm', ('', 0)),
|
('movapd xmm xmm', ('1*p5', 1)),
|
||||||
('movapd xmm mem', ('', 0)),
|
('movapd xmm mem', ('', 0)),
|
||||||
('movapd mem xmm', ('', 0)),
|
('movapd mem xmm', ('', 0)),
|
||||||
('vmovapd xmm xmm', ('', 0)),
|
('vmovapd xmm xmm', ('1*p5', 1)),
|
||||||
('vmovapd xmm mem', ('', 0)),
|
('vmovapd xmm mem', ('', 0)),
|
||||||
('vmovapd mem xmm', ('', 0)),
|
('vmovapd mem xmm', ('', 0)),
|
||||||
('vmovapd ymm ymm', ('', 0)),
|
('vmovapd ymm ymm', ('1*p5', 1)),
|
||||||
('vmovapd ymm mem', ('', 0)),
|
('vmovapd ymm mem', ('', 0)),
|
||||||
('vmovapd mem ymm', ('', 0)),
|
('vmovapd mem ymm', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movaps
|
# https://www.felixcloutier.com/x86/movaps
|
||||||
('movaps xmm xmm', ('', 0)),
|
('movaps xmm xmm', ('1*p5', 1)),
|
||||||
('movaps xmm mem', ('', 0)),
|
('movaps xmm mem', ('', 0)),
|
||||||
('movaps mem xmm', ('', 0)),
|
('movaps mem xmm', ('', 0)),
|
||||||
('vmovaps xmm xmm', ('', 0)),
|
('vmovaps xmm xmm', ('1*p5', 1)),
|
||||||
('movaps xmm mem', ('', 0)),
|
('movaps xmm mem', ('', 0)),
|
||||||
('movaps mem xmm', ('', 0)),
|
('movaps mem xmm', ('', 0)),
|
||||||
('vmovaps ymm ymm', ('', 0)),
|
('vmovaps ymm ymm', ('1*p5', 1)),
|
||||||
('movaps ymm mem', ('', 0)),
|
('movaps ymm mem', ('', 0)),
|
||||||
('movaps mem ymm', ('', 0)),
|
('movaps mem ymm', ('', 0)),
|
||||||
|
|
||||||
@@ -184,17 +184,17 @@ snb_mov_instructions = [
|
|||||||
('movd mem xmm', ('', 0)),
|
('movd mem xmm', ('', 0)),
|
||||||
('movq gpr xmm', ('1*p5', 1)),
|
('movq gpr xmm', ('1*p5', 1)),
|
||||||
('movq mem xmm', ('', 0)),
|
('movq mem xmm', ('', 0)),
|
||||||
('movd xmm gpr', ('1*p5', 1)),
|
('movd xmm gpr', ('1*p0', 1)),
|
||||||
('movd xmm mem', ('', 0)),
|
('movd xmm mem', ('', 0)),
|
||||||
('movq xmm gpr', ('1*p5', 1)),
|
('movq xmm gpr', ('1*p0', 1)),
|
||||||
('movq xmm mem', ('', 0)),
|
('movq xmm mem', ('', 0)),
|
||||||
('vmovd gpr xmm', ('1*p5', 1)),
|
('vmovd gpr xmm', ('1*p5', 1)),
|
||||||
('vmovd mem xmm', ('', 0)),
|
('vmovd mem xmm', ('', 0)),
|
||||||
('vmovq gpr xmm', ('1*p5', 1)),
|
('vmovq gpr xmm', ('1*p5', 1)),
|
||||||
('vmovq mem xmm', ('', 0)),
|
('vmovq mem xmm', ('', 0)),
|
||||||
('vmovd xmm gpr', ('1*p5', 1)),
|
('vmovd xmm gpr', ('1*p0', 1)),
|
||||||
('vmovd xmm mem', ('', 0)),
|
('vmovd xmm mem', ('', 0)),
|
||||||
('vmovq xmm gpr', ('1*p5', 1)),
|
('vmovq xmm gpr', ('1*p0', 1)),
|
||||||
('vmovq xmm mem', ('', 0)),
|
('vmovq xmm mem', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movddup
|
# https://www.felixcloutier.com/x86/movddup
|
||||||
@@ -209,24 +209,24 @@ snb_mov_instructions = [
|
|||||||
('movdq2q xmm mm', ('1*p015+1*p5', 1)),
|
('movdq2q xmm mm', ('1*p015+1*p5', 1)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movdqa:vmovdqa32:vmovdqa64
|
# https://www.felixcloutier.com/x86/movdqa:vmovdqa32:vmovdqa64
|
||||||
('movdqa xmm xmm', ('', 0)),
|
('movdqa xmm xmm', ('1*p015', 1)),
|
||||||
('movdqa mem xmm', ('', 0)),
|
('movdqa mem xmm', ('', 0)),
|
||||||
('movdqa xmm mem', ('', 0)),
|
('movdqa xmm mem', ('', 0)),
|
||||||
('vmovdqa xmm xmm', ('', 0)),
|
('vmovdqa xmm xmm', ('1*p015', 1)),
|
||||||
('vmovdqa mem xmm', ('', 0)),
|
('vmovdqa mem xmm', ('', 0)),
|
||||||
('vmovdqa xmm mem', ('', 0)),
|
('vmovdqa xmm mem', ('', 0)),
|
||||||
('vmovdqa ymm ymm', ('', 0)),
|
('vmovdqa ymm ymm', ('1*p05', 1)),
|
||||||
('vmovdqa mem ymm', ('', 0)),
|
('vmovdqa mem ymm', ('', 0)),
|
||||||
('vmovdqa ymm mem', ('', 0)),
|
('vmovdqa ymm mem', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movdqu:vmovdqu8:vmovdqu16:vmovdqu32:vmovdqu64
|
# https://www.felixcloutier.com/x86/movdqu:vmovdqu8:vmovdqu16:vmovdqu32:vmovdqu64
|
||||||
('movdqu xmm xmm', ('', 0)),
|
('movdqu xmm xmm', ('1*p015', 1)),
|
||||||
('movdqu mem xmm', ('', 0)),
|
('movdqu mem xmm', ('', 0)),
|
||||||
('movdqu xmm mem', ('', 0)),
|
('movdqu xmm mem', ('', 0)),
|
||||||
('vmovdqu xmm xmm', ('', 0)),
|
('vmovdqu xmm xmm', ('1*p015', 1)),
|
||||||
('vmovdqu mem xmm', ('', 0)),
|
('vmovdqu mem xmm', ('', 0)),
|
||||||
('vmovdqu xmm mem', ('', 0)),
|
('vmovdqu xmm mem', ('', 0)),
|
||||||
('vmovdqu ymm ymm', ('', 0)),
|
('vmovdqu ymm ymm', ('1*p05', 1)),
|
||||||
('vmovdqu mem ymm', ('', 0)),
|
('vmovdqu mem ymm', ('', 0)),
|
||||||
('vmovdqu ymm mem', ('', 0)),
|
('vmovdqu ymm mem', ('', 0)),
|
||||||
|
|
||||||
@@ -254,20 +254,20 @@ snb_mov_instructions = [
|
|||||||
('movlpd mem xmm', ('1*p5', 1)),
|
('movlpd mem xmm', ('1*p5', 1)),
|
||||||
('vmovlpd mem xmm xmm', ('1*p5', 1)),
|
('vmovlpd mem xmm xmm', ('1*p5', 1)),
|
||||||
('movlpd xmm mem', ('', 0)),
|
('movlpd xmm mem', ('', 0)),
|
||||||
('vmovlpd mem xmm', ('', 0)),
|
('vmovlpd mem xmm', ('1*p5', 1)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movlps
|
# https://www.felixcloutier.com/x86/movlps
|
||||||
('movlps mem xmm', ('1*p5', 1)),
|
('movlps mem xmm', ('1*p5', 1)),
|
||||||
('vmovlps mem xmm xmm', ('1*p5', 1)),
|
('vmovlps mem xmm xmm', ('1*p5', 1)),
|
||||||
('movlps xmm mem', ('', 0)),
|
('movlps xmm mem', ('', 0)),
|
||||||
('vmovlps mem xmm', ('', 0)),
|
('vmovlps mem xmm', ('1*p5', 1)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movmskpd
|
# https://www.felixcloutier.com/x86/movmskpd
|
||||||
('movmskpd xmm gpr', ('1*p0', 1)),
|
('movmskpd xmm gpr', ('1*p0', 2)),
|
||||||
('vmovmskpd xmm gpr', ('1*p0', 1)),
|
('vmovmskpd xmm gpr', ('1*p0', 2)),
|
||||||
('vmovmskpd ymm gpr', ('1*p0', 1)),
|
('vmovmskpd ymm gpr', ('1*p0', 2)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movmskpd
|
# https://www.felixcloutier.com/x86/movmskps
|
||||||
('movmskps xmm gpr', ('1*p0', 1)),
|
('movmskps xmm gpr', ('1*p0', 1)),
|
||||||
('vmovmskps xmm gpr', ('1*p0', 1)),
|
('vmovmskps xmm gpr', ('1*p0', 1)),
|
||||||
('vmovmskps ymm gpr', ('1*p0', 1)),
|
('vmovmskps ymm gpr', ('1*p0', 1)),
|
||||||
@@ -302,10 +302,10 @@ snb_mov_instructions = [
|
|||||||
('movq mm mm', ('', 0)),
|
('movq mm mm', ('', 0)),
|
||||||
('movq mem mm', ('', 0)),
|
('movq mem mm', ('', 0)),
|
||||||
('movq mm mem', ('', 0)),
|
('movq mm mem', ('', 0)),
|
||||||
('movq xmm xmm', ('', 0)),
|
('movq xmm xmm', ('1*p015', 1)),
|
||||||
('movq mem xmm', ('', 0)),
|
('movq mem xmm', ('', 0)),
|
||||||
('movq xmm mem', ('', 0)),
|
('movq xmm mem', ('', 0)),
|
||||||
('vmovq xmm xmm', ('', 0)),
|
('vmovq xmm xmm', ('1*p015', 1)),
|
||||||
('vmovq mem xmm', ('', 0)),
|
('vmovq mem xmm', ('', 0)),
|
||||||
('vmovq xmm mem', ('', 0)),
|
('vmovq xmm mem', ('', 0)),
|
||||||
|
|
||||||
@@ -317,76 +317,76 @@ snb_mov_instructions = [
|
|||||||
# ('movs mem mem', ()),
|
# ('movs mem mem', ()),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movsd
|
# https://www.felixcloutier.com/x86/movsd
|
||||||
('movsd xmm xmm', ('', 0)),
|
('movsd xmm xmm', ('1*p5', 1)),
|
||||||
('movsd mem xmm', ('', 0)),
|
('movsd mem xmm', ('', 0)),
|
||||||
('movsd xmm mem', ('', 0)),
|
('movsd xmm mem', ('', 0)),
|
||||||
('vmovsd xmm xmm xmm', ('', 0)),
|
('vmovsd xmm xmm xmm', ('1*p5', 1)),
|
||||||
('vmovsd mem xmm', ('', 0)),
|
('vmovsd mem xmm', ('', 0)),
|
||||||
('vmovsd xmm mem', ('', 0)),
|
('vmovsd xmm mem', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movshdup
|
# https://www.felixcloutier.com/x86/movshdup
|
||||||
('movshdup xmm xmm', ('', 0)),
|
('movshdup xmm xmm', ('1*p5', 1)),
|
||||||
('movshdup mem xmm', ('', 0)),
|
('movshdup mem xmm', ('', 0)),
|
||||||
('vmovshdup xmm xmm', ('', 0)),
|
('vmovshdup xmm xmm', ('1*p5', 1)),
|
||||||
('vmovshdup mem xmm', ('', 0)),
|
('vmovshdup mem xmm', ('', 0)),
|
||||||
('vmovshdup ymm ymm', ('', 0)),
|
('vmovshdup ymm ymm', ('1*p5', 1)),
|
||||||
('vmovshdup mem ymm', ('', 0)),
|
('vmovshdup mem ymm', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movsldup
|
# https://www.felixcloutier.com/x86/movsldup
|
||||||
('movsldup xmm xmm', ('', 0)),
|
('movsldup xmm xmm', ('1*p5', 1)),
|
||||||
('movsldup mem xmm', ('', 0)),
|
('movsldup mem xmm', ('', 0)),
|
||||||
('vmovsldup xmm xmm', ('', 0)),
|
('vmovsldup xmm xmm', ('1*p5', 1)),
|
||||||
('vmovsldup mem xmm', ('', 0)),
|
('vmovsldup mem xmm', ('', 0)),
|
||||||
('vmovsldup ymm ymm', ('', 0)),
|
('vmovsldup ymm ymm', ('1*p5', 1)),
|
||||||
('vmovsldup mem ymm', ('', 0)),
|
('vmovsldup mem ymm', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movss
|
# https://www.felixcloutier.com/x86/movss
|
||||||
('movss xmm xmm', ('', 0)),
|
('movss xmm xmm', ('1*p5', 1)),
|
||||||
('movss mem xmm', ('', 0)),
|
('movss mem xmm', ('', 0)),
|
||||||
('vmovss xmm xmm xmm', ('', 0)),
|
('vmovss xmm xmm xmm', ('1*p5', 1)),
|
||||||
('vmovss mem xmm', ('', 0)),
|
('vmovss mem xmm', ('', 0)),
|
||||||
('vmovss xmm xmm', ('', 0)),
|
('vmovss xmm xmm', ('1*p5', 1)),
|
||||||
('vmovss xmm mem', ('', 0)),
|
('vmovss xmm mem', ('', 0)),
|
||||||
('movss mem xmm', ('', 0)),
|
('movss mem xmm', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movsx:movsxd
|
# https://www.felixcloutier.com/x86/movsx:movsxd
|
||||||
('movsx gpr gpr', ('', 0)),
|
('movsx gpr gpr', ('1*p015', 1)),
|
||||||
('movsx mem gpr', ('', 0)),
|
('movsx mem gpr', ('', 0)),
|
||||||
('movsxd gpr gpr', ('', 0)),
|
('movsxd gpr gpr', ('', 0)),
|
||||||
('movsxd mem gpr', ('', 0)),
|
('movsxd mem gpr', ('', 0)),
|
||||||
('movsb gpr gpr', ('', 0)), # AT&T version
|
('movsb gpr gpr', ('1*p015', 1)), # AT&T version
|
||||||
('movsb mem gpr', ('', 0)), # AT&T version
|
('movsb mem gpr', ('', 0)), # AT&T version
|
||||||
('movsw gpr gpr', ('', 0)), # AT&T version
|
('movsw gpr gpr', ('1*p015', 1)), # AT&T version
|
||||||
('movsw mem gpr', ('', 0)), # AT&T version
|
('movsw mem gpr', ('', 0)), # AT&T version
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movupd
|
# https://www.felixcloutier.com/x86/movupd
|
||||||
('movupd xmm xmm', ('', 0)),
|
('movupd xmm xmm', ('1*p5', 1)),
|
||||||
('movupd mem xmm', ('', 0)),
|
('movupd mem xmm', ('', 0)),
|
||||||
('movupd xmm mem', ('', 0)),
|
('movupd xmm mem', ('', 0)),
|
||||||
('vmovupd xmm xmm', ('', 0)),
|
('vmovupd xmm xmm', ('1*p5', 1)),
|
||||||
('vmovupd mem xmm', ('', 0)),
|
('vmovupd mem xmm', ('', 0)),
|
||||||
('vmovupd xmm mem', ('', 0)),
|
('vmovupd xmm mem', ('', 0)),
|
||||||
('vmovupd ymm ymm', ('', 0)),
|
('vmovupd ymm ymm', ('1*p5', 1)),
|
||||||
('vmovupd mem ymm', ('', 0)),
|
('vmovupd mem ymm', ('', 0)),
|
||||||
('vmovupd ymm mem', ('', 0)),
|
('vmovupd ymm mem', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movups
|
# https://www.felixcloutier.com/x86/movups
|
||||||
('movups xmm xmm', ('', 0)),
|
('movups xmm xmm', ('1*p5', 1)),
|
||||||
('movups mem xmm', ('', 0)),
|
('movups mem xmm', ('', 0)),
|
||||||
('movups xmm mem', ('', 0)),
|
('movups xmm mem', ('', 0)),
|
||||||
('vmovups xmm xmm', ('', 0)),
|
('vmovups xmm xmm', ('1*p5', 1)),
|
||||||
('vmovups mem xmm', ('', 0)),
|
('vmovups mem xmm', ('', 0)),
|
||||||
('vmovups xmm mem', ('', 0)),
|
('vmovups xmm mem', ('', 0)),
|
||||||
('vmovups ymm ymm', ('', 0)),
|
('vmovups ymm ymm', ('1*p5', 1)),
|
||||||
('vmovups mem ymm', ('', 0)),
|
('vmovups mem ymm', ('', 0)),
|
||||||
('vmovups ymm mem', ('', 0)),
|
('vmovups ymm mem', ('', 0)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movzx
|
# https://www.felixcloutier.com/x86/movzx
|
||||||
('movzx gpr gpr', ('', 0)),
|
('movzx gpr gpr', ('1*p015', 1)),
|
||||||
('movzx mem gpr', ('', 0)),
|
('movzx mem gpr', ('', 0)),
|
||||||
('movzb gpr gpr', ('', 0)), # AT&T version
|
('movzb gpr gpr', ('1*p015', 1)), # AT&T version
|
||||||
('movzb mem gpr', ('', 0)), # AT&T version
|
('movzb mem gpr', ('', 0)), # AT&T version
|
||||||
('movzw gpr gpr', ('', 0)), # AT&T version
|
('movzw gpr gpr', ('1*p015', 1)), # AT&T version
|
||||||
('movzw mem gpr', ('', 0)), # AT&T version
|
('movzw mem gpr', ('', 0)), # AT&T version
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/cmovcc
|
# https://www.felixcloutier.com/x86/cmovcc
|
||||||
@@ -450,18 +450,107 @@ snb_mov_instructions = [
|
|||||||
('cmovs mem gpr', ('1*p015+1*p05', 2)),
|
('cmovs mem gpr', ('1*p015+1*p05', 2)),
|
||||||
('cmovz gpr gpr', ('1*p015+1*p05', 2)),
|
('cmovz gpr gpr', ('1*p015+1*p05', 2)),
|
||||||
('cmovz mem gpr', ('1*p015+1*p05', 2)),
|
('cmovz mem gpr', ('1*p015+1*p05', 2)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/pmovmskb
|
||||||
|
('pmovmskb gpr mm', ('1*p0', 2)),
|
||||||
|
('pmovmskb gpr xmm', ('1*p0', 2)),
|
||||||
|
('vpmovmskb gpr xmm', ('1*p0', 2)),
|
||||||
|
('vpmovmskb gpr ymm', ('1*p0', 2)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/pmovsx
|
||||||
|
('pmovsxbw xmm xmm', ('1*p15', 1)),
|
||||||
|
('pmovsxbw mem xmm', ('1*p15', 1)),
|
||||||
|
('pmovsxbd xmm xmm', ('1*p15', 1)),
|
||||||
|
('pmovsxbd mem xmm', ('1*p15', 1)),
|
||||||
|
('pmovsxbq xmm xmm', ('1*p15', 1)),
|
||||||
|
('pmovsxbq mem xmm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbw xmm xmm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbw mem xmm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbd xmm xmm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbd mem xmm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbq xmm xmm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbq mem xmm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbw ymm ymm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbw mem ymm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbd ymm ymm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbd mem ymm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbq ymm ymm', ('1*p15', 1)),
|
||||||
|
('vpmovsxbq mem ymm', ('1*p15', 1)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/pmovzx
|
||||||
|
('pmovzxbw xmm xmm', ('1*p15', 1)),
|
||||||
|
('pmovzxbw mem xmm', ('1*p15', 1)),
|
||||||
|
('vpmovzxbw xmm xmm', ('1*p15', 1)),
|
||||||
|
('vpmovzxbw mem xmm', ('1*p15', 1)),
|
||||||
|
('vpmovzxbw ymm ymm', ('1*p15', 1)),
|
||||||
|
('vpmovzxbw mem ymm', ('1*p15', 1)),
|
||||||
]
|
]
|
||||||
snb_description = '\n'.join([np7.process_item(*item) for item in snb_mov_instructions])
|
|
||||||
|
|
||||||
ivb_mov_instructions = snb_mov_instructions
|
ivb_mov_instructions = list(OrderedDict(snb_mov_instructions + [
|
||||||
ivb_description = '\n'.join([np7.process_item(*item) for item in ivb_mov_instructions])
|
# https://www.felixcloutier.com/x86/mov
|
||||||
|
('mov gpr gpr', ('', 0)),
|
||||||
|
('mov imd gpr', ('', 0)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movapd
|
||||||
|
('movapd xmm xmm', ('', 0)),
|
||||||
|
('vmovapd xmm xmm', ('', 0)),
|
||||||
|
('vmovapd ymm ymm', ('', 0)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movaps
|
||||||
|
('movaps xmm xmm', ('', 0)),
|
||||||
|
('vmovaps xmm xmm', ('', 0)),
|
||||||
|
('vmovaps ymm ymm', ('', 0)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movdqa:vmovdqa32:vmovdqa64
|
||||||
|
('movdqa xmm xmm', ('', 0)),
|
||||||
|
('vmovdqa xmm xmm', ('', 0)),
|
||||||
|
('vmovdqa ymm ymm', ('', 0)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movdqu:vmovdqu8:vmovdqu16:vmovdqu32:vmovdqu64
|
||||||
|
('movdqu xmm xmm', ('', 0)),
|
||||||
|
('vmovdqu xmm xmm', ('', 0)),
|
||||||
|
('vmovdqu ymm ymm', ('', 0)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movupd
|
||||||
|
('movupd xmm xmm', ('', 0)),
|
||||||
|
('vmovupd xmm xmm', ('', 0)),
|
||||||
|
('vmovupd ymm ymm', ('', 0)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movupd
|
||||||
|
('movups xmm xmm', ('', 0)),
|
||||||
|
('vmovups xmm xmm', ('', 0)),
|
||||||
|
('vmovups ymm ymm', ('', 0)),
|
||||||
|
]).items())
|
||||||
|
|
||||||
hsw_mov_instructions = list(OrderedDict(ivb_mov_instructions + [
|
hsw_mov_instructions = list(OrderedDict(ivb_mov_instructions + [
|
||||||
|
# https://www.felixcloutier.com/x86/mov
|
||||||
|
('mov imd gpr', ('1*p0156', 1)),
|
||||||
|
('mov gpr gpr', ('1*p0156', 1)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movbe
|
# https://www.felixcloutier.com/x86/movbe
|
||||||
('movbe gpr mem', ('1*p15', 6)),
|
('movbe gpr mem', ('1*p15', 6)),
|
||||||
('movbe mem gpr', ('1*p15', 6)),
|
('movbe mem gpr', ('1*p15', 6)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movmskpd
|
||||||
|
('movmskpd xmm gpr', ('1*p0', 3)),
|
||||||
|
('vmovmskpd xmm gpr', ('1*p0', 3)),
|
||||||
|
('vmovmskpd ymm gpr', ('1*p0', 3)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movmskps
|
||||||
|
('movmskps xmm gpr', ('1*p0', 3)),
|
||||||
|
('vmovmskps xmm gpr', ('1*p0', 3)),
|
||||||
|
('vmovmskps ymm gpr', ('1*p0', 3)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movsx:movsxd
|
||||||
|
('movsx gpr gpr', ('1*p0156', 1)),
|
||||||
|
('movsb gpr gpr', ('1*p015', 1)), # AT&T version
|
||||||
|
('movsw gpr gpr', ('1*p015', 1)), # AT&T version
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movzx
|
||||||
|
('movzx gpr gpr', ('1*p0156', 1)),
|
||||||
|
('movzb gpr gpr', ('1*p0156', 1)), # AT&T version
|
||||||
|
('movzw gpr gpr', ('1*p0156', 1)), # AT&T version
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/cmovcc
|
# https://www.felixcloutier.com/x86/cmovcc
|
||||||
('cmova gpr gpr', ('1*p0156+2*p06', 2)),
|
('cmova gpr gpr', ('1*p0156+2*p06', 2)),
|
||||||
('cmova mem gpr', ('1*p0156+2*p06', 2)),
|
('cmova mem gpr', ('1*p0156+2*p06', 2)),
|
||||||
@@ -523,8 +612,41 @@ hsw_mov_instructions = list(OrderedDict(ivb_mov_instructions + [
|
|||||||
('cmovs mem gpr', ('1*p0156+1*p06', 2)),
|
('cmovs mem gpr', ('1*p0156+1*p06', 2)),
|
||||||
('cmovz gpr gpr', ('1*p0156+1*p06', 2)),
|
('cmovz gpr gpr', ('1*p0156+1*p06', 2)),
|
||||||
('cmovz mem gpr', ('1*p0156+1*p06', 2)),
|
('cmovz mem gpr', ('1*p0156+1*p06', 2)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/pmovmskb
|
||||||
|
('pmovmskb gpr mm', ('1*p0', 3)),
|
||||||
|
('pmovmskb gpr xmm', ('1*p0', 3)),
|
||||||
|
('vpmovmskb gpr xmm', ('1*p0', 3)),
|
||||||
|
('vpmovmskb gpr ymm', ('1*p0', 3)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/pmovsx
|
||||||
|
('pmovsxbw xmm xmm', ('1*p5', 1)),
|
||||||
|
('pmovsxbw mem xmm', ('1*p5', 1)),
|
||||||
|
('pmovsxbd xmm xmm', ('1*p5', 1)),
|
||||||
|
('pmovsxbd mem xmm', ('1*p5', 1)),
|
||||||
|
('pmovsxbq xmm xmm', ('1*p5', 1)),
|
||||||
|
('pmovsxbq mem xmm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbw xmm xmm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbw mem xmm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbd xmm xmm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbd mem xmm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbq xmm xmm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbq mem xmm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbw ymm ymm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbw mem ymm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbd ymm ymm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbd mem ymm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbq ymm ymm', ('1*p5', 1)),
|
||||||
|
('vpmovsxbq mem ymm', ('1*p5', 1)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/pmovzx
|
||||||
|
('pmovzxbw xmm xmm', ('1*p5', 1)),
|
||||||
|
('pmovzxbw mem xmm', ('1*p5', 1)),
|
||||||
|
('vpmovzxbw xmm xmm', ('1*p5', 1)),
|
||||||
|
('vpmovzxbw mem xmm', ('1*p5', 1)),
|
||||||
|
('vpmovzxbw ymm ymm', ('1*p5', 1)),
|
||||||
|
('vpmovzxbw mem ymm', ('1*p5', 1)),
|
||||||
]).items())
|
]).items())
|
||||||
hsw_description = '\n'.join([p7.process_item(*item) for item in hsw_mov_instructions])
|
|
||||||
|
|
||||||
bdw_mov_instructions = list(OrderedDict(hsw_mov_instructions + [
|
bdw_mov_instructions = list(OrderedDict(hsw_mov_instructions + [
|
||||||
# https://www.felixcloutier.com/x86/cmovcc
|
# https://www.felixcloutier.com/x86/cmovcc
|
||||||
@@ -589,20 +711,34 @@ bdw_mov_instructions = list(OrderedDict(hsw_mov_instructions + [
|
|||||||
('cmovz gpr gpr', ('1*p06', 1)),
|
('cmovz gpr gpr', ('1*p06', 1)),
|
||||||
('cmovz mem gpr', ('1*p06', 1)),
|
('cmovz mem gpr', ('1*p06', 1)),
|
||||||
]).items())
|
]).items())
|
||||||
bdw_description = '\n'.join([p7.process_item(*item) for item in bdw_mov_instructions])
|
|
||||||
|
|
||||||
|
|
||||||
skx_mov_instructions = list(OrderedDict(bdw_mov_instructions + [
|
skx_mov_instructions = list(OrderedDict(bdw_mov_instructions + [
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movapd
|
# https://www.felixcloutier.com/x86/movapd
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movaps
|
# TODO with masking!
|
||||||
|
# TODO the following may eliminate or be bound to 1*p0156:
|
||||||
|
# ('movapd xmm xmm', ('1*p5', 1)),
|
||||||
|
# ('vmovapd xmm xmm', ('1*p5', 1)),
|
||||||
|
# ('vmovapd ymm ymm', ('1*p5', 1)),
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movaps
|
||||||
|
# TODO with masking!
|
||||||
|
# TODO the following may eliminate or be bound to 1*p0156:
|
||||||
|
# ('movaps xmm xmm', ('1*p5', 1)),
|
||||||
|
# ('vmovaps xmm xmm', ('1*p5', 1)),
|
||||||
|
# ('vmovaps ymm ymm', ('1*p5', 1)),
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movbe
|
# https://www.felixcloutier.com/x86/movbe
|
||||||
('movbe gpr mem', ('1*p15', 4)),
|
('movbe gpr mem', ('1*p15', 4)),
|
||||||
('movbe mem gpr', ('1*p15', 4)),
|
('movbe mem gpr', ('1*p15', 4)),
|
||||||
|
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movddup
|
# https://www.felixcloutier.com/x86/movddup
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movdqa:vmovdqa32:vmovdqa64
|
# TODO with masking!
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movdqu:vmovdqu8:vmovdqu16:vmovdqu32:vmovdqu64
|
|
||||||
|
# https://www.felixcloutier.com/x86/movdqa:vmovdqa32:vmovdqa64
|
||||||
|
# TODO with masking!
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movdqu:vmovdqu8:vmovdqu16:vmovdqu32:vmovdqu64
|
||||||
|
# TODO with masking!
|
||||||
|
|
||||||
# https://www.felixcloutier.com/x86/movntdq
|
# https://www.felixcloutier.com/x86/movntdq
|
||||||
('vmovntdq zmm mem', ('', 0)), # TODO NT-store: what latency to use?
|
('vmovntdq zmm mem', ('', 0)), # TODO NT-store: what latency to use?
|
||||||
@@ -619,14 +755,29 @@ skx_mov_instructions = list(OrderedDict(bdw_mov_instructions + [
|
|||||||
# https://www.felixcloutier.com/x86/movq2dq
|
# https://www.felixcloutier.com/x86/movq2dq
|
||||||
('movq2dq mm xmm', ('1*p0+1*p015', 1)),
|
('movq2dq mm xmm', ('1*p0+1*p015', 1)),
|
||||||
|
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movsd
|
# https://www.felixcloutier.com/x86/movsd
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movshdup
|
# TODO with masking!
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movsldup
|
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movss
|
# https://www.felixcloutier.com/x86/movshdup
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movupd
|
# TODO with masking!
|
||||||
# TODO with masking! https://www.felixcloutier.com/x86/movups
|
|
||||||
|
# https://www.felixcloutier.com/x86/movsldup
|
||||||
|
# TODO with masking!
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movss
|
||||||
|
# TODO with masking!
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movupd
|
||||||
|
# TODO with masking!
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/movups
|
||||||
|
# TODO with masking!
|
||||||
|
|
||||||
|
# https://www.felixcloutier.com/x86/pmovsx
|
||||||
|
# TODO with masking!
|
||||||
|
('vpmovsxbw ymm zmm', ('1*p5', 3)),
|
||||||
|
('vpmovsxbw mem zmm', ('1*p5', 1)),
|
||||||
]).items())
|
]).items())
|
||||||
skx_description = '\n'.join([p7.process_item(*item) for item in skx_mov_instructions])
|
|
||||||
|
|
||||||
csx_mov_instructions = OrderedDict(skx_mov_instructions + [
|
csx_mov_instructions = OrderedDict(skx_mov_instructions + [
|
||||||
|
|
||||||
@@ -634,8 +785,8 @@ csx_mov_instructions = OrderedDict(skx_mov_instructions + [
|
|||||||
|
|
||||||
def get_description(arch, rhs_comment=None):
|
def get_description(arch, rhs_comment=None):
|
||||||
descriptions = {
|
descriptions = {
|
||||||
'snb': '\n'.join([p7.process_item(*item) for item in snb_mov_instructions]),
|
'snb': '\n'.join([np7.process_item(*item) for item in snb_mov_instructions]),
|
||||||
'ivb': '\n'.join([p7.process_item(*item) for item in ivb_mov_instructions]),
|
'ivb': '\n'.join([np7.process_item(*item) for item in ivb_mov_instructions]),
|
||||||
'hsw': '\n'.join([p7.process_item(*item) for item in hsw_mov_instructions]),
|
'hsw': '\n'.join([p7.process_item(*item) for item in hsw_mov_instructions]),
|
||||||
'bdw': '\n'.join([p7.process_item(*item) for item in bdw_mov_instructions]),
|
'bdw': '\n'.join([p7.process_item(*item) for item in bdw_mov_instructions]),
|
||||||
'skx': '\n'.join([p7.process_item(*item) for item in skx_mov_instructions]),
|
'skx': '\n'.join([p7.process_item(*item) for item in skx_mov_instructions]),
|
||||||
@@ -649,7 +800,7 @@ def get_description(arch, rhs_comment=None):
|
|||||||
|
|
||||||
commented_description = ""
|
commented_description = ""
|
||||||
for l in descriptions[arch].split('\n'):
|
for l in descriptions[arch].split('\n'):
|
||||||
commented_description += ("{:<"+str(max_length)+"} # {}\n").format(l, rhs_comment)
|
commented_description += ("{:<"+str(max_length)+"} # {}\n").format(l, rhs_comment)
|
||||||
description = commented_description
|
description = commented_description
|
||||||
|
|
||||||
return description
|
return description
|
||||||
@@ -661,7 +812,7 @@ if __name__ == '__main__':
|
|||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
print(get_description(sys.argv[1], rhs_comment="by "+' '.join(sys.argv)))
|
print(get_description(sys.argv[1], rhs_comment=' '.join(sys.argv)))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print("Unknown architecture.")
|
print("Unknown architecture.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|||||||
Reference in New Issue
Block a user