1 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
2 
3 #include "test_sve_acle.h"
4 
5 /*
6 ** qdmullb_lane_0_s64_tied1:
7 **	sqdmullb	z0\.d, z0\.s, z1\.s\[0\]
8 **	ret
9 */
10 TEST_TYPE_CHANGE_Z (qdmullb_lane_0_s64_tied1, svint64_t, svint32_t,
11 		    z0_res = svqdmullb_lane_s64 (z0, z1, 0),
12 		    z0_res = svqdmullb_lane (z0, z1, 0))
13 
14 /*
15 ** qdmullb_lane_0_s64_tied2:
16 **	sqdmullb	z0\.d, z1\.s, z0\.s\[0\]
17 **	ret
18 */
19 TEST_TYPE_CHANGE_Z (qdmullb_lane_0_s64_tied2, svint64_t, svint32_t,
20 		    z0_res = svqdmullb_lane_s64 (z1, z0, 0),
21 		    z0_res = svqdmullb_lane (z1, z0, 0))
22 
23 /*
24 ** qdmullb_lane_0_s64_untied:
25 **	sqdmullb	z0\.d, z1\.s, z2\.s\[0\]
26 **	ret
27 */
28 TEST_TYPE_CHANGE_Z (qdmullb_lane_0_s64_untied, svint64_t, svint32_t,
29 		    z0_res = svqdmullb_lane_s64 (z1, z2, 0),
30 		    z0_res = svqdmullb_lane (z1, z2, 0))
31 
32 /*
33 ** qdmullb_lane_1_s64:
34 **	sqdmullb	z0\.d, z1\.s, z2\.s\[1\]
35 **	ret
36 */
37 TEST_TYPE_CHANGE_Z (qdmullb_lane_1_s64, svint64_t, svint32_t,
38 		    z0_res = svqdmullb_lane_s64 (z1, z2, 1),
39 		    z0_res = svqdmullb_lane (z1, z2, 1))
40 
41 /*
42 ** qdmullb_lane_2_s64:
43 **	sqdmullb	z0\.d, z1\.s, z2\.s\[2\]
44 **	ret
45 */
46 TEST_TYPE_CHANGE_Z (qdmullb_lane_2_s64, svint64_t, svint32_t,
47 		    z0_res = svqdmullb_lane_s64 (z1, z2, 2),
48 		    z0_res = svqdmullb_lane (z1, z2, 2))
49 
50 /*
51 ** qdmullb_lane_3_s64:
52 **	sqdmullb	z0\.d, z1\.s, z2\.s\[3\]
53 **	ret
54 */
55 TEST_TYPE_CHANGE_Z (qdmullb_lane_3_s64, svint64_t, svint32_t,
56 		    z0_res = svqdmullb_lane_s64 (z1, z2, 3),
57 		    z0_res = svqdmullb_lane (z1, z2, 3))
58 
59 /*
60 ** qdmullb_lane_z15_s64:
61 **	str	d15, \[sp, -16\]!
62 **	sqdmullb	z0\.d, z1\.s, z15\.s\[1\]
63 **	ldr	d15, \[sp\], 16
64 **	ret
65 */
66 TEST_DUAL_LANE_REG (qdmullb_lane_z15_s64, svint64_t, svint32_t, z15,
67 		    z0 = svqdmullb_lane_s64 (z1, z15, 1),
68 		    z0 = svqdmullb_lane (z1, z15, 1))
69 
70 /*
71 ** qdmullb_lane_z16_s64:
72 **	mov	(z[0-9]|z1[0-5])\.d, z16\.d
73 **	sqdmullb	z0\.d, z1\.s, \1\.s\[1\]
74 **	ret
75 */
76 TEST_DUAL_LANE_REG (qdmullb_lane_z16_s64, svint64_t, svint32_t, z16,
77 		    z0 = svqdmullb_lane_s64 (z1, z16, 1),
78 		    z0 = svqdmullb_lane (z1, z16, 1))
79