1 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
2 
3 #include "test_sve_acle.h"
4 
5 /*
6 ** mlslb_s16_tied1:
7 **	smlslb	z0\.h, z4\.b, z5\.b
8 **	ret
9 */
10 TEST_DUAL_Z (mlslb_s16_tied1, svint16_t, svint8_t,
11 	     z0 = svmlslb_s16 (z0, z4, z5),
12 	     z0 = svmlslb (z0, z4, z5))
13 
14 /*
15 ** mlslb_s16_tied2:
16 **	mov	(z[0-9]+)\.d, z0\.d
17 **	movprfx	z0, z4
18 **	smlslb	z0\.h, \1\.b, z1\.b
19 **	ret
20 */
21 TEST_DUAL_Z_REV (mlslb_s16_tied2, svint16_t, svint8_t,
22 		 z0_res = svmlslb_s16 (z4, z0, z1),
23 		 z0_res = svmlslb (z4, z0, z1))
24 
25 /*
26 ** mlslb_s16_tied3:
27 **	mov	(z[0-9]+)\.d, z0\.d
28 **	movprfx	z0, z4
29 **	smlslb	z0\.h, z1\.b, \1\.b
30 **	ret
31 */
32 TEST_DUAL_Z_REV (mlslb_s16_tied3, svint16_t, svint8_t,
33 		 z0_res = svmlslb_s16 (z4, z1, z0),
34 		 z0_res = svmlslb (z4, z1, z0))
35 
36 /*
37 ** mlslb_s16_untied:
38 **	movprfx	z0, z1
39 **	smlslb	z0\.h, z4\.b, z5\.b
40 **	ret
41 */
42 TEST_DUAL_Z (mlslb_s16_untied, svint16_t, svint8_t,
43 	     z0 = svmlslb_s16 (z1, z4, z5),
44 	     z0 = svmlslb (z1, z4, z5))
45 
46 /*
47 ** mlslb_w0_s16_tied1:
48 **	mov	(z[0-9]+\.b), w0
49 **	smlslb	z0\.h, z4\.b, \1
50 **	ret
51 */
52 TEST_DUAL_ZX (mlslb_w0_s16_tied1, svint16_t, svint8_t, int8_t,
53 	      z0 = svmlslb_n_s16 (z0, z4, x0),
54 	      z0 = svmlslb (z0, z4, x0))
55 
56 /*
57 ** mlslb_w0_s16_untied:: { xfail *-*-*}
58 **	mov	(z[0-9]+\.b), w0
59 **	movprfx	z0, z1
60 **	smlslb	z0\.h, z4\.b, \1
61 **	ret
62 */
63 TEST_DUAL_ZX (mlslb_w0_s16_untied, svint16_t, svint8_t, int8_t,
64 	      z0 = svmlslb_n_s16 (z1, z4, x0),
65 	      z0 = svmlslb (z1, z4, x0))
66 
67 /*
68 ** mlslb_11_s16_tied1:
69 **	mov	(z[0-9]+\.b), #11
70 **	smlslb	z0\.h, z4\.b, \1
71 **	ret
72 */
73 TEST_DUAL_Z (mlslb_11_s16_tied1, svint16_t, svint8_t,
74 	     z0 = svmlslb_n_s16 (z0, z4, 11),
75 	     z0 = svmlslb (z0, z4, 11))
76 
77 /*
78 ** mlslb_11_s16_untied:: { xfail *-*-*}
79 **	mov	(z[0-9]+\.b), #11
80 **	movprfx	z0, z1
81 **	smlslb	z0\.h, z4\.b, \1
82 **	ret
83 */
84 TEST_DUAL_Z (mlslb_11_s16_untied, svint16_t, svint8_t,
85 	     z0 = svmlslb_n_s16 (z1, z4, 11),
86 	     z0 = svmlslb (z1, z4, 11))
87