diff --git a/osaca/data/generate_mov_entries.py b/osaca/data/generate_mov_entries.py index 4332925..2cb3ecc 100755 --- a/osaca/data/generate_mov_entries.py +++ b/osaca/data/generate_mov_entries.py @@ -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)