xref: /netbsd-src/external/gpl3/gdb.old/dist/sim/testsuite/aarch64/mul.s (revision 22ebeae4b2252475e0ebe332f69734639cb946ea)
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