xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/aarch64/mls.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1# mach: aarch64
2
3# Check the vector multiply subtract instruction: mls.
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 0xf1f8fd00
16	.word 0xc1d0dde8
17m16b:
18	.word 0xf1f8fd00
19	.word 0xc1d0dde8
20	.word 0x71889db0
21	.word 0x01203d58
22m4h:
23	.word 0xe7f8fc00
24	.word 0x8fd0c3e8
25m8h:
26	.word 0xe7f8fc00
27	.word 0x8fd0c3e8
28	.word 0xf7884bb0
29	.word 0x1f209358
30m2s:
31	.word 0xebf5fc00
32	.word 0x5b95c3e8
33m4s:
34	.word 0xebf5fc00
35	.word 0x5b95c3e8
36	.word 0x4ad54bb0
37	.word 0xb9b49358
38
39	start
40	adrp x0, input
41	ldr q0, [x0, #:lo12:input]
42
43	movi v1.8b, #1
44	mls 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	mls 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	mls 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	mls 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	mls 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	mls 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