Advertisement
Guest User

lowecase(shortstring) vectorized

a guest
Jul 30th, 2015
376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.46 KB | None | 0 0
  1. .section __TEXT,__literal16,16byte_literals
  2. .align 4
  3. LCPI249_0:
  4. .long 255 ## 0xff
  5. .long 255 ## 0xff
  6. .long 255 ## 0xff
  7. .long 255 ## 0xff
  8. LCPI249_1:
  9. .long 4294967231 ## 0xffffffbf
  10. .long 4294967231 ## 0xffffffbf
  11. .long 4294967231 ## 0xffffffbf
  12. .long 4294967231 ## 0xffffffbf
  13. LCPI249_2:
  14. .long 2147483648 ## 0x80000000
  15. .long 2147483648 ## 0x80000000
  16. .long 2147483648 ## 0x80000000
  17. .long 2147483648 ## 0x80000000
  18. LCPI249_3:
  19. .long 2147483674 ## 0x8000001a
  20. .long 2147483674 ## 0x8000001a
  21. .long 2147483674 ## 0x8000001a
  22. .long 2147483674 ## 0x8000001a
  23. LCPI249_4:
  24. .long 32 ## 0x20
  25. .long 32 ## 0x20
  26. .long 32 ## 0x20
  27. .long 32 ## 0x20
  28. LCPI249_5:
  29. .byte 0 ## 0x0
  30. .byte 4 ## 0x4
  31. .byte 8 ## 0x8
  32. .byte 12 ## 0xc
  33. .space 1
  34. .space 1
  35. .space 1
  36. .space 1
  37. .space 1
  38. .space 1
  39. .space 1
  40. .space 1
  41. .space 1
  42. .space 1
  43. .space 1
  44. .space 1
  45. .section __TEXT,__text,regular,pure_instructions
  46. .globl _SYSTEM_$$_LOWERCASE$SHORTSTRING$$SHORTSTRING
  47. .align 4, 0x90
  48. _SYSTEM_$$_LOWERCASE$SHORTSTRING$$SHORTSTRING: ## @"\01_SYSTEM_$$_LOWERCASE$SHORTSTRING$$SHORTSTRING"
  49. ## BB#0:
  50. pushq %rbp
  51. movq %rsp, %rbp
  52. pushq %rbx
  53. movb (%rsi), %al
  54. movb %al, (%rdi)
  55. movzbl (%rsi), %r10d
  56. testq %r10, %r10
  57. je LBB249_19
  58. ## BB#1: ## %Lj3912.preheader
  59. leal -1(%r10), %r9d
  60. incq %r9
  61. movq %r10, %rdx
  62. andq $7, %rdx
  63. leal -1(%r10), %eax
  64. xorl %ebx, %ebx
  65. movq %r9, %r8
  66. subq %rdx, %r8
  67. je LBB249_7
  68. ## BB#2: ## %vector.memcheck
  69. incq %rax
  70. leaq 1(%rdi), %r11
  71. leaq (%rsi,%rax), %rdx
  72. xorl %ebx, %ebx
  73. cmpq %rdx, %r11
  74. ja LBB249_4
  75. ## BB#3: ## %vector.memcheck
  76. leaq 1(%rsi), %rdx
  77. addq %rdi, %rax
  78. cmpq %rax, %rdx
  79. jbe LBB249_7
  80. LBB249_4: ## %vector.body.preheader
  81. leaq 5(%rdi), %rcx
  82. leaq 5(%rsi), %rdx
  83. leal -1(%r10), %r11d
  84. incq %r11
  85. movq %r10, %rax
  86. andq $7, %rax
  87. subq %rax, %r11
  88. movdqa LCPI249_0(%rip), %xmm8 ## xmm8 = [255,255,255,255]
  89. movdqa LCPI249_1(%rip), %xmm9 ## xmm9 = [4294967231,4294967231,4294967231,4294967231]
  90. movdqa LCPI249_2(%rip), %xmm10 ## xmm10 = [2147483648,2147483648,2147483648,2147483648]
  91. movdqa LCPI249_3(%rip), %xmm2 ## xmm2 = [2147483674,2147483674,2147483674,2147483674]
  92. movdqa LCPI249_4(%rip), %xmm4 ## xmm4 = [32,32,32,32]
  93. movdqa LCPI249_5(%rip), %xmm5 ## xmm5 = <0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u>
  94. .align 4, 0x90
  95. LBB249_5: ## %vector.body
  96. ## =>This Inner Loop Header: Depth=1
  97. movd -4(%rdx), %xmm6
  98. punpcklbw %xmm0, %xmm6 ## xmm6 = xmm6[0],xmm0[0],xmm6[1],xmm0[1],xmm6[2],xmm0[2],xmm6[3],xmm0[3],xmm6[4],xmm0[4],xmm6[5],xmm0[5],xmm6[6],xmm0[6],xmm6[7],xmm0[7]
  99. punpcklwd %xmm0, %xmm6 ## xmm6 = xmm6[0],xmm0[0],xmm6[1],xmm0[1],xmm6[2],xmm0[2],xmm6[3],xmm0[3]
  100. movd (%rdx), %xmm7
  101. punpcklbw %xmm0, %xmm7 ## xmm7 = xmm7[0],xmm0[0],xmm7[1],xmm0[1],xmm7[2],xmm0[2],xmm7[3],xmm0[3],xmm7[4],xmm0[4],xmm7[5],xmm0[5],xmm7[6],xmm0[6],xmm7[7],xmm0[7]
  102. punpcklwd %xmm0, %xmm7 ## xmm7 = xmm7[0],xmm0[0],xmm7[1],xmm0[1],xmm7[2],xmm0[2],xmm7[3],xmm0[3]
  103. movdqa %xmm6, %xmm0
  104. pand %xmm8, %xmm0
  105. movdqa %xmm7, %xmm1
  106. pand %xmm8, %xmm1
  107. paddd %xmm9, %xmm0
  108. paddd %xmm9, %xmm1
  109. pxor %xmm10, %xmm0
  110. movdqa %xmm2, %xmm3
  111. pcmpgtd %xmm0, %xmm3
  112. pxor %xmm10, %xmm1
  113. movdqa %xmm2, %xmm0
  114. pcmpgtd %xmm1, %xmm0
  115. movdqa %xmm3, %xmm1
  116. pandn %xmm6, %xmm1
  117. paddd %xmm4, %xmm6
  118. pand %xmm3, %xmm6
  119. por %xmm1, %xmm6
  120. movdqa %xmm0, %xmm1
  121. pandn %xmm7, %xmm1
  122. paddd %xmm4, %xmm7
  123. pand %xmm0, %xmm7
  124. por %xmm1, %xmm7
  125. pshufb %xmm5, %xmm6
  126. movd %xmm6, -4(%rcx)
  127. pshufb %xmm5, %xmm7
  128. movd %xmm7, (%rcx)
  129. addq $8, %rcx
  130. addq $8, %rdx
  131. addq $-8, %r11
  132. jne LBB249_5
  133. ## BB#6:
  134. movq %r8, %rbx
  135. LBB249_7: ## %middle.block
  136. cmpq %rbx, %r9
  137. je LBB249_19
  138. ## BB#8: ## %Lj3912.preheader17
  139. movl %r10d, %edx
  140. subl %ebx, %edx
  141. leal -1(%r10), %eax
  142. subl %ebx, %eax
  143. testb $1, %dl
  144. je LBB249_12
  145. ## BB#9: ## %Lj3912.prol
  146. movzbl 1(%rsi,%rbx), %r8d
  147. movl %r8d, %edx
  148. addl $-65, %edx
  149. cmpl $26, %edx
  150. jae LBB249_11
  151. ## BB#10:
  152. addb $32, %r8b
  153. LBB249_11: ## %Lj3912.prol
  154. movb %r8b, 1(%rdi,%rbx)
  155. incq %rbx
  156. LBB249_12: ## %Lj3912.preheader17.split
  157. testl %eax, %eax
  158. je LBB249_19
  159. ## BB#13: ## %Lj3912.preheader17.split.split
  160. incl %r10d
  161. leal 1(%rbx), %eax
  162. subl %eax, %r10d
  163. leaq 2(%rdi,%rbx), %rax
  164. leaq 2(%rsi,%rbx), %rdx
  165. .align 4, 0x90
  166. LBB249_14: ## %Lj3912
  167. ## =>This Inner Loop Header: Depth=1
  168. movzbl -1(%rdx), %ecx
  169. movl %ecx, %esi
  170. addl $-65, %esi
  171. cmpl $26, %esi
  172. jae LBB249_16
  173. ## BB#15: ## in Loop: Header=BB249_14 Depth=1
  174. addb $32, %cl
  175. LBB249_16: ## %Lj3912
  176. ## in Loop: Header=BB249_14 Depth=1
  177. movb %cl, -1(%rax)
  178. movzbl (%rdx), %esi
  179. movl %esi, %ecx
  180. addl $-65, %ecx
  181. cmpl $26, %ecx
  182. jae LBB249_18
  183. ## BB#17: ## in Loop: Header=BB249_14 Depth=1
  184. addb $32, %sil
  185. LBB249_18: ## %Lj3912
  186. ## in Loop: Header=BB249_14 Depth=1
  187. addq $2, %rbx
  188. movb %sil, (%rax)
  189. addq $2, %rax
  190. addq $2, %rdx
  191. addl $-2, %r10d
  192. jne LBB249_14
  193. LBB249_19: ## %Lj3904
  194. movq %rdi, %rax
  195. popq %rbx
  196. popq %rbp
  197. retq
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement