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