1# mach: aarch64 2 3# Check the non-widening multiply vector instruction: mul. 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 0x10090401 16 .word 0x40312419 17m16b: 18 .word 0x10090401 19 .word 0x40312419 20 .word 0x90796451 21 .word 0x00e1c4a9 22m4h: 23 .word 0x18090401 24 .word 0x70313c19 25m8h: 26 .word 0x18090401 27 .word 0x70313c19 28 .word 0x0879b451 29 .word 0xe0e16ca9 30m2s: 31 .word 0x140a0401 32 .word 0xa46a3c19 33m4s: 34 .word 0x140a0401 35 .word 0xa46a3c19 36 .word 0xb52ab451 37 .word 0x464b6ca9 38 39 start 40 adrp x0, input 41 ldr q0, [x0, #:lo12:input] 42 43 mul v1.8b, v0.8b, v0.8b 44 mov x1, v1.d[0] 45 adrp x3, m8b 46 ldr x4, [x0, #:lo12:m8b] 47 cmp x1, x4 48 bne .Lfailure 49 50 mul v1.16b, v0.16b, v0.16b 51 mov x1, v1.d[0] 52 mov x2, v1.d[1] 53 adrp x3, m16b 54 ldr x4, [x0, #:lo12:m16b] 55 cmp x1, x4 56 bne .Lfailure 57 ldr x5, [x0, #:lo12:m16b+8] 58 cmp x2, x5 59 bne .Lfailure 60 61 mul v1.4h, v0.4h, v0.4h 62 mov x1, v1.d[0] 63 adrp x3, m4h 64 ldr x4, [x0, #:lo12:m4h] 65 cmp x1, x4 66 bne .Lfailure 67 68 mul v1.8h, v0.8h, v0.8h 69 mov x1, v1.d[0] 70 mov x2, v1.d[1] 71 adrp x3, m8h 72 ldr x4, [x0, #:lo12:m8h] 73 cmp x1, x4 74 bne .Lfailure 75 ldr x5, [x0, #:lo12:m8h+8] 76 cmp x2, x5 77 bne .Lfailure 78 79 mul v1.2s, v0.2s, v0.2s 80 mov x1, v1.d[0] 81 adrp x3, m2s 82 ldr x4, [x0, #:lo12:m2s] 83 cmp x1, x4 84 bne .Lfailure 85 86 mul v1.4s, v0.4s, v0.4s 87 mov x1, v1.d[0] 88 mov x2, v1.d[1] 89 adrp x3, m4s 90 ldr x4, [x0, #:lo12:m4s] 91 cmp x1, x4 92 bne .Lfailure 93 ldr x5, [x0, #:lo12:m4s+8] 94 cmp x2, x5 95 bne .Lfailure 96 97 pass 98.Lfailure: 99 fail 100