1 !===-- module/mma.f90 ------------------------------------------------------===!
3 ! Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 ! See https://llvm.org/LICENSE.txt for license information.
5 ! SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 !===------------------------------------------------------------------------===!
15 !! ========== 1 argument subroutine interface ================================!!
16 !! subroutine s(__vector_quad)
17 elemental
subroutine sub_vq(acc
)
18 __vector_quad
, intent(inout
) :: acc
21 !! ========== 2 argument subroutine interface ================================!!
22 !! __vector_pair function f(i, vector(i))
23 #define
FUNC_VPI0VI(VKIND
) \
24 pure __vector_pair
function func_vpi0vi##
VKIND(arg1
, arg2
); \
25 integer(8), intent(in
) :: arg1
; \
26 !dir$ ignore_tkr(k) arg1; \
27 vector(integer(VKIND
)), intent(in
) :: arg2
; \
28 !dir$ ignore_tkr(r) arg2; \
31 ! __vector_pair function f(i, vector(u))
32 #define
FUNC_VPI0VU(VKIND
) \
33 pure __vector_pair
function func_vpi0vu##
VKIND(arg1
, arg2
); \
34 integer(8), intent(in
) :: arg1
; \
35 !dir$ ignore_tkr(k) arg1; \
36 vector(unsigned(VKIND
)), intent(in
) :: arg2
; \
37 !dir$ ignore_tkr(r) arg2; \
40 ! __vector_pair function f(i, vector(r))
41 #define
FUNC_VPI0VR(VKIND
) \
42 pure __vector_pair
function func_vpi0vr##
VKIND(arg1
, arg2
); \
43 integer(8), intent(in
) :: arg1
; \
44 !dir$ ignore_tkr(k) arg1; \
45 vector(real(VKIND
)), intent(in
) :: arg2
; \
46 !dir$ ignore_tkr(r) arg2; \
49 ! __vector_pair function f(i, __vector_pair)
51 pure __vector_pair
function func_vpi0vp(arg1
, arg2
); \
52 integer(8), intent(in
) :: arg1
; \
53 !dir$ ignore_tkr(k) arg1; \
54 __vector_pair
, intent(in
) :: arg2
; \
55 !dir$ ignore_tkr(r) arg2; \
58 FUNC_VPI0VI(1) FUNC_VPI0VI(2) FUNC_VPI0VI(4) FUNC_VPI0VI(8)
59 FUNC_VPI0VU(1) FUNC_VPI0VU(2) FUNC_VPI0VU(4) FUNC_VPI0VU(8)
60 FUNC_VPI0VR(4) FUNC_VPI0VR(8)
68 !! ========== 3 arguments subroutine interface ===============================!!
69 !! __vector_pair subroutine s(vp, integer, vector(i))
70 #define
SUB_VPI0VI(VKIND
) \
71 pure
subroutine sub_vpi0vi##
VKIND(arg1
, arg2
, arg3
); \
72 __vector_pair
, intent(in
) :: arg1
; \
73 integer(8), intent(in
) :: arg2
; \
74 !dir$ ignore_tkr(k) arg2; \
75 vector(integer(VKIND
)), intent(out
) :: arg3
; \
76 !dir$ ignore_tkr(r) arg3; \
79 ! subroutine(__vector_pair, i, vector(u))
80 #define
SUB_VPI0VU(VKIND
) \
81 pure
subroutine sub_vpi0vu##
VKIND(arg1
, arg2
, arg3
); \
82 __vector_pair
, intent(in
) :: arg1
; \
83 integer(8), intent(in
) :: arg2
; \
84 !dir$ ignore_tkr(k) arg2; \
85 vector(unsigned(VKIND
)), intent(out
) :: arg3
; \
86 !dir$ ignore_tkr(r) arg3; \
89 ! subroutine(__vector_pair, i, vector(r))
90 #define
SUB_VPI0VR(VKIND
) \
91 pure
subroutine sub_vpi0vr##
VKIND(arg1
, arg2
, arg3
); \
92 __vector_pair
, intent(in
) :: arg1
; \
93 integer(8), intent(in
) :: arg2
; \
94 !dir$ ignore_tkr(k) arg2; \
95 vector(real(VKIND
)), intent(out
) :: arg3
; \
96 !dir$ ignore_tkr(r) arg3; \
99 ! subroutine(__vector_pair, i, i)
100 pure
subroutine sub_vpi0i0(arg1
, arg2
, arg3
)
101 __vector_pair
, intent(in
) :: arg1
102 integer(8), intent(in
) :: arg2
103 !dir$ ignore_tkr(k) arg2
104 integer(8), intent(out
) :: arg3
105 !dir$ ignore_tkr(kr) arg3
108 ! subroutine(__vector_pair, i, r)
109 pure
subroutine sub_vpi0r0(arg1
, arg2
, arg3
)
110 __vector_pair
, intent(in
) :: arg1
111 integer(8), intent(in
) :: arg2
112 !dir$ ignore_tkr(k) arg2
113 real(8), intent(out
) :: arg3
114 !dir$ ignore_tkr(kr) arg3
117 ! subroutine(__vector_pair, i, __vector_pair)
118 pure
subroutine sub_vpi0vp(arg1
, arg2
, arg3
)
119 __vector_pair
, intent(in
) :: arg1
120 integer(8), intent(in
) :: arg2
121 !dir$ ignore_tkr(k) arg2
122 __vector_pair
, intent(out
) :: arg3
123 !dir$ ignore_tkr(r) arg3
126 !! subroutine s(__vector_pair, vector(i), vector(i))
127 #define
ELEM_SUB_VPVIVI(VKIND
) \
128 elemental
subroutine sub_vpvi##VKIND##vi##
VKIND(pair
, arg1
, arg2
); \
129 __vector_pair
, intent(out
) :: pair
; \
130 vector(integer(VKIND
)), intent(in
) :: arg1
, arg2
; \
133 !! subroutine s(__vector_pair, vector(u), vector(u))
134 #define
ELEM_SUB_VPVUVU(VKIND
) \
135 elemental
subroutine sub_vpvu##VKIND##vu##
VKIND(pair
, arg1
, arg2
); \
136 __vector_pair
, intent(out
) :: pair
; \
137 vector(unsigned(VKIND
)), intent(in
) :: arg1
, arg2
; \
140 !! subroutine s(__vector_pair, vector(r), vector(r))
141 #define
ELEM_SUB_VPVRVR(VKIND
) \
142 elemental
subroutine sub_vpvr##VKIND##vr##
VKIND(pair
, arg1
, arg2
); \
143 __vector_pair
, intent(out
) :: pair
; \
144 vector(real(VKIND
)), intent(in
) :: arg1
, arg2
; \
147 ELEM_SUB_VPVIVI(1) ELEM_SUB_VPVIVI(2)
148 ELEM_SUB_VPVIVI(4) ELEM_SUB_VPVIVI(8)
149 ELEM_SUB_VPVUVU(1) ELEM_SUB_VPVUVU(2)
150 ELEM_SUB_VPVUVU(4) ELEM_SUB_VPVUVU(8)
151 ELEM_SUB_VPVRVR(4) ELEM_SUB_VPVRVR(8)
152 SUB_VPI0VI(1) SUB_VPI0VI(2) SUB_VPI0VI(4) SUB_VPI0VI(8)
153 SUB_VPI0VU(1) SUB_VPI0VU(2) SUB_VPI0VU(4) SUB_VPI0VU(8)
154 SUB_VPI0VR(4) SUB_VPI0VR(8)
156 #undef ELEM_SUB_VPVIVI
157 #undef ELEM_SUB_VPVUVU
158 #undef ELEM_SUB_VPVRVR
163 !! subroutine s(__vector_quad, vector(i), vector(i))
164 #define
ELEM_SUB_VQVIVI(INTENT
, VKIND
) \
165 elemental
subroutine sub_vq##INTENT##vi##VKIND##vi##
VKIND(acc
, a
, b
); \
166 __vector_quad
, intent(INTENT
) :: acc
; \
167 vector(integer(VKIND
)), intent(in
) :: a
, b
; \
170 !! subroutine s(__vector_quad, vector(u), vector(u))
171 #define
ELEM_SUB_VQVUVU(INTENT
, VKIND
) \
172 elemental
subroutine sub_vq##INTENT##vu##VKIND##vu##
VKIND(acc
, a
, b
); \
173 __vector_quad
, intent(INTENT
) :: acc
; \
174 vector(unsigned(VKIND
)), intent(in
) :: a
, b
; \
177 !! subroutine s(__vector_quad, vector(r), vector(r))
178 #define
ELEM_SUB_VQVRVR(INTENT
, VKIND
) \
179 elemental
subroutine sub_vq##INTENT##vr##VKIND##vr##
VKIND(acc
, a
, b
); \
180 __vector_quad
, intent(INTENT
) :: acc
; \
181 vector(real(VKIND
)), intent(in
) :: a
, b
; \
184 ELEM_SUB_VQVIVI(inout
,1) ELEM_SUB_VQVIVI(inout
,2)
185 ELEM_SUB_VQVUVU(inout
,1)
186 ELEM_SUB_VQVRVR(inout
,4)
187 ELEM_SUB_VQVIVI(out
,1) ELEM_SUB_VQVIVI(out
,2)
188 ELEM_SUB_VQVUVU(out
,1)
189 ELEM_SUB_VQVRVR(out
,4)
191 #undef ELEM_SUB_VQVRVR
192 #undef ELEM_SUB_VQVUVU
193 #undef ELEM_SUB_VQVIVI
195 !! subroutine s(__vector_quad, __vector_pair, vector(u))
196 #define
ELEM_SUB_VQVPVU(INTENT
, VKIND
) \
197 elemental
subroutine sub_vq##INTENT##vpvu##
VKIND(acc
, a
, b
); \
198 __vector_quad
, intent(INTENT
) :: acc
; \
199 __vector_pair
, intent(in
) :: a
; \
200 vector(unsigned(VKIND
)), intent(in
) :: b
; \
203 !! subroutine s(__vector_quad, __vector_pair, vector(r))
204 #define
ELEM_SUB_VQVPVR(INTENT
, VKIND
) \
205 elemental
subroutine sub_vq##INTENT##vpvr##
VKIND(acc
, a
, b
); \
206 __vector_quad
, intent(INTENT
) :: acc
; \
207 __vector_pair
, intent(in
) :: a
; \
208 vector(real(VKIND
)), intent(in
) :: b
; \
211 ELEM_SUB_VQVPVU(inout
,1)
212 ELEM_SUB_VQVPVR(inout
,8)
213 ELEM_SUB_VQVPVU(out
,1)
214 ELEM_SUB_VQVPVR(out
,8)
216 #undef ELEM_SUB_VQVPVR
217 #undef ELEM_SUB_VQVPVU
219 !! ========== 5 arguments subroutine interface ===============================!!
220 !! subroutine s(__vector_quad, vector(i), vector(i), vector(i), vector(i))
221 #define
ELEM_SUB_VQVIVIVIVI(VKIND
) \
222 elemental
subroutine sub_vqvi##VKIND##vi##VKIND##vi##VKIND##vi##
VKIND(acc
, arg1
, arg2
, arg3
, arg4
); \
223 __vector_quad
, intent(out
) :: acc
; \
224 vector(integer(VKIND
)), intent(in
) :: arg1
, arg2
, arg3
, arg4
; \
227 !! subroutine s(__vector_quad, vector(u), vector(u), vector(u), vector(u))
228 #define
ELEM_SUB_VQVUVUVUVU(VKIND
) \
229 elemental
subroutine sub_vqvu##VKIND##vu##VKIND##vu##VKIND##vu##
VKIND(acc
, arg1
, arg2
, arg3
, arg4
); \
230 __vector_quad
, intent(out
) :: acc
; \
231 vector(unsigned(VKIND
)), intent(in
) :: arg1
, arg2
, arg3
, arg4
; \
234 !! subroutine s(__vector_quad, vector(r), vector(r), vector(r), vector(r))
235 #define
ELEM_SUB_VQVRVRVRVR(VKIND
) \
236 elemental
subroutine sub_vqvr##VKIND##vr##VKIND##vr##VKIND##vr##
VKIND(acc
, arg1
, arg2
, arg3
, arg4
); \
237 __vector_quad
, intent(out
) :: acc
; \
238 vector(real(VKIND
)), intent(in
) :: arg1
, arg2
, arg3
, arg4
; \
241 ELEM_SUB_VQVIVIVIVI(1) ELEM_SUB_VQVIVIVIVI(2)
242 ELEM_SUB_VQVIVIVIVI(4) ELEM_SUB_VQVIVIVIVI(8)
243 ELEM_SUB_VQVUVUVUVU(1) ELEM_SUB_VQVUVUVUVU(2)
244 ELEM_SUB_VQVUVUVUVU(4) ELEM_SUB_VQVUVUVUVU(8)
245 ELEM_SUB_VQVRVRVRVR(4) ELEM_SUB_VQVRVRVRVR(8)
247 #undef ELEM_SUB_VQVRVRVRVR
248 #undef ELEM_SUB_VQVUVUVUVU
249 #undef ELEM_SUB_VQVIVIVIVI
251 !! subroutine s(__vector_quad, vector(u), vector(u), integer, integer)
252 #define
ELEM_SUB_VQVUVUII(INTENT
, VKIND
) \
253 elemental
subroutine sub_vq##INTENT##vu##VKIND##vu##VKIND##
ii(acc
, a
, b
, xmask
, ymask
); \
254 __vector_quad
, intent(INTENT
) :: acc
; \
255 vector(unsigned(VKIND
)), intent(in
) :: a
, b
; \
256 integer(8), intent(in
) :: xmask
, ymask
; \
257 !dir$ ignore_tkr(k) xmask; \
258 !dir$ ignore_tkr(k) ymask; \
261 !! subroutine s(__vector_quad, vector(r), vector(r), integer, integer)
262 #define
ELEM_SUB_VQVRVRII(INTENT
, VKIND
) \
263 elemental
subroutine sub_vq##INTENT##vr##VKIND##vr##VKIND##
ii(acc
, a
, b
, xmask
, ymask
); \
264 __vector_quad
, intent(INTENT
) :: acc
; \
265 vector(real(VKIND
)), intent(in
) :: a
, b
; \
266 integer(8), intent(in
) :: xmask
, ymask
; \
267 !dir$ ignore_tkr(k) xmask; \
268 !dir$ ignore_tkr(k) ymask; \
271 ELEM_SUB_VQVUVUII(inout
,1)
272 ELEM_SUB_VQVRVRII(inout
,4)
273 ELEM_SUB_VQVUVUII(out
,1)
274 ELEM_SUB_VQVRVRII(out
,4)
276 #undef ELEM_SUB_VQVRVRII
277 #undef ELEM_SUB_VQVUVUII
279 !! subroutine s(__vector_quad, __vector_pair, vector(u), integer, integer)
280 #define
ELEM_SUB_VQVPVUII(INTENT
, VKIND
) \
281 elemental
subroutine sub_vq##INTENT##vpvu##VKIND##
ii(acc
, a
, b
, xmask
, ymask
); \
282 __vector_quad
, intent(INTENT
) :: acc
; \
283 __vector_pair
, intent(in
) :: a
; \
284 vector(unsigned(VKIND
)), intent(in
) :: b
; \
285 integer(8), intent(in
) :: xmask
, ymask
; \
286 !dir$ ignore_tkr(k) xmask; \
287 !dir$ ignore_tkr(k) ymask; \
290 !! subroutine s(__vector_quad, __vector_pair, vector(r), integer, integer)
291 #define
ELEM_SUB_VQVPVRII(INTENT
, VKIND
) \
292 elemental
subroutine sub_vq##INTENT##vpvr##VKIND##
ii(acc
, a
, b
, xmask
, ymask
); \
293 __vector_quad
, intent(INTENT
) :: acc
; \
294 __vector_pair
, intent(in
) :: a
; \
295 vector(real(VKIND
)), intent(in
) :: b
; \
296 integer(8), intent(in
) :: xmask
, ymask
; \
297 !dir$ ignore_tkr(k) xmask; \
298 !dir$ ignore_tkr(k) ymask; \
301 ELEM_SUB_VQVPVUII(inout
,1)
302 ELEM_SUB_VQVPVRII(inout
,8)
303 ELEM_SUB_VQVPVUII(out
,1)
304 ELEM_SUB_VQVPVRII(out
,8)
306 #undef ELEM_SUB_VQVPVRII
307 #undef ELEM_SUB_VQVPVUII
309 !! ========== 6 arguments subroutine interface ===============================!!
310 !! subroutine s(__vector_quad, vector(i), vector(i), integer, integer, integer)
311 #define
ELEM_SUB_VQVIVIIII(INTENT
, VKIND
) \
312 elemental
subroutine sub_vq##INTENT##vi##VKIND##vi##VKIND##
iii(acc
, a
, b
, xmask
, ymask
, pmask
); \
313 __vector_quad
, intent(INTENT
) :: acc
; \
314 vector(integer(VKIND
)), intent(in
) :: a
, b
; \
315 integer(8), intent(in
) :: xmask
, ymask
, pmask
; \
316 !dir$ ignore_tkr(k) xmask; \
317 !dir$ ignore_tkr(k) ymask; \
318 !dir$ ignore_tkr(k) pmask; \
321 !! subroutine s(__vector_quad, vector(u), vector(u), integer, integer, integer)
322 #define
ELEM_SUB_VQVUVUIII(INTENT
, VKIND
) \
323 elemental
subroutine sub_vq##INTENT##vu##VKIND##vu##VKIND##
iii(acc
, a
, b
, xmask
, ymask
, pmask
); \
324 __vector_quad
, intent(INTENT
) :: acc
; \
325 vector(unsigned(VKIND
)), intent(in
) :: a
, b
; \
326 integer(8), intent(in
) :: xmask
, ymask
, pmask
; \
327 !dir$ ignore_tkr(k) xmask; \
328 !dir$ ignore_tkr(k) ymask; \
329 !dir$ ignore_tkr(k) pmask; \
332 ELEM_SUB_VQVIVIIII(inout
,1) ELEM_SUB_VQVIVIIII(inout
,2)
333 ELEM_SUB_VQVUVUIII(inout
,1)
334 ELEM_SUB_VQVIVIIII(out
,1) ELEM_SUB_VQVIVIIII(out
,2)
335 ELEM_SUB_VQVUVUIII(out
,1)
337 #undef ELEM_SUB_VQVUVUIII
338 #undef ELEM_SUB_VQVIVIIII
340 !! ========== non-macro interface =============================================!!
341 elemental
subroutine sub_atvp(data, pair
)
342 ! Dummy arg 'data' is supposed to be intent(out) of any type,
343 ! but according to Fortran 2018: C709: Type(*) arguments can not have
344 ! intent(out) attribute. Use intent(inout) instead.
345 type(*), intent(inout
) :: data
346 __vector_pair
, intent(inout
) :: pair
349 elemental
subroutine sub_atvq(data, acc
)
350 ! Dummy arg 'data' is supposed to be intent(out) of any type,
351 ! but according to Fortran 2018: C709: Type(*) arguments can not have
352 ! intent(out) attribute. Use intent(inout) instead.
353 type(*), intent(inout
) :: data
354 __vector_quad
, intent(inout
) :: acc
359 !-------------------------------------------------------
360 ! __vector_pair function(integer, vector/__vector_pair)
361 !-------------------------------------------------------
362 #define
VP_I0_VI(NAME
, VKIND
) __ppc_##NAME##_vpi0##vi##VKIND
363 #define
VP_I0_VU(NAME
, VKIND
) __ppc_##NAME##_vpi0##vu##VKIND
364 #define
VP_I0_VR(NAME
, VKIND
) __ppc_##NAME##_vpi0##vr##VKIND
365 #define
VP_I0_VP(NAME
) __ppc_##NAME##_vpi0vp0
367 #define
VEC_VP_I0_VI(NAME
, VKIND
) \
368 procedure(func_vpi0vi##VKIND
) :: VP_I0_VI(NAME
, VKIND
);
369 #define
VEC_VP_I0_VU(NAME
, VKIND
) \
370 procedure(func_vpi0vu##VKIND
) :: VP_I0_VU(NAME
, VKIND
);
371 #define
VEC_VP_I0_VR(NAME
, VKIND
) \
372 procedure(func_vpi0vr##VKIND
) :: VP_I0_VR(NAME
, VKIND
);
373 #define
VEC_VP_I0_VP(NAME
) procedure(func_vpi0vp
) :: VP_I0_VP(NAME
);
375 ! mma_lxvp (using vec_lxvp)
376 VEC_VP_I0_VI(vec_lxvp
,1) VEC_VP_I0_VI(vec_lxvp
,2) VEC_VP_I0_VI(vec_lxvp
,4) VEC_VP_I0_VI(vec_lxvp
,8)
377 VEC_VP_I0_VU(vec_lxvp
,1) VEC_VP_I0_VU(vec_lxvp
,2) VEC_VP_I0_VU(vec_lxvp
,4) VEC_VP_I0_VU(vec_lxvp
,8)
378 VEC_VP_I0_VR(vec_lxvp
,4) VEC_VP_I0_VR(vec_lxvp
,8)
379 VEC_VP_I0_VP(vec_lxvp
)
381 procedure
:: VP_I0_VI(vec_lxvp
,1), VP_I0_VI(vec_lxvp
,2), VP_I0_VI(vec_lxvp
,4), VP_I0_VI(vec_lxvp
,8)
382 procedure
:: VP_I0_VU(vec_lxvp
,1), VP_I0_VU(vec_lxvp
,2), VP_I0_VU(vec_lxvp
,4), VP_I0_VU(vec_lxvp
,8)
383 procedure
:: VP_I0_VR(vec_lxvp
,4), VP_I0_VR(vec_lxvp
,8)
384 procedure
:: VP_I0_VP(vec_lxvp
)
385 end interface mma_lxvp
397 !-----------------------------------------------------------------------
398 ! subroutine(__vector_pair, integer, __vector_pair/vector/integer/real)
399 !-----------------------------------------------------------------------
400 #define
VP_I0_VI(NAME
, VKIND
) __ppc_##NAME##_vpi0vi##VKIND
401 #define
VP_I0_VU(NAME
, VKIND
) __ppc_##NAME##_vpi0vu##VKIND
402 #define
VP_I0_VR(NAME
, VKIND
) __ppc_##NAME##_vpi0vr##VKIND
404 #define
VEC_VP_I0_VI(NAME
, VKIND
) \
405 procedure(sub_vpi0vi##VKIND
) :: VP_I0_VI(NAME
, VKIND
);
406 #define
VEC_VP_I0_VU(NAME
, VKIND
) \
407 procedure(sub_vpi0vu##VKIND
) :: VP_I0_VU(NAME
, VKIND
);
408 #define
VEC_VP_I0_VR(NAME
, VKIND
) \
409 procedure(sub_vpi0vr##VKIND
) :: VP_I0_VR(NAME
, VKIND
);
411 ! mma_stxvp (using vec_stxvp)
412 procedure(sub_vpi0vp
) :: __ppc_vec_stxvp_vpi0vp0
413 procedure(sub_vpi0i0
) :: __ppc_vec_stxvp_vpi0i0
414 procedure(sub_vpi0r0
) :: __ppc_vec_stxvp_vpi0r0
415 VEC_VP_I0_VI(vec_stxvp
, 1) VEC_VP_I0_VI(vec_stxvp
, 2) VEC_VP_I0_VI(vec_stxvp
, 4) VEC_VP_I0_VI(vec_stxvp
, 8)
416 VEC_VP_I0_VU(vec_stxvp
, 1) VEC_VP_I0_VU(vec_stxvp
, 2) VEC_VP_I0_VU(vec_stxvp
, 4) VEC_VP_I0_VU(vec_stxvp
, 8)
417 VEC_VP_I0_VR(vec_stxvp
, 4) VEC_VP_I0_VR(vec_stxvp
, 8)
419 procedure
:: __ppc_vec_stxvp_vpi0vp0
420 procedure
:: __ppc_vec_stxvp_vpi0i0
421 procedure
:: __ppc_vec_stxvp_vpi0r0
422 procedure
:: VP_I0_VI(vec_stxvp
, 1), VP_I0_VI(vec_stxvp
, 2), VP_I0_VI(vec_stxvp
, 4), VP_I0_VI(vec_stxvp
, 8)
423 procedure
:: VP_I0_VU(vec_stxvp
, 1), VP_I0_VU(vec_stxvp
, 2), VP_I0_VU(vec_stxvp
, 4), VP_I0_VU(vec_stxvp
, 8)
424 procedure
:: VP_I0_VR(vec_stxvp
, 4), VP_I0_VR(vec_stxvp
, 8)
425 end interface mma_stxvp
435 #define
SUB_VQ_VI_VI_VI_VI(NAME
, VKIND
) __ppc_##NAME##_vi##VKIND##vi##VKIND##vi##VKIND##vi##VKIND
436 #define
SUB_VQ_VU_VU_VU_VU(NAME
, VKIND
) __ppc_##NAME##_vu##VKIND##vu##VKIND##vu##VKIND##vu##VKIND
437 #define
SUB_VQ_VR_VR_VR_VR(NAME
, VKIND
) __ppc_##NAME##_vr##VKIND##vr##VKIND##vr##VKIND##vr##VKIND
439 #define
VEC_SUB_VQ_VI_VI_VI_VI(NAME
, VKIND
) \
440 procedure(sub_vqvi##VKIND##vi##VKIND##vi##VKIND##vi##VKIND
) :: SUB_VQ_VI_VI_VI_VI(NAME
, VKIND
);
441 #define
VEC_SUB_VQ_VU_VU_VU_VU(NAME
, VKIND
) \
442 procedure(sub_vqvu##VKIND##vu##VKIND##vu##VKIND##vu##VKIND
) :: SUB_VQ_VU_VU_VU_VU(NAME
, VKIND
);
443 #define
VEC_SUB_VQ_VR_VR_VR_VR(NAME
, VKIND
) \
444 procedure(sub_vqvr##VKIND##vr##VKIND##vr##VKIND##vr##VKIND
) :: SUB_VQ_VR_VR_VR_VR(NAME
, VKIND
);
447 VEC_SUB_VQ_VI_VI_VI_VI(mma_assemble_acc
,1)
448 VEC_SUB_VQ_VI_VI_VI_VI(mma_assemble_acc
,2)
449 VEC_SUB_VQ_VI_VI_VI_VI(mma_assemble_acc
,4)
450 VEC_SUB_VQ_VI_VI_VI_VI(mma_assemble_acc
,8)
451 VEC_SUB_VQ_VU_VU_VU_VU(mma_assemble_acc
,1)
452 VEC_SUB_VQ_VU_VU_VU_VU(mma_assemble_acc
,2)
453 VEC_SUB_VQ_VU_VU_VU_VU(mma_assemble_acc
,4)
454 VEC_SUB_VQ_VU_VU_VU_VU(mma_assemble_acc
,8)
455 VEC_SUB_VQ_VR_VR_VR_VR(mma_assemble_acc
,4)
456 VEC_SUB_VQ_VR_VR_VR_VR(mma_assemble_acc
,8)
457 interface mma_assemble_acc
458 procedure
:: SUB_VQ_VI_VI_VI_VI(mma_assemble_acc
,1)
459 procedure
:: SUB_VQ_VI_VI_VI_VI(mma_assemble_acc
,2)
460 procedure
:: SUB_VQ_VI_VI_VI_VI(mma_assemble_acc
,4)
461 procedure
:: SUB_VQ_VI_VI_VI_VI(mma_assemble_acc
,8)
462 procedure
:: SUB_VQ_VU_VU_VU_VU(mma_assemble_acc
,1)
463 procedure
:: SUB_VQ_VU_VU_VU_VU(mma_assemble_acc
,2)
464 procedure
:: SUB_VQ_VU_VU_VU_VU(mma_assemble_acc
,4)
465 procedure
:: SUB_VQ_VU_VU_VU_VU(mma_assemble_acc
,8)
466 procedure
:: SUB_VQ_VR_VR_VR_VR(mma_assemble_acc
,4)
467 procedure
:: SUB_VQ_VR_VR_VR_VR(mma_assemble_acc
,8)
469 public mma_assemble_acc
472 VEC_SUB_VQ_VI_VI_VI_VI(mma_build_acc
,1)
473 VEC_SUB_VQ_VI_VI_VI_VI(mma_build_acc
,2)
474 VEC_SUB_VQ_VI_VI_VI_VI(mma_build_acc
,4)
475 VEC_SUB_VQ_VI_VI_VI_VI(mma_build_acc
,8)
476 VEC_SUB_VQ_VU_VU_VU_VU(mma_build_acc
,1)
477 VEC_SUB_VQ_VU_VU_VU_VU(mma_build_acc
,2)
478 VEC_SUB_VQ_VU_VU_VU_VU(mma_build_acc
,4)
479 VEC_SUB_VQ_VU_VU_VU_VU(mma_build_acc
,8)
480 VEC_SUB_VQ_VR_VR_VR_VR(mma_build_acc
,4)
481 VEC_SUB_VQ_VR_VR_VR_VR(mma_build_acc
,8)
482 interface mma_build_acc
483 procedure
:: SUB_VQ_VI_VI_VI_VI(mma_build_acc
,1)
484 procedure
:: SUB_VQ_VI_VI_VI_VI(mma_build_acc
,2)
485 procedure
:: SUB_VQ_VI_VI_VI_VI(mma_build_acc
,4)
486 procedure
:: SUB_VQ_VI_VI_VI_VI(mma_build_acc
,8)
487 procedure
:: SUB_VQ_VU_VU_VU_VU(mma_build_acc
,1)
488 procedure
:: SUB_VQ_VU_VU_VU_VU(mma_build_acc
,2)
489 procedure
:: SUB_VQ_VU_VU_VU_VU(mma_build_acc
,4)
490 procedure
:: SUB_VQ_VU_VU_VU_VU(mma_build_acc
,8)
491 procedure
:: SUB_VQ_VR_VR_VR_VR(mma_build_acc
,4)
492 procedure
:: SUB_VQ_VR_VR_VR_VR(mma_build_acc
,8)
496 #undef VEC_SUB_VQ_VR_VR_VR_VR
497 #undef VEC_SUB_VQ_VU_VU_VU_VU
498 #undef VEC_SUB_VQ_VI_VI_VI_VI
499 #undef SUB_VQ_VR_VR_VR_VR
500 #undef SUB_VQ_VU_VU_VU_VU
501 #undef SUB_VQ_VI_VI_VI_VI
503 #define
SUB_VP_VI_VI(NAME
, VKIND
) __ppc_##NAME##_vi##VKIND##vi##VKIND
504 #define
SUB_VP_VU_VU(NAME
, VKIND
) __ppc_##NAME##_vu##VKIND##vu##VKIND
505 #define
SUB_VP_VR_VR(NAME
, VKIND
) __ppc_##NAME##_vr##VKIND##vr##VKIND
507 #define
VEC_SUB_VP_VI_VI(NAME
, VKIND
) \
508 procedure(sub_vpvi##VKIND##vi##VKIND
) :: SUB_VP_VI_VI(NAME
, VKIND
);
509 #define
VEC_SUB_VP_VU_VU(NAME
, VKIND
) \
510 procedure(sub_vpvu##VKIND##vu##VKIND
) :: SUB_VP_VU_VU(NAME
, VKIND
);
511 #define
VEC_SUB_VP_VR_VR(NAME
, VKIND
) \
512 procedure(sub_vpvr##VKIND##vr##VKIND
) :: SUB_VP_VR_VR(NAME
, VKIND
);
515 VEC_SUB_VP_VI_VI(mma_assemble_pair
,1) VEC_SUB_VP_VI_VI(mma_assemble_pair
,2)
516 VEC_SUB_VP_VI_VI(mma_assemble_pair
,4) VEC_SUB_VP_VI_VI(mma_assemble_pair
,8)
517 VEC_SUB_VP_VU_VU(mma_assemble_pair
,1) VEC_SUB_VP_VU_VU(mma_assemble_pair
,2)
518 VEC_SUB_VP_VU_VU(mma_assemble_pair
,4) VEC_SUB_VP_VU_VU(mma_assemble_pair
,8)
519 VEC_SUB_VP_VR_VR(mma_assemble_pair
,4) VEC_SUB_VP_VR_VR(mma_assemble_pair
,8)
520 interface mma_assemble_pair
521 procedure
:: SUB_VP_VI_VI(mma_assemble_pair
,1)
522 procedure
:: SUB_VP_VI_VI(mma_assemble_pair
,2)
523 procedure
:: SUB_VP_VI_VI(mma_assemble_pair
,4)
524 procedure
:: SUB_VP_VI_VI(mma_assemble_pair
,8)
525 procedure
:: SUB_VP_VU_VU(mma_assemble_pair
,1)
526 procedure
:: SUB_VP_VU_VU(mma_assemble_pair
,2)
527 procedure
:: SUB_VP_VU_VU(mma_assemble_pair
,4)
528 procedure
:: SUB_VP_VU_VU(mma_assemble_pair
,8)
529 procedure
:: SUB_VP_VR_VR(mma_assemble_pair
,4)
530 procedure
:: SUB_VP_VR_VR(mma_assemble_pair
,8)
532 public mma_assemble_pair
534 #undef VEC_SUB_VP_VR_VR
535 #undef VEC_SUB_VP_VU_VU
536 #undef VEC_SUB_VP_VI_VI
541 #define
SUB_VQ_VI_VI_I_I_I(NAME
, VKIND
) __ppc_##NAME##_vqvi##VKIND##vi##VKINDi0i0i0
542 #define
SUB_VQ_VU_VU_I_I_I(NAME
, VKIND
) __ppc_##NAME##_vqvu##VKIND##vu##VKINDi0i0ii0
544 #define
VEC_SUB_VQ_VI_VI_I_I_I(NAME
, INTENT
, VKIND
) \
545 procedure(sub_vq##INTENT##vi##VKIND##vi##VKIND##iii
) :: SUB_VQ_VI_VI_I_I_I(NAME
, VKIND
);
546 #define
VEC_SUB_VQ_VU_VU_I_I_I(NAME
, INTENT
, VKIND
) \
547 procedure(sub_vq##INTENT##vu##VKIND##vu##VKIND##iii
) :: SUB_VQ_VU_VU_I_I_I(NAME
, VKIND
);
550 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2_
,out
,1)
551 interface mma_pmxvbf16ger2
552 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2_
,1)
553 end interface mma_pmxvbf16ger2
554 public mma_pmxvbf16ger2
557 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2nn
,inout
,1)
558 interface mma_pmxvbf16ger2nn
559 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2nn
,1)
560 end interface mma_pmxvbf16ger2nn
561 public mma_pmxvbf16ger2nn
564 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2np
,inout
,1)
565 interface mma_pmxvbf16ger2np
566 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2np
,1)
567 end interface mma_pmxvbf16ger2np
568 public mma_pmxvbf16ger2np
571 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2pn
,inout
,1)
572 interface mma_pmxvbf16ger2pn
573 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2pn
,1)
574 end interface mma_pmxvbf16ger2pn
575 public mma_pmxvbf16ger2pn
578 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2pp
,inout
,1)
579 interface mma_pmxvbf16ger2pp
580 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2pp
,1)
581 end interface mma_pmxvbf16ger2pp
582 public mma_pmxvbf16ger2pp
585 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2_
,out
,1)
586 interface mma_pmxvf16ger2
587 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2_
,1)
588 end interface mma_pmxvf16ger2
589 public mma_pmxvf16ger2
592 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2nn
,inout
,1)
593 interface mma_pmxvf16ger2nn
594 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2nn
,1)
595 end interface mma_pmxvf16ger2nn
596 public mma_pmxvf16ger2nn
599 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2np
,inout
,1)
600 interface mma_pmxvf16ger2np
601 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2np
,1)
602 end interface mma_pmxvf16ger2np
603 public mma_pmxvf16ger2np
606 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2pn
,inout
,1)
607 interface mma_pmxvf16ger2pn
608 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2pn
,1)
609 end interface mma_pmxvf16ger2pn
610 public mma_pmxvf16ger2pn
613 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2pp
,inout
,1)
614 interface mma_pmxvf16ger2pp
615 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2pp
,1)
616 end interface mma_pmxvf16ger2pp
617 public mma_pmxvf16ger2pp
620 VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2_
,out
,2)
621 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2_
,out
,1)
622 interface mma_pmxvi16ger2
623 procedure
:: SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2_
,2)
624 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2_
,1)
625 end interface mma_pmxvi16ger2
626 public mma_pmxvi16ger2
629 VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2pp
,inout
,2)
630 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2pp
,inout
,1)
631 interface mma_pmxvi16ger2pp
632 procedure
:: SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2pp
,2)
633 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2pp
,1)
634 end interface mma_pmxvi16ger2pp
635 public mma_pmxvi16ger2pp
638 VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2s
,out
,2)
639 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2s
,out
,1)
640 interface mma_pmxvi16ger2s
641 procedure
:: SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2s
,2)
642 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2s
,1)
643 end interface mma_pmxvi16ger2s
644 public mma_pmxvi16ger2s
647 VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2spp
,inout
,2)
648 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2spp
,inout
,1)
649 interface mma_pmxvi16ger2spp
650 procedure
:: SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2spp
,2)
651 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2spp
,1)
652 end interface mma_pmxvi16ger2spp
653 public mma_pmxvi16ger2spp
656 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi4ger8_
,out
,1)
657 interface mma_pmxvi4ger8
658 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvi4ger8_
,1)
659 end interface mma_pmxvi4ger8
660 public mma_pmxvi4ger8
663 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi4ger8pp
,inout
,1)
664 interface mma_pmxvi4ger8pp
665 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvi4ger8pp
,1)
666 end interface mma_pmxvi4ger8pp
667 public mma_pmxvi4ger8pp
670 VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4_
,out
,1)
671 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4_
,out
,1)
672 interface mma_pmxvi8ger4
673 procedure
:: SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4_
,1)
674 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4_
,1)
675 end interface mma_pmxvi8ger4
676 public mma_pmxvi8ger4
679 VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4pp
,inout
,1)
680 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4pp
,inout
,1)
681 interface mma_pmxvi8ger4pp
682 procedure
:: SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4pp
,1)
683 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4pp
,1)
684 end interface mma_pmxvi8ger4pp
685 public mma_pmxvi8ger4pp
688 VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4spp
,inout
,1)
689 VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4spp
,inout
,1)
690 interface mma_pmxvi8ger4spp
691 procedure
:: SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4spp
,1)
692 procedure
:: SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4spp
,1)
693 end interface mma_pmxvi8ger4spp
694 public mma_pmxvi8ger4spp
696 #undef VEC_SUB_VQ_VU_VU_I_I_I
697 #undef VEC_SUB_VQ_VI_VI_I_I_I
698 #undef SUB_VQ_VU_VU_I_I_I
699 #undef SUB_VQ_VI_VI_I_I_I
701 #define
SUB_VQ_VU_VU_I_I(NAME
, VKIND
) __ppc_##NAME##_vqvu##VKIND##vu##VKINDi0i0
702 #define
SUB_VQ_VR_VR_I_I(NAME
, VKIND
) __ppc_##NAME##_vqvr##VKIND##vr##VKINDi0i0
704 #define
VEC_SUB_VQ_VU_VU_I_I(NAME
, INTENT
, VKIND
) \
705 procedure(sub_vq##INTENT##vu##VKIND##vu##VKIND##ii
) :: SUB_VQ_VU_VU_I_I(NAME
, VKIND
);
706 #define
VEC_SUB_VQ_VR_VR_I_I(NAME
, INTENT
, VKIND
) \
707 procedure(sub_vq##INTENT##vr##VKIND##vr##VKIND##ii
) :: SUB_VQ_VR_VR_I_I(NAME
, VKIND
);
710 VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32ger
,out
,1)
711 VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32ger
,out
,4)
712 interface mma_pmxvf32ger
713 procedure
:: SUB_VQ_VU_VU_I_I(mma_pmxvf32ger
,1)
714 procedure
:: SUB_VQ_VR_VR_I_I(mma_pmxvf32ger
,4)
715 end interface mma_pmxvf32ger
716 public mma_pmxvf32ger
719 VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32gernn
,inout
,1)
720 VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32gernn
,inout
,4)
721 interface mma_pmxvf32gernn
722 procedure
:: SUB_VQ_VU_VU_I_I(mma_pmxvf32gernn
,1)
723 procedure
:: SUB_VQ_VR_VR_I_I(mma_pmxvf32gernn
,4)
724 end interface mma_pmxvf32gernn
725 public mma_pmxvf32gernn
728 VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32gernp
,inout
,1)
729 VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32gernp
,inout
,4)
730 interface mma_pmxvf32gernp
731 procedure
:: SUB_VQ_VU_VU_I_I(mma_pmxvf32gernp
,1)
732 procedure
:: SUB_VQ_VR_VR_I_I(mma_pmxvf32gernp
,4)
733 end interface mma_pmxvf32gernp
734 public mma_pmxvf32gernp
737 VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32gerpn
,inout
,1)
738 VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32gerpn
,inout
,4)
739 interface mma_pmxvf32gerpn
740 procedure
:: SUB_VQ_VU_VU_I_I(mma_pmxvf32gerpn
,1)
741 procedure
:: SUB_VQ_VR_VR_I_I(mma_pmxvf32gerpn
,4)
742 end interface mma_pmxvf32gerpn
743 public mma_pmxvf32gerpn
746 VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32gerpp
,inout
,1)
747 VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32gerpp
,inout
,4)
748 interface mma_pmxvf32gerpp
749 procedure
:: SUB_VQ_VU_VU_I_I(mma_pmxvf32gerpp
,1)
750 procedure
:: SUB_VQ_VR_VR_I_I(mma_pmxvf32gerpp
,4)
751 end interface mma_pmxvf32gerpp
752 public mma_pmxvf32gerpp
754 #undef VEC_SUB_VQ_VR_VR_I_I
755 #undef VEC_SUB_VQ_VU_VU_I_I
756 #undef SUB_VQ_VR_VR_I_I
757 #undef SUB_VQ_VU_VU_I_I
759 #define
SUB_VQ_VP_VU_I_I(NAME
, VKIND
) __ppc_##NAME##_vqvpvu##VKINDi0i0
760 #define
SUB_VQ_VP_VR_I_I(NAME
, VKIND
) __ppc_##NAME##_vqvpvr##VKINDi0i0
762 #define
VEC_SUB_VQ_VP_VU_I_I(NAME
, INTENT
, VKIND
) \
763 procedure(sub_vq##INTENT##vpvu##VKIND##ii
) :: SUB_VQ_VP_VU_I_I(NAME
, VKIND
);
764 #define
VEC_SUB_VQ_VP_VR_I_I(NAME
, INTENT
, VKIND
) \
765 procedure(sub_vq##INTENT##vpvr##VKIND##ii
) :: SUB_VQ_VP_VR_I_I(NAME
, VKIND
);
768 VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64ger
,out
,1)
769 VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64ger
,out
,8)
770 interface mma_pmxvf64ger
771 procedure
:: SUB_VQ_VP_VU_I_I(mma_pmxvf64ger
,1)
772 procedure
:: SUB_VQ_VP_VR_I_I(mma_pmxvf64ger
,8)
773 end interface mma_pmxvf64ger
774 public mma_pmxvf64ger
777 VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64gernn
,inout
,1)
778 VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64gernn
,inout
,8)
779 interface mma_pmxvf64gernn
780 procedure
:: SUB_VQ_VP_VU_I_I(mma_pmxvf64gernn
,1)
781 procedure
:: SUB_VQ_VP_VR_I_I(mma_pmxvf64gernn
,8)
782 end interface mma_pmxvf64gernn
783 public mma_pmxvf64gernn
786 VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64gernp
,inout
,1)
787 VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64gernp
,inout
,8)
788 interface mma_pmxvf64gernp
789 procedure
:: SUB_VQ_VP_VU_I_I(mma_pmxvf64gernp
,1)
790 procedure
:: SUB_VQ_VP_VR_I_I(mma_pmxvf64gernp
,8)
791 end interface mma_pmxvf64gernp
792 public mma_pmxvf64gernp
795 VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64gerpn
,inout
,1)
796 VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64gerpn
,inout
,8)
797 interface mma_pmxvf64gerpn
798 procedure
:: SUB_VQ_VP_VU_I_I(mma_pmxvf64gerpn
,1)
799 procedure
:: SUB_VQ_VP_VR_I_I(mma_pmxvf64gerpn
,8)
800 end interface mma_pmxvf64gerpn
801 public mma_pmxvf64gerpn
804 VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64gerpp
,inout
,1)
805 VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64gerpp
,inout
,8)
806 interface mma_pmxvf64gerpp
807 procedure
:: SUB_VQ_VP_VU_I_I(mma_pmxvf64gerpp
,1)
808 procedure
:: SUB_VQ_VP_VR_I_I(mma_pmxvf64gerpp
,8)
809 end interface mma_pmxvf64gerpp
810 public mma_pmxvf64gerpp
812 #undef VEC_SUB_VQ_VP_VR_I_I
813 #undef VEC_SUB_VQ_VP_VU_I_I
814 #undef SUB_VQ_VP_VR_I_I
815 #undef SUB_VQ_VP_VU_I_I
817 #define
SUB_VQ_VI_VI(NAME
, VKIND
) __ppc_##NAME##_vi##VKIND##vi##VKIND
818 #define
SUB_VQ_VU_VU(NAME
, VKIND
) __ppc_##NAME##_vu##VKIND##vu##VKIND
819 #define
SUB_VQ_VR_VR(NAME
, VKIND
) __ppc_##NAME##_vr##VKIND##vr##VKIND
821 #define
VEC_SUB_VQ_VI_VI(NAME
, INTENT
, VKIND
) \
822 procedure(sub_vq##INTENT##vi##VKIND##vi##VKIND
) :: SUB_VQ_VI_VI(NAME
, VKIND
);
823 #define
VEC_SUB_VQ_VU_VU(NAME
, INTENT
, VKIND
) \
824 procedure(sub_vq##INTENT##vu##VKIND##vu##VKIND
) :: SUB_VQ_VU_VU(NAME
, VKIND
);
825 #define
VEC_SUB_VQ_VR_VR(NAME
, INTENT
, VKIND
) \
826 procedure(sub_vq##INTENT##vr##VKIND##vr##VKIND
) :: SUB_VQ_VR_VR(NAME
, VKIND
);
828 !! First argument with INTENT(INOUT)
830 VEC_SUB_VQ_VU_VU(mma_xvbf16ger2nn
,inout
,1)
831 interface mma_xvbf16ger2nn
832 procedure
:: SUB_VQ_VU_VU(mma_xvbf16ger2nn
,1)
834 public mma_xvbf16ger2nn
837 VEC_SUB_VQ_VU_VU(mma_xvbf16ger2np
,inout
,1)
838 interface mma_xvbf16ger2np
839 procedure
:: SUB_VQ_VU_VU(mma_xvbf16ger2np
,1)
841 public mma_xvbf16ger2np
844 VEC_SUB_VQ_VU_VU(mma_xvbf16ger2pn
,inout
,1)
845 interface mma_xvbf16ger2pn
846 procedure
:: SUB_VQ_VU_VU(mma_xvbf16ger2pn
,1)
848 public mma_xvbf16ger2pn
851 VEC_SUB_VQ_VU_VU(mma_xvbf16ger2pp
,inout
,1)
852 interface mma_xvbf16ger2pp
853 procedure
:: SUB_VQ_VU_VU(mma_xvbf16ger2pp
,1)
855 public mma_xvbf16ger2pp
858 VEC_SUB_VQ_VI_VI(mma_xvi8ger4pp
,inout
,1)
859 VEC_SUB_VQ_VU_VU(mma_xvi8ger4pp
,inout
,1)
860 interface mma_xvi8ger4pp
861 procedure
:: SUB_VQ_VI_VI(mma_xvi8ger4pp
,1)
862 procedure
:: SUB_VQ_VU_VU(mma_xvi8ger4pp
,1)
864 public mma_xvi8ger4pp
867 VEC_SUB_VQ_VI_VI(mma_xvi8ger4spp
,inout
,1)
868 VEC_SUB_VQ_VU_VU(mma_xvi8ger4spp
,inout
,1)
869 interface mma_xvi8ger4spp
870 procedure
:: SUB_VQ_VI_VI(mma_xvi8ger4spp
,1)
871 procedure
:: SUB_VQ_VU_VU(mma_xvi8ger4spp
,1)
873 public mma_xvi8ger4spp
876 VEC_SUB_VQ_VI_VI(mma_xvi16ger2pp
,inout
,2)
877 VEC_SUB_VQ_VU_VU(mma_xvi16ger2pp
,inout
,1)
878 interface mma_xvi16ger2pp
879 procedure
:: SUB_VQ_VI_VI(mma_xvi16ger2pp
,2)
880 procedure
:: SUB_VQ_VU_VU(mma_xvi16ger2pp
,1)
882 public mma_xvi16ger2pp
885 VEC_SUB_VQ_VI_VI(mma_xvi16ger2s
,inout
,2)
886 VEC_SUB_VQ_VU_VU(mma_xvi16ger2s
,inout
,1)
887 interface mma_xvi16ger2s
888 procedure
:: SUB_VQ_VI_VI(mma_xvi16ger2s
,2)
889 procedure
:: SUB_VQ_VU_VU(mma_xvi16ger2s
,1)
891 public mma_xvi16ger2s
894 VEC_SUB_VQ_VI_VI(mma_xvi16ger2spp
,inout
,2)
895 VEC_SUB_VQ_VU_VU(mma_xvi16ger2spp
,inout
,1)
896 interface mma_xvi16ger2spp
897 procedure
:: SUB_VQ_VI_VI(mma_xvi16ger2spp
,2)
898 procedure
:: SUB_VQ_VU_VU(mma_xvi16ger2spp
,1)
900 public mma_xvi16ger2spp
903 VEC_SUB_VQ_VU_VU(mma_xvi4ger8pp
,inout
,1)
904 interface mma_xvi4ger8pp
905 procedure
:: SUB_VQ_VU_VU(mma_xvi4ger8pp
,1)
907 public mma_xvi4ger8pp
910 VEC_SUB_VQ_VU_VU(mma_xvf16ger2nn
,inout
,1)
911 interface mma_xvf16ger2nn
912 procedure
:: SUB_VQ_VU_VU(mma_xvf16ger2nn
,1)
914 public mma_xvf16ger2nn
917 VEC_SUB_VQ_VU_VU(mma_xvf16ger2np
,inout
,1)
918 interface mma_xvf16ger2np
919 procedure
:: SUB_VQ_VU_VU(mma_xvf16ger2np
,1)
921 public mma_xvf16ger2np
924 VEC_SUB_VQ_VU_VU(mma_xvf16ger2pn
,inout
,1)
925 interface mma_xvf16ger2pn
926 procedure
:: SUB_VQ_VU_VU(mma_xvf16ger2pn
,1)
928 public mma_xvf16ger2pn
931 VEC_SUB_VQ_VU_VU(mma_xvf16ger2pp
,inout
,1)
932 interface mma_xvf16ger2pp
933 procedure
:: SUB_VQ_VU_VU(mma_xvf16ger2pp
,1)
935 public mma_xvf16ger2pp
938 VEC_SUB_VQ_VU_VU(mma_xvf32gernn
,inout
,1)
939 VEC_SUB_VQ_VR_VR(mma_xvf32gernn
,inout
,4)
940 interface mma_xvf32gernn
941 procedure
:: SUB_VQ_VU_VU(mma_xvf32gernn
,1)
942 procedure
:: SUB_VQ_VR_VR(mma_xvf32gernn
,4)
944 public mma_xvf32gernn
947 VEC_SUB_VQ_VU_VU(mma_xvf32gernp
,inout
,1)
948 VEC_SUB_VQ_VR_VR(mma_xvf32gernp
,inout
,4)
949 interface mma_xvf32gernp
950 procedure
:: SUB_VQ_VU_VU(mma_xvf32gernp
,1)
951 procedure
:: SUB_VQ_VR_VR(mma_xvf32gernp
,4)
953 public mma_xvf32gernp
956 VEC_SUB_VQ_VU_VU(mma_xvf32gerpn
,inout
,1)
957 VEC_SUB_VQ_VR_VR(mma_xvf32gerpn
,inout
,4)
958 interface mma_xvf32gerpn
959 procedure
:: SUB_VQ_VU_VU(mma_xvf32gerpn
,1)
960 procedure
:: SUB_VQ_VR_VR(mma_xvf32gerpn
,4)
962 public mma_xvf32gerpn
965 VEC_SUB_VQ_VU_VU(mma_xvf32gerpp
,inout
,1)
966 VEC_SUB_VQ_VR_VR(mma_xvf32gerpp
,inout
,4)
967 interface mma_xvf32gerpp
968 procedure
:: SUB_VQ_VU_VU(mma_xvf32gerpp
,1)
969 procedure
:: SUB_VQ_VR_VR(mma_xvf32gerpp
,4)
971 public mma_xvf32gerpp
973 !! First argument with INTENT(OUT)
975 VEC_SUB_VQ_VU_VU(mma_xvbf16ger2_
,out
,1)
976 interface mma_xvbf16ger2
977 procedure
:: SUB_VQ_VU_VU(mma_xvbf16ger2_
,1)
979 public mma_xvbf16ger2
982 VEC_SUB_VQ_VI_VI(mma_xvi16ger2_
,out
,2)
983 VEC_SUB_VQ_VU_VU(mma_xvi16ger2_
,out
,1)
984 interface mma_xvi16ger2
985 procedure
:: SUB_VQ_VI_VI(mma_xvi16ger2_
,2)
986 procedure
:: SUB_VQ_VU_VU(mma_xvi16ger2_
,1)
991 VEC_SUB_VQ_VU_VU(mma_xvi4ger8_
,out
,1)
992 interface mma_xvi4ger8
993 procedure
:: SUB_VQ_VU_VU(mma_xvi4ger8_
,1)
998 VEC_SUB_VQ_VI_VI(mma_xvi8ger4_
,out
,1)
999 VEC_SUB_VQ_VU_VU(mma_xvi8ger4_
,out
,1)
1000 interface mma_xvi8ger4
1001 procedure
:: SUB_VQ_VI_VI(mma_xvi8ger4_
,1)
1002 procedure
:: SUB_VQ_VU_VU(mma_xvi8ger4_
,1)
1007 VEC_SUB_VQ_VU_VU(mma_xvf16ger2_
,out
,1)
1008 interface mma_xvf16ger2
1009 procedure
:: SUB_VQ_VU_VU(mma_xvf16ger2_
,1)
1011 public mma_xvf16ger2
1014 VEC_SUB_VQ_VU_VU(mma_xvf32ger
,out
,1)
1015 VEC_SUB_VQ_VR_VR(mma_xvf32ger
,out
,4)
1016 interface mma_xvf32ger
1017 procedure
:: SUB_VQ_VU_VU(mma_xvf32ger
,1)
1018 procedure
:: SUB_VQ_VR_VR(mma_xvf32ger
,4)
1022 #undef VEC_SUB_VQ_VR_VR
1023 #undef VEC_SUB_VQ_VU_VU
1024 #undef VEC_SUB_VQ_VI_VI
1029 #define
SUB_VQ_VP_VU(NAME
, VKIND
) __ppc_##NAME##_vu##VKIND
1030 #define
SUB_VQ_VP_VR(NAME
, VKIND
) __ppc_##NAME##_vr##VKIND
1032 #define
VEC_SUB_VQ_VP_VU(NAME
, INTENT
, VKIND
) \
1033 procedure(sub_vq##INTENT##vpvu##VKIND
) :: SUB_VQ_VP_VU(NAME
, VKIND
);
1034 #define
VEC_SUB_VQ_VP_VR(NAME
, INTENT
, VKIND
) \
1035 procedure(sub_vq##INTENT##vpvr##VKIND
) :: SUB_VQ_VP_VR(NAME
, VKIND
);
1038 VEC_SUB_VQ_VP_VU(mma_xvf64ger
,out
,1)
1039 VEC_SUB_VQ_VP_VR(mma_xvf64ger
,out
,8)
1040 interface mma_xvf64ger
1041 procedure
:: SUB_VQ_VP_VU(mma_xvf64ger
,1)
1042 procedure
:: SUB_VQ_VP_VR(mma_xvf64ger
,8)
1047 VEC_SUB_VQ_VP_VU(mma_xvf64gernn
,inout
,1)
1048 VEC_SUB_VQ_VP_VR(mma_xvf64gernn
,inout
,8)
1049 interface mma_xvf64gernn
1050 procedure
:: SUB_VQ_VP_VU(mma_xvf64gernn
,1)
1051 procedure
:: SUB_VQ_VP_VR(mma_xvf64gernn
,8)
1053 public mma_xvf64gernn
1056 VEC_SUB_VQ_VP_VU(mma_xvf64gernp
,inout
,1)
1057 VEC_SUB_VQ_VP_VR(mma_xvf64gernp
,inout
,8)
1058 interface mma_xvf64gernp
1059 procedure
:: SUB_VQ_VP_VU(mma_xvf64gernp
,1)
1060 procedure
:: SUB_VQ_VP_VR(mma_xvf64gernp
,8)
1062 public mma_xvf64gernp
1065 VEC_SUB_VQ_VP_VU(mma_xvf64gerpn
,inout
,1)
1066 VEC_SUB_VQ_VP_VR(mma_xvf64gerpn
,inout
,8)
1067 interface mma_xvf64gerpn
1068 procedure
:: SUB_VQ_VP_VU(mma_xvf64gerpn
,1)
1069 procedure
:: SUB_VQ_VP_VR(mma_xvf64gerpn
,8)
1071 public mma_xvf64gerpn
1074 VEC_SUB_VQ_VP_VU(mma_xvf64gerpp
,inout
,1)
1075 VEC_SUB_VQ_VP_VR(mma_xvf64gerpp
,inout
,8)
1076 interface mma_xvf64gerpp
1077 procedure
:: SUB_VQ_VP_VU(mma_xvf64gerpp
,1)
1078 procedure
:: SUB_VQ_VP_VR(mma_xvf64gerpp
,8)
1080 public mma_xvf64gerpp
1082 #undef VEC_SUB_VQ_VP_VR
1083 #undef VEC_SUB_VQ_VP_VU
1087 ! mma_disassemble_acc
1088 procedure(sub_atvq
) :: __ppc_mma_disassemble_acc
1089 interface mma_disassemble_acc
1090 procedure
:: __ppc_mma_disassemble_acc
1092 public mma_disassemble_acc
1094 ! mma_disassemble_pair
1095 procedure(sub_atvp
) :: __ppc_mma_disassemble_pair
1096 interface mma_disassemble_pair
1097 procedure
:: __ppc_mma_disassemble_pair
1099 public mma_disassemble_pair
1102 procedure(sub_vq
) :: __ppc_mma_xxmfacc
1103 interface mma_xxmfacc
1104 procedure
:: __ppc_mma_xxmfacc
1109 procedure(sub_vq
) :: __ppc_mma_xxmtacc
1110 interface mma_xxmtacc
1111 procedure
:: __ppc_mma_xxmtacc
1116 procedure(sub_vq
) :: __ppc_mma_xxsetaccz
1117 interface mma_xxsetaccz
1118 procedure
:: __ppc_mma_xxsetaccz
1120 public mma_xxsetaccz