1 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
2 
3 #include "test_sve_acle.h"
4 
5 /*
6 ** qrdmulh_lane_0_s32_tied1:
7 **	sqrdmulh	z0\.s, z0\.s, z1\.s\[0\]
8 **	ret
9 */
10 TEST_UNIFORM_Z (qrdmulh_lane_0_s32_tied1, svint32_t,
11 		z0 = svqrdmulh_lane_s32 (z0, z1, 0),
12 		z0 = svqrdmulh_lane (z0, z1, 0))
13 
14 /*
15 ** qrdmulh_lane_0_s32_tied2:
16 **	sqrdmulh	z0\.s, z1\.s, z0\.s\[0\]
17 **	ret
18 */
19 TEST_UNIFORM_Z (qrdmulh_lane_0_s32_tied2, svint32_t,
20 		z0 = svqrdmulh_lane_s32 (z1, z0, 0),
21 		z0 = svqrdmulh_lane (z1, z0, 0))
22 
23 /*
24 ** qrdmulh_lane_0_s32_untied:
25 **	sqrdmulh	z0\.s, z1\.s, z2\.s\[0\]
26 **	ret
27 */
28 TEST_UNIFORM_Z (qrdmulh_lane_0_s32_untied, svint32_t,
29 		z0 = svqrdmulh_lane_s32 (z1, z2, 0),
30 		z0 = svqrdmulh_lane (z1, z2, 0))
31 
32 /*
33 ** qrdmulh_lane_1_s32:
34 **	sqrdmulh	z0\.s, z1\.s, z2\.s\[1\]
35 **	ret
36 */
37 TEST_UNIFORM_Z (qrdmulh_lane_1_s32, svint32_t,
38 		z0 = svqrdmulh_lane_s32 (z1, z2, 1),
39 		z0 = svqrdmulh_lane (z1, z2, 1))
40 
41 /*
42 ** qrdmulh_lane_2_s32:
43 **	sqrdmulh	z0\.s, z1\.s, z2\.s\[2\]
44 **	ret
45 */
46 TEST_UNIFORM_Z (qrdmulh_lane_2_s32, svint32_t,
47 		z0 = svqrdmulh_lane_s32 (z1, z2, 2),
48 		z0 = svqrdmulh_lane (z1, z2, 2))
49 
50 /*
51 ** qrdmulh_lane_3_s32:
52 **	sqrdmulh	z0\.s, z1\.s, z2\.s\[3\]
53 **	ret
54 */
55 TEST_UNIFORM_Z (qrdmulh_lane_3_s32, svint32_t,
56 		z0 = svqrdmulh_lane_s32 (z1, z2, 3),
57 		z0 = svqrdmulh_lane (z1, z2, 3))
58 
59 /*
60 ** qrdmulh_lane_z8_s32:
61 **	str	d8, \[sp, -16\]!
62 **	mov	(z[0-7])\.d, z8\.d
63 **	sqrdmulh	z0\.s, z1\.s, \1\.s\[1\]
64 **	ldr	d8, \[sp\], 16
65 **	ret
66 */
67 TEST_DUAL_LANE_REG (qrdmulh_lane_z8_s32, svint32_t, svint32_t, z8,
68 		    z0 = svqrdmulh_lane_s32 (z1, z8, 1),
69 		    z0 = svqrdmulh_lane (z1, z8, 1))
70 
71 /*
72 ** qrdmulh_lane_z16_s32:
73 **	mov	(z[0-7])\.d, z16\.d
74 **	sqrdmulh	z0\.s, z1\.s, \1\.s\[1\]
75 **	ret
76 */
77 TEST_DUAL_LANE_REG (qrdmulh_lane_z16_s32, svint32_t, svint32_t, z16,
78 		    z0 = svqrdmulh_lane_s32 (z1, z16, 1),
79 		    z0 = svqrdmulh_lane (z1, z16, 1))
80