Skip to content

Instantly share code, notes, and snippets.

@quasilyte
Last active May 22, 2018 17:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save quasilyte/63876cbf288a9aa2b7e5d63f746d6127 to your computer and use it in GitHub Desktop.
Save quasilyte/63876cbf288a9aa2b7e5d63f746d6127 to your computer and use it in GitHub Desktop.

Given this data.txt file that includes all encodings from new end2end tests:

c5f970ffb1
c4e37bf010ff
c4e3fbf010ff
c5f970d1ff
c5fd70d1ff
c5fa70d1ff
c5fe70d1ff
c5fb70d1ff
c5ff70d1ff
c4e37909d1ff
c4e37d08d1ff
c5e972f1ff
c5ed72f1ff
c5e973f9ff
c5ed73f9ff
c5e973f1ff
c5ed73f1ff
c5e972d1ff
c5ed72d1ff
c5e973d9ff
c5ed73d9ff
c5e973d1ff
c5ed73d1ff
c4e3791508ff
c4e37915c8ff
c4e37d19caff
c4e37d39caff
c4e379dfd1ff
c4e37961d1ff
c4e37960d1ff
c4e37963d1ff
c4e37962d1ff
c4e3fd01d1ff
c4e37905d1ff
c4e37d05d1ff
c4e37904d1ff
c4e37d04d1ff
c4e3791dcaff
c4e37d1dcaff
c5e971f1ff
c5ed71f1ff
c5e972e1ff
c5ed72e1ff
c5e971e1ff
c5ed71e1ff
c5f171d1ff
c5ed71d1ff
c4e37917c8ff
c4e37914c8ff
c4e37916c8ff
c4e3f916c8ff
./xed -64 -A -ih data.txt 
XDIS 0: AVX       AVX        C5F970FFB1               vpshufd $0xb1, %xmm7, %xmm7
XDIS 5: BMI2      BMI2       C4E37BF010FF             rorxl  $0xff, (%rax), %edx
XDIS b: BMI2      BMI2       C4E3FBF010FF             rorxq  $0xff, (%rax), %rdx
XDIS 11: AVX       AVX        C5F970D1FF               vpshufd $0xff, %xmm1, %xmm2
XDIS 16: AVX2      AVX2       C5FD70D1FF               vpshufd $0xff, %ymm1, %ymm2
XDIS 1b: AVX       AVX        C5FA70D1FF               vpshufhw $0xff, %xmm1, %xmm2
XDIS 20: AVX2      AVX2       C5FE70D1FF               vpshufhw $0xff, %ymm1, %ymm2
XDIS 25: AVX       AVX        C5FB70D1FF               vpshuflw $0xff, %xmm1, %xmm2
XDIS 2a: AVX2      AVX2       C5FF70D1FF               vpshuflw $0xff, %ymm1, %ymm2
XDIS 2f: AVX       AVX        C4E37909D1FF             vroundpd $0xff, %xmm1, %xmm2
XDIS 35: AVX       AVX        C4E37D08D1FF             vroundps $0xff, %ymm1, %ymm2
XDIS 3b: AVX       AVX        C5E972F1FF               vpslld $0xff, %xmm1, %xmm2
XDIS 40: AVX2      AVX2       C5ED72F1FF               vpslld $0xff, %ymm1, %ymm2
XDIS 45: AVX       AVX        C5E973F9FF               vpslldq $0xff, %xmm1, %xmm2
XDIS 4a: AVX2      AVX2       C5ED73F9FF               vpslldq $0xff, %ymm1, %ymm2
XDIS 4f: AVX       AVX        C5E973F1FF               vpsllq $0xff, %xmm1, %xmm2
XDIS 54: AVX2      AVX2       C5ED73F1FF               vpsllq $0xff, %ymm1, %ymm2
XDIS 59: AVX       AVX        C5E972D1FF               vpsrld $0xff, %xmm1, %xmm2
XDIS 5e: AVX2      AVX2       C5ED72D1FF               vpsrld $0xff, %ymm1, %ymm2
XDIS 63: AVX       AVX        C5E973D9FF               vpsrldq $0xff, %xmm1, %xmm2
XDIS 68: AVX2      AVX2       C5ED73D9FF               vpsrldq $0xff, %ymm1, %ymm2
XDIS 6d: AVX       AVX        C5E973D1FF               vpsrlq $0xff, %xmm1, %xmm2
XDIS 72: AVX2      AVX2       C5ED73D1FF               vpsrlq $0xff, %ymm1, %ymm2
XDIS 77: AVX       AVX        C4E3791508FF             vpextrww  $0xff, %xmm1, (%rax)
XDIS 7d: AVX       AVX        C4E37915C8FF             vpextrw $0xff, %xmm1, %eax
XDIS 83: AVX       AVX        C4E37D19CAFF             vextractf128 $0xff, %ymm1, %xmm2
XDIS 89: AVX2      AVX2       C4E37D39CAFF             vextracti128 $0xff, %ymm1, %xmm2
XDIS 8f: AES       AVXAES     C4E379DFD1FF             vaeskeygenassist $0xff, %xmm1, %xmm2
XDIS 95: STTNI     AVX        C4E37961D1FF             vpcmpestri $0xff, %xmm1, %xmm2
XDIS 9b: STTNI     AVX        C4E37960D1FF             vpcmpestrm $0xff, %xmm1, %xmm2
XDIS a1: STTNI     AVX        C4E37963D1FF             vpcmpistri $0xff, %xmm1, %xmm2
XDIS a7: STTNI     AVX        C4E37962D1FF             vpcmpistrm $0xff, %xmm1, %xmm2
XDIS ad: AVX2      AVX2       C4E3FD01D1FF             vpermpd $0xff, %ymm1, %ymm2
XDIS b3: AVX       AVX        C4E37905D1FF             vpermilpd $0xff, %xmm1, %xmm2
XDIS b9: AVX       AVX        C4E37D05D1FF             vpermilpd $0xff, %ymm1, %ymm2
XDIS bf: AVX       AVX        C4E37904D1FF             vpermilps $0xff, %xmm1, %xmm2
XDIS c5: AVX       AVX        C4E37D04D1FF             vpermilps $0xff, %ymm1, %ymm2
XDIS cb: CONVERT   F16C       C4E3791DCAFF             vcvtps2ph $0xff, %xmm1, %xmm2
XDIS d1: CONVERT   F16C       C4E37D1DCAFF             vcvtps2ph $0xff, %ymm1, %xmm2
XDIS d7: AVX       AVX        C5E971F1FF               vpsllw $0xff, %xmm1, %xmm2
XDIS dc: AVX2      AVX2       C5ED71F1FF               vpsllw $0xff, %ymm1, %ymm2
XDIS e1: AVX       AVX        C5E972E1FF               vpsrad $0xff, %xmm1, %xmm2
XDIS e6: AVX2      AVX2       C5ED72E1FF               vpsrad $0xff, %ymm1, %ymm2
XDIS eb: AVX       AVX        C5E971E1FF               vpsraw $0xff, %xmm1, %xmm2
XDIS f0: AVX2      AVX2       C5ED71E1FF               vpsraw $0xff, %ymm1, %ymm2
XDIS f5: AVX       AVX        C5F171D1FF               vpsrlw $0xff, %xmm1, %xmm1
XDIS fa: AVX2      AVX2       C5ED71D1FF               vpsrlw $0xff, %ymm1, %ymm2
XDIS ff: AVX       AVX        C4E37917C8FF             vextractps $0xff, %xmm1, %eax
XDIS 105: AVX       AVX        C4E37914C8FF             vpextrb $0xff, %xmm1, %eax
XDIS 10b: AVX       AVX        C4E37916C8FF             vpextrd $0xff, %xmm1, %eax
XDIS 111: AVX       AVX        C4E3F916C8FF             vpextrq $0xff, %xmm1, %rax
# end of text section.
# Errors: 0
#XED3 DECODE STATS
#Total DECODE cycles:        6103
#Total instructions DECODE: 1
#Total tail DECODE cycles:        484164
#Total tail instructions DECODE: 51
#Total cycles/instruction DECODE: 6103.00
#Total tail cycles/instruction DECODE: 9493.41

And with side-by-side comparison:

C5F970FFB1       vpshufd $0xb1, %xmm7, %xmm7          // VPSHUFD $-79, X7, X7
C4E37BF010FF     rorxl  $0xff, (%rax), %edx           // RORXL $-1, (AX), DX
C4E3FBF010FF     rorxq  $0xff, (%rax), %rdx           // RORXQ $-1, (AX), DX
C5F970D1FF       vpshufd $0xff, %xmm1, %xmm2          // VPSHUFD $-1, X1, X2
C5FD70D1FF       vpshufd $0xff, %ymm1, %ymm2          // VPSHUFD $-1, Y1, Y2
C5FA70D1FF       vpshufhw $0xff, %xmm1, %xmm2         // VPSHUFHW $-1, X1, X2
C5FE70D1FF       vpshufhw $0xff, %ymm1, %ymm2         // VPSHUFHW $-1, Y1, Y2
C5FB70D1FF       vpshuflw $0xff, %xmm1, %xmm2         // VPSHUFLW $-1, X1, X2
C5FF70D1FF       vpshuflw $0xff, %ymm1, %ymm2         // VPSHUFLW $-1, Y1, Y2
C4E37909D1FF     vroundpd $0xff, %xmm1, %xmm2         // VROUNDPD $-1, X1, X2
C4E37D08D1FF     vroundps $0xff, %ymm1, %ymm2         // VROUNDPS $-1, Y1, Y2
C5E972F1FF       vpslld $0xff, %xmm1, %xmm2           // VPSLLD $-1, X1, X2
C5ED72F1FF       vpslld $0xff, %ymm1, %ymm2           // VPSLLD $-1, Y1, Y2
C5E973F9FF       vpslldq $0xff, %xmm1, %xmm2          // VPSLLDQ $-1, X1, X2
C5ED73F9FF       vpslldq $0xff, %ymm1, %ymm2          // VPSLLDQ $-1, Y1, Y2
C5E973F1FF       vpsllq $0xff, %xmm1, %xmm2           // VPSLLQ $-1, X1, X2
C5ED73F1FF       vpsllq $0xff, %ymm1, %ymm2           // VPSLLQ $-1, Y1, Y2
C5E972D1FF       vpsrld $0xff, %xmm1, %xmm2           // VPSRLD $-1, X1, X2
C5ED72D1FF       vpsrld $0xff, %ymm1, %ymm2           // VPSRLD $-1, Y1, Y2
C5E973D9FF       vpsrldq $0xff, %xmm1, %xmm2          // VPSRLDQ $-1, X1, X2
C5ED73D9FF       vpsrldq $0xff, %ymm1, %ymm2          // VPSRLDQ $-1, Y1, Y2
C5E973D1FF       vpsrlq $0xff, %xmm1, %xmm2           // VPSRLQ $-1, X1, X2
C5ED73D1FF       vpsrlq $0xff, %ymm1, %ymm2           // VPSRLQ $-1, Y1, Y2
C4E3791508FF     vpextrww  $0xff, %xmm1, (%rax)       // VPEXTRW $-1, X1, (AX
C4E37915C8FF     vpextrw $0xff, %xmm1, %eax           // VPEXTRW $-1, X1, AX
C4E37D19CAFF     vextractf128 $0xff, %ymm1, %xmm2     // VEXTRACTF128 $-1, Y1, X2
C4E37D39CAFF     vextracti128 $0xff, %ymm1, %xmm2     // VEXTRACTI128 $-1, Y1, X2
C4E379DFD1FF     vaeskeygenassist $0xff, %xmm1, %xmm2 // VAESKEYGENASSIST $-1, X1, X2
C4E37961D1FF     vpcmpestri $0xff, %xmm1, %xmm2       // VPCMPESTRI $-1, X1, X2
C4E37960D1FF     vpcmpestrm $0xff, %xmm1, %xmm2       // VPCMPESTRM $-1, X1, X2
C4E37963D1FF     vpcmpistri $0xff, %xmm1, %xmm2       // VPCMPISTRI $-1, X1, X2
C4E37962D1FF     vpcmpistrm $0xff, %xmm1, %xmm2       // VPCMPISTRM $-1, X1, X2
C4E3FD01D1FF     vpermpd $0xff, %ymm1, %ymm2          // VPERMPD $-1, Y1, Y2
C4E37905D1FF     vpermilpd $0xff, %xmm1, %xmm2        // VPERMILPD $-1, X1, X2
C4E37D05D1FF     vpermilpd $0xff, %ymm1, %ymm2        // VPERMILPD $-1, Y1, Y2
C4E37904D1FF     vpermilps $0xff, %xmm1, %xmm2        // VPERMILPS $-1, X1, X2
C4E37D04D1FF     vpermilps $0xff, %ymm1, %ymm2        // VPERMILPS $-1, Y1, Y2
C4E3791DCAFF     vcvtps2ph $0xff, %xmm1, %xmm2        // VCVTPS2PH $-1, X1, X2
C4E37D1DCAFF     vcvtps2ph $0xff, %ymm1, %xmm2        // VCVTPS2PH $-1, Y1, X2
C5E971F1FF       vpsllw $0xff, %xmm1, %xmm2           // VPSLLW $-1, X1, X2
C5ED71F1FF       vpsllw $0xff, %ymm1, %ymm2           // VPSLLW $-1, Y1, Y2
C5E972E1FF       vpsrad $0xff, %xmm1, %xmm2           // VPSRAD $-1, X1, X2
C5ED72E1FF       vpsrad $0xff, %ymm1, %ymm2           // VPSRAD $-1, Y1, Y2
C5E971E1FF       vpsraw $0xff, %xmm1, %xmm2           // VPSRAW $-1, X1, X2
C5ED71E1FF       vpsraw $0xff, %ymm1, %ymm2           // VPSRAW $-1, Y1, Y2
C5F171D1FF       vpsrlw $0xff, %xmm1, %xmm1           // VPSRLW $-1, X1, X1
C5ED71D1FF       vpsrlw $0xff, %ymm1, %ymm2           // VPSRLW $-1, Y1, Y2
C4E37917C8FF     vextractps $0xff, %xmm1, %eax        // VEXTRACTPS $-1, X1, AX
C4E37914C8FF     vpextrb $0xff, %xmm1, %eax           // VPEXTRB $-1, X1, AX
C4E37916C8FF     vpextrd $0xff, %xmm1, %eax           // VPEXTRD $-1, X1, AX
C4E3F916C8FF     vpextrq $0xff, %xmm1, %rax           // VPEXTRQ $-1, X1, AX
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment