mirror of
https://github.com/RRZE-HPC/OSACA.git
synced 2025-12-16 00:50:06 +01:00
also added pmovs and updated some port numbers
This commit is contained in:
@@ -143,31 +143,31 @@ p7 = MOVEntryBuilderIntelWithPort7AGU()
|
||||
# SNB
|
||||
snb_mov_instructions = [
|
||||
# https://www.felixcloutier.com/x86/mov
|
||||
('mov gpr gpr', ('', 0)),
|
||||
('mov gpr gpr', ('1*p015', 1)),
|
||||
('mov gpr mem', ('', 0)),
|
||||
('mov mem gpr', ('', 0)),
|
||||
('mov imd gpr', ('', 0)),
|
||||
('mov imd gpr', ('1*p015', 1)),
|
||||
('mov imd mem', ('', 0)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movapd
|
||||
('movapd xmm xmm', ('', 0)),
|
||||
('movapd xmm xmm', ('1*p5', 1)),
|
||||
('movapd xmm mem', ('', 0)),
|
||||
('movapd mem xmm', ('', 0)),
|
||||
('vmovapd xmm xmm', ('', 0)),
|
||||
('vmovapd xmm xmm', ('1*p5', 1)),
|
||||
('vmovapd xmm mem', ('', 0)),
|
||||
('vmovapd mem xmm', ('', 0)),
|
||||
('vmovapd ymm ymm', ('', 0)),
|
||||
('vmovapd ymm ymm', ('1*p5', 1)),
|
||||
('vmovapd ymm mem', ('', 0)),
|
||||
('vmovapd mem ymm', ('', 0)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movaps
|
||||
('movaps xmm xmm', ('', 0)),
|
||||
('movaps xmm xmm', ('1*p5', 1)),
|
||||
('movaps xmm mem', ('', 0)),
|
||||
('movaps mem xmm', ('', 0)),
|
||||
('vmovaps xmm xmm', ('', 0)),
|
||||
('vmovaps xmm xmm', ('1*p5', 1)),
|
||||
('movaps xmm mem', ('', 0)),
|
||||
('movaps mem xmm', ('', 0)),
|
||||
('vmovaps ymm ymm', ('', 0)),
|
||||
('vmovaps ymm ymm', ('1*p5', 1)),
|
||||
('movaps ymm mem', ('', 0)),
|
||||
('movaps mem ymm', ('', 0)),
|
||||
|
||||
@@ -184,17 +184,17 @@ snb_mov_instructions = [
|
||||
('movd mem xmm', ('', 0)),
|
||||
('movq gpr xmm', ('1*p5', 1)),
|
||||
('movq mem xmm', ('', 0)),
|
||||
('movd xmm gpr', ('1*p5', 1)),
|
||||
('movd xmm gpr', ('1*p0', 1)),
|
||||
('movd xmm mem', ('', 0)),
|
||||
('movq xmm gpr', ('1*p5', 1)),
|
||||
('movq xmm gpr', ('1*p0', 1)),
|
||||
('movq xmm mem', ('', 0)),
|
||||
('vmovd gpr xmm', ('1*p5', 1)),
|
||||
('vmovd mem xmm', ('', 0)),
|
||||
('vmovq gpr xmm', ('1*p5', 1)),
|
||||
('vmovq mem xmm', ('', 0)),
|
||||
('vmovd xmm gpr', ('1*p5', 1)),
|
||||
('vmovd xmm gpr', ('1*p0', 1)),
|
||||
('vmovd xmm mem', ('', 0)),
|
||||
('vmovq xmm gpr', ('1*p5', 1)),
|
||||
('vmovq xmm gpr', ('1*p0', 1)),
|
||||
('vmovq xmm mem', ('', 0)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movddup
|
||||
@@ -209,24 +209,24 @@ snb_mov_instructions = [
|
||||
('movdq2q xmm mm', ('1*p015+1*p5', 1)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movdqa:vmovdqa32:vmovdqa64
|
||||
('movdqa xmm xmm', ('', 0)),
|
||||
('movdqa xmm xmm', ('1*p015', 1)),
|
||||
('movdqa mem xmm', ('', 0)),
|
||||
('movdqa xmm mem', ('', 0)),
|
||||
('vmovdqa xmm xmm', ('', 0)),
|
||||
('vmovdqa xmm xmm', ('1*p015', 1)),
|
||||
('vmovdqa mem xmm', ('', 0)),
|
||||
('vmovdqa xmm mem', ('', 0)),
|
||||
('vmovdqa ymm ymm', ('', 0)),
|
||||
('vmovdqa ymm ymm', ('1*p05', 1)),
|
||||
('vmovdqa mem ymm', ('', 0)),
|
||||
('vmovdqa ymm mem', ('', 0)),
|
||||
|
||||
# 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 xmm mem', ('', 0)),
|
||||
('vmovdqu xmm xmm', ('', 0)),
|
||||
('vmovdqu xmm xmm', ('1*p015', 1)),
|
||||
('vmovdqu mem xmm', ('', 0)),
|
||||
('vmovdqu xmm mem', ('', 0)),
|
||||
('vmovdqu ymm ymm', ('', 0)),
|
||||
('vmovdqu ymm ymm', ('1*p05', 1)),
|
||||
('vmovdqu mem ymm', ('', 0)),
|
||||
('vmovdqu ymm mem', ('', 0)),
|
||||
|
||||
@@ -254,20 +254,20 @@ snb_mov_instructions = [
|
||||
('movlpd mem xmm', ('1*p5', 1)),
|
||||
('vmovlpd mem xmm xmm', ('1*p5', 1)),
|
||||
('movlpd xmm mem', ('', 0)),
|
||||
('vmovlpd mem xmm', ('', 0)),
|
||||
('vmovlpd mem xmm', ('1*p5', 1)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movlps
|
||||
('movlps mem xmm', ('1*p5', 1)),
|
||||
('vmovlps mem xmm xmm', ('1*p5', 1)),
|
||||
('movlps xmm mem', ('', 0)),
|
||||
('vmovlps mem xmm', ('', 0)),
|
||||
('vmovlps mem xmm', ('1*p5', 1)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movmskpd
|
||||
('movmskpd xmm gpr', ('1*p0', 1)),
|
||||
('vmovmskpd xmm gpr', ('1*p0', 1)),
|
||||
('vmovmskpd ymm gpr', ('1*p0', 1)),
|
||||
('movmskpd xmm gpr', ('1*p0', 2)),
|
||||
('vmovmskpd xmm gpr', ('1*p0', 2)),
|
||||
('vmovmskpd ymm gpr', ('1*p0', 2)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movmskpd
|
||||
# https://www.felixcloutier.com/x86/movmskps
|
||||
('movmskps xmm gpr', ('1*p0', 1)),
|
||||
('vmovmskps xmm gpr', ('1*p0', 1)),
|
||||
('vmovmskps ymm gpr', ('1*p0', 1)),
|
||||
@@ -302,10 +302,10 @@ snb_mov_instructions = [
|
||||
('movq mm mm', ('', 0)),
|
||||
('movq mem mm', ('', 0)),
|
||||
('movq mm mem', ('', 0)),
|
||||
('movq xmm xmm', ('', 0)),
|
||||
('movq xmm xmm', ('1*p015', 1)),
|
||||
('movq mem xmm', ('', 0)),
|
||||
('movq xmm mem', ('', 0)),
|
||||
('vmovq xmm xmm', ('', 0)),
|
||||
('vmovq xmm xmm', ('1*p015', 1)),
|
||||
('vmovq mem xmm', ('', 0)),
|
||||
('vmovq xmm mem', ('', 0)),
|
||||
|
||||
@@ -317,76 +317,76 @@ snb_mov_instructions = [
|
||||
# ('movs mem mem', ()),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movsd
|
||||
('movsd xmm xmm', ('', 0)),
|
||||
('movsd xmm xmm', ('1*p5', 1)),
|
||||
('movsd mem xmm', ('', 0)),
|
||||
('movsd xmm mem', ('', 0)),
|
||||
('vmovsd xmm xmm xmm', ('', 0)),
|
||||
('vmovsd xmm xmm xmm', ('1*p5', 1)),
|
||||
('vmovsd mem xmm', ('', 0)),
|
||||
('vmovsd xmm mem', ('', 0)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movshdup
|
||||
('movshdup xmm xmm', ('', 0)),
|
||||
('movshdup xmm xmm', ('1*p5', 1)),
|
||||
('movshdup mem xmm', ('', 0)),
|
||||
('vmovshdup xmm xmm', ('', 0)),
|
||||
('vmovshdup xmm xmm', ('1*p5', 1)),
|
||||
('vmovshdup mem xmm', ('', 0)),
|
||||
('vmovshdup ymm ymm', ('', 0)),
|
||||
('vmovshdup ymm ymm', ('1*p5', 1)),
|
||||
('vmovshdup mem ymm', ('', 0)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movsldup
|
||||
('movsldup xmm xmm', ('', 0)),
|
||||
('movsldup xmm xmm', ('1*p5', 1)),
|
||||
('movsldup mem xmm', ('', 0)),
|
||||
('vmovsldup xmm xmm', ('', 0)),
|
||||
('vmovsldup xmm xmm', ('1*p5', 1)),
|
||||
('vmovsldup mem xmm', ('', 0)),
|
||||
('vmovsldup ymm ymm', ('', 0)),
|
||||
('vmovsldup ymm ymm', ('1*p5', 1)),
|
||||
('vmovsldup mem ymm', ('', 0)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movss
|
||||
('movss xmm xmm', ('', 0)),
|
||||
('movss xmm xmm', ('1*p5', 1)),
|
||||
('movss mem xmm', ('', 0)),
|
||||
('vmovss xmm xmm xmm', ('', 0)),
|
||||
('vmovss xmm xmm xmm', ('1*p5', 1)),
|
||||
('vmovss mem xmm', ('', 0)),
|
||||
('vmovss xmm xmm', ('', 0)),
|
||||
('vmovss xmm xmm', ('1*p5', 1)),
|
||||
('vmovss xmm mem', ('', 0)),
|
||||
('movss mem xmm', ('', 0)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movsx:movsxd
|
||||
('movsx gpr gpr', ('', 0)),
|
||||
('movsx gpr gpr', ('1*p015', 1)),
|
||||
('movsx mem gpr', ('', 0)),
|
||||
('movsxd gpr 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
|
||||
('movsw gpr gpr', ('', 0)), # AT&T version
|
||||
('movsw gpr gpr', ('1*p015', 1)), # AT&T version
|
||||
('movsw mem gpr', ('', 0)), # AT&T version
|
||||
|
||||
# https://www.felixcloutier.com/x86/movupd
|
||||
('movupd xmm xmm', ('', 0)),
|
||||
('movupd xmm xmm', ('1*p5', 1)),
|
||||
('movupd mem xmm', ('', 0)),
|
||||
('movupd xmm mem', ('', 0)),
|
||||
('vmovupd xmm xmm', ('', 0)),
|
||||
('vmovupd xmm xmm', ('1*p5', 1)),
|
||||
('vmovupd mem xmm', ('', 0)),
|
||||
('vmovupd xmm mem', ('', 0)),
|
||||
('vmovupd ymm ymm', ('', 0)),
|
||||
('vmovupd ymm ymm', ('1*p5', 1)),
|
||||
('vmovupd mem ymm', ('', 0)),
|
||||
('vmovupd ymm mem', ('', 0)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movups
|
||||
('movups xmm xmm', ('', 0)),
|
||||
('movups xmm xmm', ('1*p5', 1)),
|
||||
('movups mem xmm', ('', 0)),
|
||||
('movups xmm mem', ('', 0)),
|
||||
('vmovups xmm xmm', ('', 0)),
|
||||
('vmovups xmm xmm', ('1*p5', 1)),
|
||||
('vmovups mem xmm', ('', 0)),
|
||||
('vmovups xmm mem', ('', 0)),
|
||||
('vmovups ymm ymm', ('', 0)),
|
||||
('vmovups ymm ymm', ('1*p5', 1)),
|
||||
('vmovups mem ymm', ('', 0)),
|
||||
('vmovups ymm mem', ('', 0)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movzx
|
||||
('movzx gpr gpr', ('', 0)),
|
||||
('movzx gpr gpr', ('1*p015', 1)),
|
||||
('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
|
||||
('movzw gpr gpr', ('', 0)), # AT&T version
|
||||
('movzw gpr gpr', ('1*p015', 1)), # AT&T version
|
||||
('movzw mem gpr', ('', 0)), # AT&T version
|
||||
|
||||
# https://www.felixcloutier.com/x86/cmovcc
|
||||
@@ -450,18 +450,107 @@ snb_mov_instructions = [
|
||||
('cmovs mem gpr', ('1*p015+1*p05', 2)),
|
||||
('cmovz gpr 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_description = '\n'.join([np7.process_item(*item) for item in ivb_mov_instructions])
|
||||
ivb_mov_instructions = list(OrderedDict(snb_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 + [
|
||||
# https://www.felixcloutier.com/x86/mov
|
||||
('mov imd gpr', ('1*p0156', 1)),
|
||||
('mov gpr gpr', ('1*p0156', 1)),
|
||||
|
||||
# https://www.felixcloutier.com/x86/movbe
|
||||
('movbe gpr mem', ('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
|
||||
('cmova gpr 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)),
|
||||
('cmovz gpr 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())
|
||||
hsw_description = '\n'.join([p7.process_item(*item) for item in hsw_mov_instructions])
|
||||
|
||||
bdw_mov_instructions = list(OrderedDict(hsw_mov_instructions + [
|
||||
# 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 mem gpr', ('1*p06', 1)),
|
||||
]).items())
|
||||
bdw_description = '\n'.join([p7.process_item(*item) for item in bdw_mov_instructions])
|
||||
|
||||
|
||||
skx_mov_instructions = list(OrderedDict(bdw_mov_instructions + [
|
||||
# TODO with masking! https://www.felixcloutier.com/x86/movapd
|
||||
# TODO with masking! https://www.felixcloutier.com/x86/movaps
|
||||
# https://www.felixcloutier.com/x86/movapd
|
||||
# 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
|
||||
('movbe gpr mem', ('1*p15', 4)),
|
||||
('movbe mem gpr', ('1*p15', 4)),
|
||||
|
||||
# TODO with masking! https://www.felixcloutier.com/x86/movddup
|
||||
# TODO with masking! https://www.felixcloutier.com/x86/movdqa:vmovdqa32:vmovdqa64
|
||||
# TODO with masking! https://www.felixcloutier.com/x86/movdqu:vmovdqu8:vmovdqu16:vmovdqu32:vmovdqu64
|
||||
# https://www.felixcloutier.com/x86/movddup
|
||||
# TODO with masking!
|
||||
|
||||
# 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
|
||||
('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
|
||||
('movq2dq mm xmm', ('1*p0+1*p015', 1)),
|
||||
|
||||
# TODO with masking! https://www.felixcloutier.com/x86/movsd
|
||||
# TODO with masking! https://www.felixcloutier.com/x86/movshdup
|
||||
# TODO with masking! 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
|
||||
# https://www.felixcloutier.com/x86/movsd
|
||||
# TODO with masking!
|
||||
|
||||
# https://www.felixcloutier.com/x86/movshdup
|
||||
# TODO with masking!
|
||||
|
||||
# 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())
|
||||
skx_description = '\n'.join([p7.process_item(*item) for item in 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):
|
||||
descriptions = {
|
||||
'snb': '\n'.join([p7.process_item(*item) for item in snb_mov_instructions]),
|
||||
'ivb': '\n'.join([p7.process_item(*item) for item in ivb_mov_instructions]),
|
||||
'snb': '\n'.join([np7.process_item(*item) for item in snb_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]),
|
||||
'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]),
|
||||
@@ -649,7 +800,7 @@ def get_description(arch, rhs_comment=None):
|
||||
|
||||
commented_description = ""
|
||||
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
|
||||
|
||||
return description
|
||||
@@ -661,7 +812,7 @@ if __name__ == '__main__':
|
||||
sys.exit(0)
|
||||
|
||||
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:
|
||||
print("Unknown architecture.")
|
||||
sys.exit(1)
|
||||
|
||||
Reference in New Issue
Block a user