uzp.s 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. # mach: aarch64
  2. # Check the unzip instructions: uzp1, uzp2.
  3. .include "testutils.inc"
  4. .data
  5. .align 4
  6. input1:
  7. .word 0x04030201
  8. .word 0x08070605
  9. .word 0x0c0b0a09
  10. .word 0x100f0e0d
  11. input2:
  12. .word 0x14131211
  13. .word 0x18171615
  14. .word 0x1c1b1a19
  15. .word 0x201f1e1d
  16. zl8b:
  17. .word 0x07050301
  18. .word 0x17151311
  19. zu8b:
  20. .word 0x08060402
  21. .word 0x18161412
  22. zl16b:
  23. .word 0x07050301
  24. .word 0x0f0d0b09
  25. .word 0x17151311
  26. .word 0x1f1d1b19
  27. zu16b:
  28. .word 0x08060402
  29. .word 0x100e0c0a
  30. .word 0x18161412
  31. .word 0x201e1c1a
  32. zl4h:
  33. .word 0x06050201
  34. .word 0x16151211
  35. zu4h:
  36. .word 0x08070403
  37. .word 0x18171413
  38. zl8h:
  39. .word 0x06050201
  40. .word 0x0e0d0a09
  41. .word 0x16151211
  42. .word 0x1e1d1a19
  43. zu8h:
  44. .word 0x08070403
  45. .word 0x100f0c0b
  46. .word 0x18171413
  47. .word 0x201f1c1b
  48. zl2s:
  49. .word 0x04030201
  50. .word 0x14131211
  51. zu2s:
  52. .word 0x08070605
  53. .word 0x18171615
  54. zl4s:
  55. .word 0x04030201
  56. .word 0x0c0b0a09
  57. .word 0x14131211
  58. .word 0x1c1b1a19
  59. zu4s:
  60. .word 0x08070605
  61. .word 0x100f0e0d
  62. .word 0x18171615
  63. .word 0x201f1e1d
  64. zl2d:
  65. .word 0x04030201
  66. .word 0x08070605
  67. .word 0x14131211
  68. .word 0x18171615
  69. zu2d:
  70. .word 0x0c0b0a09
  71. .word 0x100f0e0d
  72. .word 0x1c1b1a19
  73. .word 0x201f1e1d
  74. start
  75. adrp x0, input1
  76. ldr q0, [x0, #:lo12:input1]
  77. adrp x0, input2
  78. ldr q1, [x0, #:lo12:input2]
  79. uzp1 v2.8b, v0.8b, v1.8b
  80. mov x1, v2.d[0]
  81. adrp x3, zl8b
  82. ldr x4, [x3, #:lo12:zl8b]
  83. cmp x1, x4
  84. bne .Lfailure
  85. uzp2 v2.8b, v0.8b, v1.8b
  86. mov x1, v2.d[0]
  87. adrp x3, zu8b
  88. ldr x4, [x3, #:lo12:zu8b]
  89. cmp x1, x4
  90. bne .Lfailure
  91. uzp1 v2.16b, v0.16b, v1.16b
  92. mov x1, v2.d[0]
  93. mov x2, v2.d[1]
  94. adrp x3, zl16b
  95. ldr x4, [x3, #:lo12:zl16b]
  96. cmp x1, x4
  97. bne .Lfailure
  98. ldr x5, [x3, #:lo12:zl16b+8]
  99. cmp x2, x5
  100. bne .Lfailure
  101. uzp2 v2.16b, v0.16b, v1.16b
  102. mov x1, v2.d[0]
  103. mov x2, v2.d[1]
  104. adrp x3, zu16b
  105. ldr x4, [x3, #:lo12:zu16b]
  106. cmp x1, x4
  107. bne .Lfailure
  108. ldr x5, [x3, #:lo12:zu16b+8]
  109. cmp x2, x5
  110. bne .Lfailure
  111. uzp1 v2.4h, v0.4h, v1.4h
  112. mov x1, v2.d[0]
  113. adrp x3, zl4h
  114. ldr x4, [x3, #:lo12:zl4h]
  115. cmp x1, x4
  116. bne .Lfailure
  117. uzp2 v2.4h, v0.4h, v1.4h
  118. mov x1, v2.d[0]
  119. adrp x3, zu4h
  120. ldr x4, [x3, #:lo12:zu4h]
  121. cmp x1, x4
  122. bne .Lfailure
  123. uzp1 v2.8h, v0.8h, v1.8h
  124. mov x1, v2.d[0]
  125. mov x2, v2.d[1]
  126. adrp x3, zl8h
  127. ldr x4, [x3, #:lo12:zl8h]
  128. cmp x1, x4
  129. bne .Lfailure
  130. ldr x5, [x3, #:lo12:zl8h+8]
  131. cmp x2, x5
  132. bne .Lfailure
  133. uzp2 v2.8h, v0.8h, v1.8h
  134. mov x1, v2.d[0]
  135. mov x2, v2.d[1]
  136. adrp x3, zu8h
  137. ldr x4, [x3, #:lo12:zu8h]
  138. cmp x1, x4
  139. bne .Lfailure
  140. ldr x5, [x3, #:lo12:zu8h+8]
  141. cmp x2, x5
  142. bne .Lfailure
  143. uzp1 v2.2s, v0.2s, v1.2s
  144. mov x1, v2.d[0]
  145. adrp x3, zl2s
  146. ldr x4, [x3, #:lo12:zl2s]
  147. cmp x1, x4
  148. bne .Lfailure
  149. uzp2 v2.2s, v0.2s, v1.2s
  150. mov x1, v2.d[0]
  151. adrp x3, zu2s
  152. ldr x4, [x3, #:lo12:zu2s]
  153. cmp x1, x4
  154. bne .Lfailure
  155. uzp1 v2.4s, v0.4s, v1.4s
  156. mov x1, v2.d[0]
  157. mov x2, v2.d[1]
  158. adrp x3, zl4s
  159. ldr x4, [x3, #:lo12:zl4s]
  160. cmp x1, x4
  161. bne .Lfailure
  162. ldr x5, [x3, #:lo12:zl4s+8]
  163. cmp x2, x5
  164. bne .Lfailure
  165. uzp2 v2.4s, v0.4s, v1.4s
  166. mov x1, v2.d[0]
  167. mov x2, v2.d[1]
  168. adrp x3, zu4s
  169. ldr x4, [x3, #:lo12:zu4s]
  170. cmp x1, x4
  171. bne .Lfailure
  172. ldr x5, [x3, #:lo12:zu4s+8]
  173. cmp x2, x5
  174. bne .Lfailure
  175. uzp1 v2.2d, v0.2d, v1.2d
  176. mov x1, v2.d[0]
  177. mov x2, v2.d[1]
  178. adrp x3, zl2d
  179. ldr x4, [x3, #:lo12:zl2d]
  180. cmp x1, x4
  181. bne .Lfailure
  182. ldr x5, [x3, #:lo12:zl2d+8]
  183. cmp x2, x5
  184. bne .Lfailure
  185. uzp2 v2.2d, v0.2d, v1.2d
  186. mov x1, v2.d[0]
  187. mov x2, v2.d[1]
  188. adrp x3, zu2d
  189. ldr x4, [x3, #:lo12:zu2d]
  190. cmp x1, x4
  191. bne .Lfailure
  192. ldr x5, [x3, #:lo12:zu2d+8]
  193. cmp x2, x5
  194. bne .Lfailure
  195. pass
  196. .Lfailure:
  197. fail