1# mach: aarch64 2 3# Check the bitwise vector instructions: bif, bit, bsl, eor. 4 5.include "testutils.inc" 6 7 .data 8 .align 4 9inputa: 10 .word 0x04030201 11 .word 0x08070605 12 .word 0x0c0b0a09 13 .word 0x100f0e0d 14inputb: 15 .word 0x40302010 16 .word 0x80706050 17 .word 0xc0b0a090 18 .word 0x01f0e0d0 19mask: 20 .word 0xFF00FF00 21 .word 0x00FF00FF 22 .word 0xF0F0F0F0 23 .word 0x0F0F0F0F 24 25 start 26 adrp x0, inputa 27 ldr q0, [x0, #:lo12:inputa] 28 adrp x0, inputb 29 ldr q1, [x0, #:lo12:inputb] 30 adrp x0, mask 31 ldr q2, [x0, #:lo12:mask] 32 33 mov v3.8b, v0.8b 34 bif v3.8b, v1.8b, v2.8b 35 addv b4, v3.8b 36 mov x1, v4.d[0] 37 cmp x1, #50 38 bne .Lfailure 39 40 mov v3.16b, v0.16b 41 bif v3.16b, v1.16b, v2.16b 42 addv b4, v3.16b 43 mov x1, v4.d[0] 44 cmp x1, #252 45 bne .Lfailure 46 47 mov v3.8b, v0.8b 48 bit v3.8b, v1.8b, v2.8b 49 addv b4, v3.8b 50 mov x1, v4.d[0] 51 cmp x1, #50 52 bne .Lfailure 53 54 mov v3.16b, v0.16b 55 bit v3.16b, v1.16b, v2.16b 56 addv b4, v3.16b 57 mov x1, v4.d[0] 58 cmp x1, #13 59 bne .Lfailure 60 61 mov v3.8b, v2.8b 62 bsl v3.8b, v0.8b, v1.8b 63 addv b4, v3.8b 64 mov x1, v4.d[0] 65 cmp x1, #50 66 bne .Lfailure 67 68 mov v3.16b, v2.16b 69 bsl v3.16b, v0.16b, v1.16b 70 addv b4, v3.16b 71 mov x1, v4.d[0] 72 cmp x1, #252 73 bne .Lfailure 74 75 mov v3.8b, v0.8b 76 eor v3.8b, v1.8b, v2.8b 77 addv b4, v3.8b 78 mov x1, v4.d[0] 79 cmp x1, #252 80 bne .Lfailure 81 82 mov v3.16b, v0.16b 83 eor v3.16b, v1.16b, v2.16b 84 addv b4, v3.16b 85 mov x1, v4.d[0] 86 cmp x1, #247 87 bne .Lfailure 88 89 pass 90.Lfailure: 91 fail 92