Advertisement
Guest User

Untitled

a guest
May 1st, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. mov eax, -1
  2. movd mm7, eax
  3. punpckldq mm7, mm7 //распаковка младших упакованных данных (двойные слова в учетверное слово)
  4. packuswb mm7, mm7 //преобразовывает знаковые слова в байты без знака
  5.  
  6. movq mm0, a //mm0 = a
  7. movq mm1, mm0 //mm0 = mm1 = a
  8. movq mm2, mm7
  9. pcmpgtb mm2, mm0
  10. pxor mm2, mm7
  11. punpcklbw mm0, mm2 //mm0 = a[1..4] // распаковать младшие упакованные данные, преобразовывать байты в слова
  12. punpckhbw mm1, mm2 //mm1 = a[5..8] // распаковать старшие упакованные данные
  13.  
  14. movq mm2, b //mm2 = b
  15. movq mm3, mm2 //mm3 = mm2 = b
  16. movq mm4, mm7
  17. pcmpgtb mm4, mm2
  18. pxor mm4, mm7
  19. punpcklbw mm2, mm4 //mm2 = b[1..4]
  20. punpckhbw mm3, mm4 //mm3 = b[5..8]
  21.  
  22. psubsw mm0, mm2 //mm0 = a-b[1..4]
  23. psubsw mm1, mm3 //mm1 = a-b[5..8]
  24.  
  25. movq mm2, c //mm2 = c
  26. movq mm3, mm2 //mm3 = mm2 = c
  27. movq mm4, mm7
  28. pcmpgtb mm4, mm2
  29. pxor mm4, mm7
  30. punpcklbw mm2, mm4 //mm2 = c[1..4]
  31. punpckhbw mm3, mm4 //mm3 = c[5..8]
  32.  
  33. pmullw mm2, d[TYPE d * 0] //mm2 = (c*d)[1..4] (младшие)
  34. pmulhw mm5, d[TYPE d * 0] //mm5 = (c*d)[1..4] (старшие)
  35.  
  36. pmullw mm3, d[TYPE d * 4] //mm3 = (c*d)[5..8] (младшие)
  37. pmulhw mm6, d[TYPE d * 4] //mm6 = (c*d)[5..8] (старшие)
  38.  
  39. paddsw mm0, mm2 //mm0 = a-b+c*d[1..4]
  40. paddsw mm1, mm3 //mm1 = a-b+c*d[5..8]
  41.  
  42. movq mm2, mm0 //mm0 = mm2
  43. punpcklwd mm0, mm4 //mm0 = a-b+c*d[1,2]
  44. punpckhbw mm2, mm5 //mm2 = a-b+c*d[3,4]
  45.  
  46. movq mm3, mm1 //mm1 = mm3
  47. punpcklwd mm1, mm5 //mm1 = a-b+c*d[5,6]
  48. punpckhbw mm3, mm6 //mm3 = a-b+c*d[7,8]
  49.  
  50. movq f[TYPE f * 0], mm0 //load f[1,2]
  51. movq f[TYPE f * 2], mm2 //load f[3,4]
  52. movq f[TYPE f * 4], mm1 //load f[5,6]
  53. movq f[TYPE f * 6], mm3 //load f[7,8]
  54. emms
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement