]>
git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/hsub_u32.c
1 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
3 #include "test_sve_acle.h"
7 ** uhsub z0\.s, p0/m, z0\.s, z1\.s
10 TEST_UNIFORM_Z (hsub_u32_m_tied1
, svuint32_t
,
11 z0
= svhsub_u32_m (p0
, z0
, z1
),
12 z0
= svhsub_m (p0
, z0
, z1
))
16 ** mov (z[0-9]+)\.d, z0\.d
18 ** uhsub z0\.s, p0/m, z0\.s, \1\.s
21 TEST_UNIFORM_Z (hsub_u32_m_tied2
, svuint32_t
,
22 z0
= svhsub_u32_m (p0
, z1
, z0
),
23 z0
= svhsub_m (p0
, z1
, z0
))
28 ** uhsub z0\.s, p0/m, z0\.s, z2\.s
31 TEST_UNIFORM_Z (hsub_u32_m_untied
, svuint32_t
,
32 z0
= svhsub_u32_m (p0
, z1
, z2
),
33 z0
= svhsub_m (p0
, z1
, z2
))
36 ** hsub_w0_u32_m_tied1:
37 ** mov (z[0-9]+\.s), w0
38 ** uhsub z0\.s, p0/m, z0\.s, \1
41 TEST_UNIFORM_ZX (hsub_w0_u32_m_tied1
, svuint32_t
, uint32_t,
42 z0
= svhsub_n_u32_m (p0
, z0
, x0
),
43 z0
= svhsub_m (p0
, z0
, x0
))
46 ** hsub_w0_u32_m_untied:
47 ** mov (z[0-9]+\.s), w0
49 ** uhsub z0\.s, p0/m, z0\.s, \1
52 TEST_UNIFORM_ZX (hsub_w0_u32_m_untied
, svuint32_t
, uint32_t,
53 z0
= svhsub_n_u32_m (p0
, z1
, x0
),
54 z0
= svhsub_m (p0
, z1
, x0
))
57 ** hsub_11_u32_m_tied1:
58 ** mov (z[0-9]+\.s), #11
59 ** uhsub z0\.s, p0/m, z0\.s, \1
62 TEST_UNIFORM_Z (hsub_11_u32_m_tied1
, svuint32_t
,
63 z0
= svhsub_n_u32_m (p0
, z0
, 11),
64 z0
= svhsub_m (p0
, z0
, 11))
67 ** hsub_11_u32_m_untied:: { xfail *-*-*}
68 ** mov (z[0-9]+\.s), #11
70 ** uhsub z0\.s, p0/m, z0\.s, \1
73 TEST_UNIFORM_Z (hsub_11_u32_m_untied
, svuint32_t
,
74 z0
= svhsub_n_u32_m (p0
, z1
, 11),
75 z0
= svhsub_m (p0
, z1
, 11))
79 ** movprfx z0\.s, p0/z, z0\.s
80 ** uhsub z0\.s, p0/m, z0\.s, z1\.s
83 TEST_UNIFORM_Z (hsub_u32_z_tied1
, svuint32_t
,
84 z0
= svhsub_u32_z (p0
, z0
, z1
),
85 z0
= svhsub_z (p0
, z0
, z1
))
89 ** movprfx z0\.s, p0/z, z0\.s
90 ** uhsubr z0\.s, p0/m, z0\.s, z1\.s
93 TEST_UNIFORM_Z (hsub_u32_z_tied2
, svuint32_t
,
94 z0
= svhsub_u32_z (p0
, z1
, z0
),
95 z0
= svhsub_z (p0
, z1
, z0
))
100 ** movprfx z0\.s, p0/z, z1\.s
101 ** uhsub z0\.s, p0/m, z0\.s, z2\.s
103 ** movprfx z0\.s, p0/z, z2\.s
104 ** uhsubr z0\.s, p0/m, z0\.s, z1\.s
108 TEST_UNIFORM_Z (hsub_u32_z_untied
, svuint32_t
,
109 z0
= svhsub_u32_z (p0
, z1
, z2
),
110 z0
= svhsub_z (p0
, z1
, z2
))
113 ** hsub_w0_u32_z_tied1:
114 ** mov (z[0-9]+\.s), w0
115 ** movprfx z0\.s, p0/z, z0\.s
116 ** uhsub z0\.s, p0/m, z0\.s, \1
119 TEST_UNIFORM_ZX (hsub_w0_u32_z_tied1
, svuint32_t
, uint32_t,
120 z0
= svhsub_n_u32_z (p0
, z0
, x0
),
121 z0
= svhsub_z (p0
, z0
, x0
))
124 ** hsub_w0_u32_z_untied:
125 ** mov (z[0-9]+\.s), w0
127 ** movprfx z0\.s, p0/z, z1\.s
128 ** uhsub z0\.s, p0/m, z0\.s, \1
130 ** movprfx z0\.s, p0/z, \1
131 ** uhsubr z0\.s, p0/m, z0\.s, z1\.s
135 TEST_UNIFORM_ZX (hsub_w0_u32_z_untied
, svuint32_t
, uint32_t,
136 z0
= svhsub_n_u32_z (p0
, z1
, x0
),
137 z0
= svhsub_z (p0
, z1
, x0
))
140 ** hsub_11_u32_z_tied1:
141 ** mov (z[0-9]+\.s), #11
142 ** movprfx z0\.s, p0/z, z0\.s
143 ** uhsub z0\.s, p0/m, z0\.s, \1
146 TEST_UNIFORM_Z (hsub_11_u32_z_tied1
, svuint32_t
,
147 z0
= svhsub_n_u32_z (p0
, z0
, 11),
148 z0
= svhsub_z (p0
, z0
, 11))
151 ** hsub_11_u32_z_untied:
152 ** mov (z[0-9]+\.s), #11
154 ** movprfx z0\.s, p0/z, z1\.s
155 ** uhsub z0\.s, p0/m, z0\.s, \1
157 ** movprfx z0\.s, p0/z, \1
158 ** uhsubr z0\.s, p0/m, z0\.s, z1\.s
162 TEST_UNIFORM_Z (hsub_11_u32_z_untied
, svuint32_t
,
163 z0
= svhsub_n_u32_z (p0
, z1
, 11),
164 z0
= svhsub_z (p0
, z1
, 11))
168 ** uhsub z0\.s, p0/m, z0\.s, z1\.s
171 TEST_UNIFORM_Z (hsub_u32_x_tied1
, svuint32_t
,
172 z0
= svhsub_u32_x (p0
, z0
, z1
),
173 z0
= svhsub_x (p0
, z0
, z1
))
177 ** uhsubr z0\.s, p0/m, z0\.s, z1\.s
180 TEST_UNIFORM_Z (hsub_u32_x_tied2
, svuint32_t
,
181 z0
= svhsub_u32_x (p0
, z1
, z0
),
182 z0
= svhsub_x (p0
, z1
, z0
))
185 ** hsub_u32_x_untied:
188 ** uhsub z0\.s, p0/m, z0\.s, z2\.s
191 ** uhsubr z0\.s, p0/m, z0\.s, z1\.s
195 TEST_UNIFORM_Z (hsub_u32_x_untied
, svuint32_t
,
196 z0
= svhsub_u32_x (p0
, z1
, z2
),
197 z0
= svhsub_x (p0
, z1
, z2
))
200 ** hsub_w0_u32_x_tied1:
201 ** mov (z[0-9]+\.s), w0
202 ** uhsub z0\.s, p0/m, z0\.s, \1
205 TEST_UNIFORM_ZX (hsub_w0_u32_x_tied1
, svuint32_t
, uint32_t,
206 z0
= svhsub_n_u32_x (p0
, z0
, x0
),
207 z0
= svhsub_x (p0
, z0
, x0
))
210 ** hsub_w0_u32_x_untied:
212 ** uhsubr z0\.s, p0/m, z0\.s, z1\.s
215 TEST_UNIFORM_ZX (hsub_w0_u32_x_untied
, svuint32_t
, uint32_t,
216 z0
= svhsub_n_u32_x (p0
, z1
, x0
),
217 z0
= svhsub_x (p0
, z1
, x0
))
220 ** hsub_11_u32_x_tied1:
221 ** mov (z[0-9]+\.s), #11
222 ** uhsub z0\.s, p0/m, z0\.s, \1
225 TEST_UNIFORM_Z (hsub_11_u32_x_tied1
, svuint32_t
,
226 z0
= svhsub_n_u32_x (p0
, z0
, 11),
227 z0
= svhsub_x (p0
, z0
, 11))
230 ** hsub_11_u32_x_untied:
232 ** uhsubr z0\.s, p0/m, z0\.s, z1\.s
235 TEST_UNIFORM_Z (hsub_11_u32_x_untied
, svuint32_t
,
236 z0
= svhsub_n_u32_x (p0
, z1
, 11),
237 z0
= svhsub_x (p0
, z1
, 11))