1# mach: aarch64 2 3# Check the vector multiply add instruction: mla. 4 5.include "testutils.inc" 6 7 .data 8 .align 4 9input: 10 .word 0x04030201 11 .word 0x08070605 12 .word 0x0c0b0a09 13 .word 0x100f0e0d 14m8b: 15 .word 0x110a0502 16 .word 0x4132251a 17m16b: 18 .word 0x110a0502 19 .word 0x4132251a 20 .word 0x917a6552 21 .word 0x01e2c5aa 22m4h: 23 .word 0x180a0402 24 .word 0x70323c1a 25m8h: 26 .word 0x180a0402 27 .word 0x70323c1a 28 .word 0x087ab452 29 .word 0xe0e26caa 30m2s: 31 .word 0x140a0402 32 .word 0xa46a3c1a 33m4s: 34 .word 0x140a0402 35 .word 0xa46a3c1a 36 .word 0xb52ab452 37 .word 0x464b6caa 38 39 start 40 adrp x0, input 41 ldr q0, [x0, #:lo12:input] 42 43 movi v1.8b, #1 44 mla v1.8b, v0.8b, v0.8b 45 mov x1, v1.d[0] 46 adrp x3, m8b 47 ldr x4, [x3, #:lo12:m8b] 48 cmp x1, x4 49 bne .Lfailure 50 51 movi v1.16b, #1 52 mla v1.16b, v0.16b, v0.16b 53 mov x1, v1.d[0] 54 mov x2, v1.d[1] 55 adrp x3, m16b 56 ldr x4, [x3, #:lo12:m16b] 57 cmp x1, x4 58 bne .Lfailure 59 ldr x5, [x3, #:lo12:m16b+8] 60 cmp x2, x5 61 bne .Lfailure 62 63 movi v1.4h, #1 64 mla v1.4h, v0.4h, v0.4h 65 mov x1, v1.d[0] 66 adrp x3, m4h 67 ldr x4, [x3, #:lo12:m4h] 68 cmp x1, x4 69 bne .Lfailure 70 71 movi v1.8h, #1 72 mla v1.8h, v0.8h, v0.8h 73 mov x1, v1.d[0] 74 mov x2, v1.d[1] 75 adrp x3, m8h 76 ldr x4, [x3, #:lo12:m8h] 77 cmp x1, x4 78 bne .Lfailure 79 ldr x5, [x3, #:lo12:m8h+8] 80 cmp x2, x5 81 bne .Lfailure 82 83 movi v1.2s, #1 84 mla v1.2s, v0.2s, v0.2s 85 mov x1, v1.d[0] 86 adrp x3, m2s 87 ldr x4, [x3, #:lo12:m2s] 88 cmp x1, x4 89 bne .Lfailure 90 91 movi v1.4s, #1 92 mla v1.4s, v0.4s, v0.4s 93 mov x1, v1.d[0] 94 mov x2, v1.d[1] 95 adrp x3, m4s 96 ldr x4, [x3, #:lo12:m4s] 97 cmp x1, x4 98 bne .Lfailure 99 ldr x5, [x3, #:lo12:m4s+8] 100 cmp x2, x5 101 bne .Lfailure 102 103 pass 104.Lfailure: 105 fail 106