]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qrdmulh_lane_s16.c
[AArch64] Add support for the SVE2 ACLE
[thirdparty/gcc.git] / gcc / testsuite / gcc.target / aarch64 / sve2 / acle / asm / qrdmulh_lane_s16.c
1 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
2
3 #include "test_sve_acle.h"
4
5 /*
6 ** qrdmulh_lane_0_s16_tied1:
7 ** sqrdmulh z0\.h, z0\.h, z1\.h\[0\]
8 ** ret
9 */
10 TEST_UNIFORM_Z (qrdmulh_lane_0_s16_tied1, svint16_t,
11 z0 = svqrdmulh_lane_s16 (z0, z1, 0),
12 z0 = svqrdmulh_lane (z0, z1, 0))
13
14 /*
15 ** qrdmulh_lane_0_s16_tied2:
16 ** sqrdmulh z0\.h, z1\.h, z0\.h\[0\]
17 ** ret
18 */
19 TEST_UNIFORM_Z (qrdmulh_lane_0_s16_tied2, svint16_t,
20 z0 = svqrdmulh_lane_s16 (z1, z0, 0),
21 z0 = svqrdmulh_lane (z1, z0, 0))
22
23 /*
24 ** qrdmulh_lane_0_s16_untied:
25 ** sqrdmulh z0\.h, z1\.h, z2\.h\[0\]
26 ** ret
27 */
28 TEST_UNIFORM_Z (qrdmulh_lane_0_s16_untied, svint16_t,
29 z0 = svqrdmulh_lane_s16 (z1, z2, 0),
30 z0 = svqrdmulh_lane (z1, z2, 0))
31
32 /*
33 ** qrdmulh_lane_1_s16:
34 ** sqrdmulh z0\.h, z1\.h, z2\.h\[1\]
35 ** ret
36 */
37 TEST_UNIFORM_Z (qrdmulh_lane_1_s16, svint16_t,
38 z0 = svqrdmulh_lane_s16 (z1, z2, 1),
39 z0 = svqrdmulh_lane (z1, z2, 1))
40
41 /*
42 ** qrdmulh_lane_2_s16:
43 ** sqrdmulh z0\.h, z1\.h, z2\.h\[2\]
44 ** ret
45 */
46 TEST_UNIFORM_Z (qrdmulh_lane_2_s16, svint16_t,
47 z0 = svqrdmulh_lane_s16 (z1, z2, 2),
48 z0 = svqrdmulh_lane (z1, z2, 2))
49
50 /*
51 ** qrdmulh_lane_3_s16:
52 ** sqrdmulh z0\.h, z1\.h, z2\.h\[3\]
53 ** ret
54 */
55 TEST_UNIFORM_Z (qrdmulh_lane_3_s16, svint16_t,
56 z0 = svqrdmulh_lane_s16 (z1, z2, 3),
57 z0 = svqrdmulh_lane (z1, z2, 3))
58
59 /*
60 ** qrdmulh_lane_4_s16:
61 ** sqrdmulh z0\.h, z1\.h, z2\.h\[4\]
62 ** ret
63 */
64 TEST_UNIFORM_Z (qrdmulh_lane_4_s16, svint16_t,
65 z0 = svqrdmulh_lane_s16 (z1, z2, 4),
66 z0 = svqrdmulh_lane (z1, z2, 4))
67
68 /*
69 ** qrdmulh_lane_5_s16:
70 ** sqrdmulh z0\.h, z1\.h, z2\.h\[5\]
71 ** ret
72 */
73 TEST_UNIFORM_Z (qrdmulh_lane_5_s16, svint16_t,
74 z0 = svqrdmulh_lane_s16 (z1, z2, 5),
75 z0 = svqrdmulh_lane (z1, z2, 5))
76
77 /*
78 ** qrdmulh_lane_6_s16:
79 ** sqrdmulh z0\.h, z1\.h, z2\.h\[6\]
80 ** ret
81 */
82 TEST_UNIFORM_Z (qrdmulh_lane_6_s16, svint16_t,
83 z0 = svqrdmulh_lane_s16 (z1, z2, 6),
84 z0 = svqrdmulh_lane (z1, z2, 6))
85
86 /*
87 ** qrdmulh_lane_7_s16:
88 ** sqrdmulh z0\.h, z1\.h, z2\.h\[7\]
89 ** ret
90 */
91 TEST_UNIFORM_Z (qrdmulh_lane_7_s16, svint16_t,
92 z0 = svqrdmulh_lane_s16 (z1, z2, 7),
93 z0 = svqrdmulh_lane (z1, z2, 7))
94
95 /*
96 ** qrdmulh_lane_z8_s16:
97 ** str d8, \[sp, -16\]!
98 ** mov (z[0-7])\.d, z8\.d
99 ** sqrdmulh z0\.h, z1\.h, \1\.h\[1\]
100 ** ldr d8, \[sp\], 16
101 ** ret
102 */
103 TEST_DUAL_LANE_REG (qrdmulh_lane_z8_s16, svint16_t, svint16_t, z8,
104 z0 = svqrdmulh_lane_s16 (z1, z8, 1),
105 z0 = svqrdmulh_lane (z1, z8, 1))
106
107 /*
108 ** qrdmulh_lane_z16_s16:
109 ** mov (z[0-7])\.d, z16\.d
110 ** sqrdmulh z0\.h, z1\.h, \1\.h\[1\]
111 ** ret
112 */
113 TEST_DUAL_LANE_REG (qrdmulh_lane_z16_s16, svint16_t, svint16_t, z16,
114 z0 = svqrdmulh_lane_s16 (z1, z16, 1),
115 z0 = svqrdmulh_lane (z1, z16, 1))