cb424d7448
verify-patch-sanity.py validates every active recipe .patch has internally- consistent hunk line counts — catching the 'malformed patch at line N' failure at commit/CI/preflight time instead of hours into a cook. This cycle hit that class three times (qtwaylandscanner, sddm, xwayland), each only discovered when cookbook tried to apply the patch. Running it across the repo found 29 latent malformed patches (validated against GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22'). They were harmless only because they sit in vendored recipes (baked, not re- applied) — but would fail on any version-bump re-derivation. --fix recounts the hunk headers (body untouched) and repaired all 29. Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test (test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats (empty placeholders, bare-@@ git hunks).
1123 lines
38 KiB
Fortran
1123 lines
38 KiB
Fortran
!===-- module/mma.f90 ------------------------------------------------------===!
|
|
!
|
|
! Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
! See https://llvm.org/LICENSE.txt for license information.
|
|
! SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
!
|
|
!===------------------------------------------------------------------------===!
|
|
|
|
module mma
|
|
implicit none
|
|
private
|
|
|
|
abstract interface
|
|
|
|
!! ========== 1 argument subroutine interface ================================!!
|
|
!! subroutine s(__vector_quad)
|
|
elemental subroutine sub_vq(acc)
|
|
__vector_quad, intent(inout) :: acc
|
|
end subroutine
|
|
|
|
!! ========== 2 argument subroutine interface ================================!!
|
|
!! __vector_pair function f(i, vector(i))
|
|
#define FUNC_VPI0VI(VKIND) \
|
|
pure __vector_pair function func_vpi0vi##VKIND(arg1, arg2); \
|
|
integer(8), intent(in) :: arg1; \
|
|
!dir$ ignore_tkr(k) arg1; \
|
|
vector(integer(VKIND)), intent(in) :: arg2; \
|
|
!dir$ ignore_tkr(r) arg2; \
|
|
end function;
|
|
|
|
! __vector_pair function f(i, vector(u))
|
|
#define FUNC_VPI0VU(VKIND) \
|
|
pure __vector_pair function func_vpi0vu##VKIND(arg1, arg2); \
|
|
integer(8), intent(in) :: arg1; \
|
|
!dir$ ignore_tkr(k) arg1; \
|
|
vector(unsigned(VKIND)), intent(in) :: arg2; \
|
|
!dir$ ignore_tkr(r) arg2; \
|
|
end function;
|
|
|
|
! __vector_pair function f(i, vector(r))
|
|
#define FUNC_VPI0VR(VKIND) \
|
|
pure __vector_pair function func_vpi0vr##VKIND(arg1, arg2); \
|
|
integer(8), intent(in) :: arg1; \
|
|
!dir$ ignore_tkr(k) arg1; \
|
|
vector(real(VKIND)), intent(in) :: arg2; \
|
|
!dir$ ignore_tkr(r) arg2; \
|
|
end function;
|
|
|
|
! __vector_pair function f(i, __vector_pair)
|
|
#define FUNC_VPI0VP \
|
|
pure __vector_pair function func_vpi0vp(arg1, arg2); \
|
|
integer(8), intent(in) :: arg1; \
|
|
!dir$ ignore_tkr(k) arg1; \
|
|
__vector_pair, intent(in) :: arg2; \
|
|
!dir$ ignore_tkr(r) arg2; \
|
|
end function;
|
|
|
|
FUNC_VPI0VI(1) FUNC_VPI0VI(2) FUNC_VPI0VI(4) FUNC_VPI0VI(8)
|
|
FUNC_VPI0VU(1) FUNC_VPI0VU(2) FUNC_VPI0VU(4) FUNC_VPI0VU(8)
|
|
FUNC_VPI0VR(4) FUNC_VPI0VR(8)
|
|
FUNC_VPI0VP
|
|
|
|
#undef FUNC_VPI0VP
|
|
#undef FUNC_VPI0VR
|
|
#undef FUNC_VPI0VU
|
|
#undef FUNC_VPI0VI
|
|
|
|
!! ========== 3 arguments subroutine interface ===============================!!
|
|
!! __vector_pair subroutine s(vp, integer, vector(i))
|
|
#define SUB_VPI0VI(VKIND) \
|
|
pure subroutine sub_vpi0vi##VKIND(arg1, arg2, arg3); \
|
|
__vector_pair, intent(in) :: arg1; \
|
|
integer(8), intent(in) :: arg2; \
|
|
!dir$ ignore_tkr(k) arg2; \
|
|
vector(integer(VKIND)), intent(out) :: arg3; \
|
|
!dir$ ignore_tkr(r) arg3; \
|
|
end subroutine;
|
|
|
|
! subroutine(__vector_pair, i, vector(u))
|
|
#define SUB_VPI0VU(VKIND) \
|
|
pure subroutine sub_vpi0vu##VKIND(arg1, arg2, arg3); \
|
|
__vector_pair, intent(in) :: arg1; \
|
|
integer(8), intent(in) :: arg2; \
|
|
!dir$ ignore_tkr(k) arg2; \
|
|
vector(unsigned(VKIND)), intent(out) :: arg3; \
|
|
!dir$ ignore_tkr(r) arg3; \
|
|
end subroutine;
|
|
|
|
! subroutine(__vector_pair, i, vector(r))
|
|
#define SUB_VPI0VR(VKIND) \
|
|
pure subroutine sub_vpi0vr##VKIND(arg1, arg2, arg3); \
|
|
__vector_pair, intent(in) :: arg1; \
|
|
integer(8), intent(in) :: arg2; \
|
|
!dir$ ignore_tkr(k) arg2; \
|
|
vector(real(VKIND)), intent(out) :: arg3; \
|
|
!dir$ ignore_tkr(r) arg3; \
|
|
end subroutine;
|
|
|
|
! subroutine(__vector_pair, i, i)
|
|
pure subroutine sub_vpi0i0(arg1, arg2, arg3)
|
|
__vector_pair, intent(in) :: arg1
|
|
integer(8), intent(in) :: arg2
|
|
!dir$ ignore_tkr(k) arg2
|
|
integer(8), intent(out) :: arg3
|
|
!dir$ ignore_tkr(kr) arg3
|
|
end subroutine
|
|
|
|
! subroutine(__vector_pair, i, r)
|
|
pure subroutine sub_vpi0r0(arg1, arg2, arg3)
|
|
__vector_pair, intent(in) :: arg1
|
|
integer(8), intent(in) :: arg2
|
|
!dir$ ignore_tkr(k) arg2
|
|
real(8), intent(out) :: arg3
|
|
!dir$ ignore_tkr(kr) arg3
|
|
end subroutine
|
|
|
|
! subroutine(__vector_pair, i, __vector_pair)
|
|
pure subroutine sub_vpi0vp(arg1, arg2, arg3)
|
|
__vector_pair, intent(in) :: arg1
|
|
integer(8), intent(in) :: arg2
|
|
!dir$ ignore_tkr(k) arg2
|
|
__vector_pair, intent(out) :: arg3
|
|
!dir$ ignore_tkr(r) arg3
|
|
end subroutine
|
|
|
|
!! subroutine s(__vector_pair, vector(i), vector(i))
|
|
#define ELEM_SUB_VPVIVI(VKIND) \
|
|
elemental subroutine sub_vpvi##VKIND##vi##VKIND(pair, arg1, arg2); \
|
|
__vector_pair, intent(out) :: pair ; \
|
|
vector(integer(VKIND)), intent(in) :: arg1, arg2; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_pair, vector(u), vector(u))
|
|
#define ELEM_SUB_VPVUVU(VKIND) \
|
|
elemental subroutine sub_vpvu##VKIND##vu##VKIND(pair, arg1, arg2); \
|
|
__vector_pair, intent(out) :: pair ; \
|
|
vector(unsigned(VKIND)), intent(in) :: arg1, arg2; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_pair, vector(r), vector(r))
|
|
#define ELEM_SUB_VPVRVR(VKIND) \
|
|
elemental subroutine sub_vpvr##VKIND##vr##VKIND(pair, arg1, arg2); \
|
|
__vector_pair, intent(out) :: pair ; \
|
|
vector(real(VKIND)), intent(in) :: arg1, arg2; \
|
|
end subroutine ;
|
|
|
|
ELEM_SUB_VPVIVI(1) ELEM_SUB_VPVIVI(2)
|
|
ELEM_SUB_VPVIVI(4) ELEM_SUB_VPVIVI(8)
|
|
ELEM_SUB_VPVUVU(1) ELEM_SUB_VPVUVU(2)
|
|
ELEM_SUB_VPVUVU(4) ELEM_SUB_VPVUVU(8)
|
|
ELEM_SUB_VPVRVR(4) ELEM_SUB_VPVRVR(8)
|
|
SUB_VPI0VI(1) SUB_VPI0VI(2) SUB_VPI0VI(4) SUB_VPI0VI(8)
|
|
SUB_VPI0VU(1) SUB_VPI0VU(2) SUB_VPI0VU(4) SUB_VPI0VU(8)
|
|
SUB_VPI0VR(4) SUB_VPI0VR(8)
|
|
|
|
#undef ELEM_SUB_VPVIVI
|
|
#undef ELEM_SUB_VPVUVU
|
|
#undef ELEM_SUB_VPVRVR
|
|
#undef SUB_VPI0VR
|
|
#undef SUB_VPI0VU
|
|
#undef SUB_VPI0VI
|
|
|
|
!! subroutine s(__vector_quad, vector(i), vector(i))
|
|
#define ELEM_SUB_VQVIVI(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vi##VKIND##vi##VKIND(acc, a, b); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
vector(integer(VKIND)), intent(in) :: a, b; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_quad, vector(u), vector(u))
|
|
#define ELEM_SUB_VQVUVU(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vu##VKIND##vu##VKIND(acc, a, b); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
vector(unsigned(VKIND)), intent(in) :: a, b; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_quad, vector(r), vector(r))
|
|
#define ELEM_SUB_VQVRVR(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vr##VKIND##vr##VKIND(acc, a, b); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
vector(real(VKIND)), intent(in) :: a, b; \
|
|
end subroutine ;
|
|
|
|
ELEM_SUB_VQVIVI(inout,1) ELEM_SUB_VQVIVI(inout,2)
|
|
ELEM_SUB_VQVUVU(inout,1)
|
|
ELEM_SUB_VQVRVR(inout,4)
|
|
ELEM_SUB_VQVIVI(out,1) ELEM_SUB_VQVIVI(out,2)
|
|
ELEM_SUB_VQVUVU(out,1)
|
|
ELEM_SUB_VQVRVR(out,4)
|
|
|
|
#undef ELEM_SUB_VQVRVR
|
|
#undef ELEM_SUB_VQVUVU
|
|
#undef ELEM_SUB_VQVIVI
|
|
|
|
!! subroutine s(__vector_quad, __vector_pair, vector(u))
|
|
#define ELEM_SUB_VQVPVU(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vpvu##VKIND(acc, a, b); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
__vector_pair, intent(in) :: a; \
|
|
vector(unsigned(VKIND)), intent(in) :: b; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_quad, __vector_pair, vector(r))
|
|
#define ELEM_SUB_VQVPVR(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vpvr##VKIND(acc, a, b); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
__vector_pair, intent(in) :: a; \
|
|
vector(real(VKIND)), intent(in) :: b; \
|
|
end subroutine ;
|
|
|
|
ELEM_SUB_VQVPVU(inout,1)
|
|
ELEM_SUB_VQVPVR(inout,8)
|
|
ELEM_SUB_VQVPVU(out,1)
|
|
ELEM_SUB_VQVPVR(out,8)
|
|
|
|
#undef ELEM_SUB_VQVPVR
|
|
#undef ELEM_SUB_VQVPVU
|
|
|
|
!! ========== 5 arguments subroutine interface ===============================!!
|
|
!! subroutine s(__vector_quad, vector(i), vector(i), vector(i), vector(i))
|
|
#define ELEM_SUB_VQVIVIVIVI(VKIND) \
|
|
elemental subroutine sub_vqvi##VKIND##vi##VKIND##vi##VKIND##vi##VKIND(acc, arg1, arg2, arg3, arg4); \
|
|
__vector_quad, intent(out) :: acc; \
|
|
vector(integer(VKIND)), intent(in) :: arg1, arg2, arg3, arg4; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_quad, vector(u), vector(u), vector(u), vector(u))
|
|
#define ELEM_SUB_VQVUVUVUVU(VKIND) \
|
|
elemental subroutine sub_vqvu##VKIND##vu##VKIND##vu##VKIND##vu##VKIND(acc, arg1, arg2, arg3, arg4); \
|
|
__vector_quad, intent(out) :: acc; \
|
|
vector(unsigned(VKIND)), intent(in) :: arg1, arg2, arg3, arg4; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_quad, vector(r), vector(r), vector(r), vector(r))
|
|
#define ELEM_SUB_VQVRVRVRVR(VKIND) \
|
|
elemental subroutine sub_vqvr##VKIND##vr##VKIND##vr##VKIND##vr##VKIND(acc, arg1, arg2, arg3, arg4); \
|
|
__vector_quad, intent(out) :: acc; \
|
|
vector(real(VKIND)), intent(in) :: arg1, arg2, arg3, arg4; \
|
|
end subroutine ;
|
|
|
|
ELEM_SUB_VQVIVIVIVI(1) ELEM_SUB_VQVIVIVIVI(2)
|
|
ELEM_SUB_VQVIVIVIVI(4) ELEM_SUB_VQVIVIVIVI(8)
|
|
ELEM_SUB_VQVUVUVUVU(1) ELEM_SUB_VQVUVUVUVU(2)
|
|
ELEM_SUB_VQVUVUVUVU(4) ELEM_SUB_VQVUVUVUVU(8)
|
|
ELEM_SUB_VQVRVRVRVR(4) ELEM_SUB_VQVRVRVRVR(8)
|
|
|
|
#undef ELEM_SUB_VQVRVRVRVR
|
|
#undef ELEM_SUB_VQVUVUVUVU
|
|
#undef ELEM_SUB_VQVIVIVIVI
|
|
|
|
!! subroutine s(__vector_quad, vector(u), vector(u), integer, integer)
|
|
#define ELEM_SUB_VQVUVUII(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vu##VKIND##vu##VKIND##ii(acc, a, b, xmask, ymask); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
vector(unsigned(VKIND)), intent(in) :: a, b; \
|
|
integer(8), intent(in) :: xmask, ymask; \
|
|
!dir$ ignore_tkr(k) xmask; \
|
|
!dir$ ignore_tkr(k) ymask; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_quad, vector(r), vector(r), integer, integer)
|
|
#define ELEM_SUB_VQVRVRII(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vr##VKIND##vr##VKIND##ii(acc, a, b, xmask, ymask); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
vector(real(VKIND)), intent(in) :: a, b; \
|
|
integer(8), intent(in) :: xmask, ymask; \
|
|
!dir$ ignore_tkr(k) xmask; \
|
|
!dir$ ignore_tkr(k) ymask; \
|
|
end subroutine ;
|
|
|
|
ELEM_SUB_VQVUVUII(inout,1)
|
|
ELEM_SUB_VQVRVRII(inout,4)
|
|
ELEM_SUB_VQVUVUII(out,1)
|
|
ELEM_SUB_VQVRVRII(out,4)
|
|
|
|
#undef ELEM_SUB_VQVRVRII
|
|
#undef ELEM_SUB_VQVUVUII
|
|
|
|
!! subroutine s(__vector_quad, __vector_pair, vector(u), integer, integer)
|
|
#define ELEM_SUB_VQVPVUII(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vpvu##VKIND##ii(acc, a, b, xmask, ymask); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
__vector_pair, intent(in) :: a; \
|
|
vector(unsigned(VKIND)), intent(in) :: b; \
|
|
integer(8), intent(in) :: xmask, ymask; \
|
|
!dir$ ignore_tkr(k) xmask; \
|
|
!dir$ ignore_tkr(k) ymask; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_quad, __vector_pair, vector(r), integer, integer)
|
|
#define ELEM_SUB_VQVPVRII(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vpvr##VKIND##ii(acc, a, b, xmask, ymask); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
__vector_pair, intent(in) :: a; \
|
|
vector(real(VKIND)), intent(in) :: b; \
|
|
integer(8), intent(in) :: xmask, ymask; \
|
|
!dir$ ignore_tkr(k) xmask; \
|
|
!dir$ ignore_tkr(k) ymask; \
|
|
end subroutine ;
|
|
|
|
ELEM_SUB_VQVPVUII(inout,1)
|
|
ELEM_SUB_VQVPVRII(inout,8)
|
|
ELEM_SUB_VQVPVUII(out,1)
|
|
ELEM_SUB_VQVPVRII(out,8)
|
|
|
|
#undef ELEM_SUB_VQVPVRII
|
|
#undef ELEM_SUB_VQVPVUII
|
|
|
|
!! ========== 6 arguments subroutine interface ===============================!!
|
|
!! subroutine s(__vector_quad, vector(i), vector(i), integer, integer, integer)
|
|
#define ELEM_SUB_VQVIVIIII(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vi##VKIND##vi##VKIND##iii(acc, a, b, xmask, ymask, pmask); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
vector(integer(VKIND)), intent(in) :: a, b; \
|
|
integer(8), intent(in) :: xmask, ymask, pmask; \
|
|
!dir$ ignore_tkr(k) xmask; \
|
|
!dir$ ignore_tkr(k) ymask; \
|
|
!dir$ ignore_tkr(k) pmask; \
|
|
end subroutine ;
|
|
|
|
!! subroutine s(__vector_quad, vector(u), vector(u), integer, integer, integer)
|
|
#define ELEM_SUB_VQVUVUIII(INTENT, VKIND) \
|
|
elemental subroutine sub_vq##INTENT##vu##VKIND##vu##VKIND##iii(acc, a, b, xmask, ymask, pmask); \
|
|
__vector_quad, intent(INTENT) :: acc; \
|
|
vector(unsigned(VKIND)), intent(in) :: a, b; \
|
|
integer(8), intent(in) :: xmask, ymask, pmask; \
|
|
!dir$ ignore_tkr(k) xmask; \
|
|
!dir$ ignore_tkr(k) ymask; \
|
|
!dir$ ignore_tkr(k) pmask; \
|
|
end subroutine ;
|
|
|
|
ELEM_SUB_VQVIVIIII(inout,1) ELEM_SUB_VQVIVIIII(inout,2)
|
|
ELEM_SUB_VQVUVUIII(inout,1)
|
|
ELEM_SUB_VQVIVIIII(out,1) ELEM_SUB_VQVIVIIII(out,2)
|
|
ELEM_SUB_VQVUVUIII(out,1)
|
|
|
|
#undef ELEM_SUB_VQVUVUIII
|
|
#undef ELEM_SUB_VQVIVIIII
|
|
|
|
!! ========== non-macro interface =============================================!!
|
|
elemental subroutine sub_atvp(data, pair)
|
|
! Dummy arg 'data' is supposed to be intent(out) of any type,
|
|
! but according to Fortran 2018: C709: Type(*) arguments can not have
|
|
! intent(out) attribute. Use intent(inout) instead.
|
|
type(*), intent(inout) :: data
|
|
__vector_pair, intent(inout) :: pair
|
|
end subroutine
|
|
|
|
elemental subroutine sub_atvq(data, acc)
|
|
! Dummy arg 'data' is supposed to be intent(out) of any type,
|
|
! but according to Fortran 2018: C709: Type(*) arguments can not have
|
|
! intent(out) attribute. Use intent(inout) instead.
|
|
type(*), intent(inout) :: data
|
|
__vector_quad, intent(inout) :: acc
|
|
end subroutine
|
|
|
|
end interface
|
|
|
|
!-------------------------------------------------------
|
|
! __vector_pair function(integer, vector/__vector_pair)
|
|
!-------------------------------------------------------
|
|
#define VP_I0_VI(NAME, VKIND) __ppc_##NAME##_vpi0##vi##VKIND
|
|
#define VP_I0_VU(NAME, VKIND) __ppc_##NAME##_vpi0##vu##VKIND
|
|
#define VP_I0_VR(NAME, VKIND) __ppc_##NAME##_vpi0##vr##VKIND
|
|
#define VP_I0_VP(NAME) __ppc_##NAME##_vpi0vp0
|
|
|
|
#define VEC_VP_I0_VI(NAME, VKIND) \
|
|
procedure(func_vpi0vi##VKIND) :: VP_I0_VI(NAME, VKIND);
|
|
#define VEC_VP_I0_VU(NAME, VKIND) \
|
|
procedure(func_vpi0vu##VKIND) :: VP_I0_VU(NAME, VKIND);
|
|
#define VEC_VP_I0_VR(NAME, VKIND) \
|
|
procedure(func_vpi0vr##VKIND) :: VP_I0_VR(NAME, VKIND);
|
|
#define VEC_VP_I0_VP(NAME) procedure(func_vpi0vp) :: VP_I0_VP(NAME);
|
|
|
|
! mma_lxvp (using vec_lxvp)
|
|
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)
|
|
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)
|
|
VEC_VP_I0_VR(vec_lxvp,4) VEC_VP_I0_VR(vec_lxvp,8)
|
|
VEC_VP_I0_VP(vec_lxvp)
|
|
interface mma_lxvp
|
|
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)
|
|
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)
|
|
procedure :: VP_I0_VR(vec_lxvp,4), VP_I0_VR(vec_lxvp,8)
|
|
procedure :: VP_I0_VP(vec_lxvp)
|
|
end interface mma_lxvp
|
|
public :: mma_lxvp
|
|
|
|
#undef VEC_VP_I0_VP
|
|
#undef VEC_VP_I0_VR
|
|
#undef VEC_VP_I0_VU
|
|
#undef VEC_VP_I0_VI
|
|
#undef VP_I0_VP
|
|
#undef VP_I0_VR
|
|
#undef VP_I0_VU
|
|
#undef VP_I0_VI
|
|
|
|
!-----------------------------------------------------------------------
|
|
! subroutine(__vector_pair, integer, __vector_pair/vector/integer/real)
|
|
!-----------------------------------------------------------------------
|
|
#define VP_I0_VI(NAME, VKIND) __ppc_##NAME##_vpi0vi##VKIND
|
|
#define VP_I0_VU(NAME, VKIND) __ppc_##NAME##_vpi0vu##VKIND
|
|
#define VP_I0_VR(NAME, VKIND) __ppc_##NAME##_vpi0vr##VKIND
|
|
|
|
#define VEC_VP_I0_VI(NAME, VKIND) \
|
|
procedure(sub_vpi0vi##VKIND) :: VP_I0_VI(NAME, VKIND);
|
|
#define VEC_VP_I0_VU(NAME, VKIND) \
|
|
procedure(sub_vpi0vu##VKIND) :: VP_I0_VU(NAME, VKIND);
|
|
#define VEC_VP_I0_VR(NAME, VKIND) \
|
|
procedure(sub_vpi0vr##VKIND) :: VP_I0_VR(NAME, VKIND);
|
|
|
|
! mma_stxvp (using vec_stxvp)
|
|
procedure(sub_vpi0vp) :: __ppc_vec_stxvp_vpi0vp0
|
|
procedure(sub_vpi0i0) :: __ppc_vec_stxvp_vpi0i0
|
|
procedure(sub_vpi0r0) :: __ppc_vec_stxvp_vpi0r0
|
|
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)
|
|
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)
|
|
VEC_VP_I0_VR(vec_stxvp, 4) VEC_VP_I0_VR(vec_stxvp, 8)
|
|
interface mma_stxvp
|
|
procedure :: __ppc_vec_stxvp_vpi0vp0
|
|
procedure :: __ppc_vec_stxvp_vpi0i0
|
|
procedure :: __ppc_vec_stxvp_vpi0r0
|
|
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)
|
|
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)
|
|
procedure :: VP_I0_VR(vec_stxvp, 4), VP_I0_VR(vec_stxvp, 8)
|
|
end interface mma_stxvp
|
|
public :: mma_stxvp
|
|
|
|
#undef VEC_VP_I0_VR
|
|
#undef VEC_VP_I0_VU
|
|
#undef VEC_VP_I0_VI
|
|
#undef VP_I0_VR
|
|
#undef VP_I0_VU
|
|
#undef VP_I0_VI
|
|
|
|
#define SUB_VQ_VI_VI_VI_VI(NAME, VKIND) __ppc_##NAME##_vi##VKIND##vi##VKIND##vi##VKIND##vi##VKIND
|
|
#define SUB_VQ_VU_VU_VU_VU(NAME, VKIND) __ppc_##NAME##_vu##VKIND##vu##VKIND##vu##VKIND##vu##VKIND
|
|
#define SUB_VQ_VR_VR_VR_VR(NAME, VKIND) __ppc_##NAME##_vr##VKIND##vr##VKIND##vr##VKIND##vr##VKIND
|
|
|
|
#define VEC_SUB_VQ_VI_VI_VI_VI(NAME, VKIND) \
|
|
procedure(sub_vqvi##VKIND##vi##VKIND##vi##VKIND##vi##VKIND) :: SUB_VQ_VI_VI_VI_VI(NAME, VKIND);
|
|
#define VEC_SUB_VQ_VU_VU_VU_VU(NAME, VKIND) \
|
|
procedure(sub_vqvu##VKIND##vu##VKIND##vu##VKIND##vu##VKIND) :: SUB_VQ_VU_VU_VU_VU(NAME, VKIND);
|
|
#define VEC_SUB_VQ_VR_VR_VR_VR(NAME, VKIND) \
|
|
procedure(sub_vqvr##VKIND##vr##VKIND##vr##VKIND##vr##VKIND) :: SUB_VQ_VR_VR_VR_VR(NAME, VKIND);
|
|
|
|
! mma_assemble_acc
|
|
VEC_SUB_VQ_VI_VI_VI_VI(mma_assemble_acc,1)
|
|
VEC_SUB_VQ_VI_VI_VI_VI(mma_assemble_acc,2)
|
|
VEC_SUB_VQ_VI_VI_VI_VI(mma_assemble_acc,4)
|
|
VEC_SUB_VQ_VI_VI_VI_VI(mma_assemble_acc,8)
|
|
VEC_SUB_VQ_VU_VU_VU_VU(mma_assemble_acc,1)
|
|
VEC_SUB_VQ_VU_VU_VU_VU(mma_assemble_acc,2)
|
|
VEC_SUB_VQ_VU_VU_VU_VU(mma_assemble_acc,4)
|
|
VEC_SUB_VQ_VU_VU_VU_VU(mma_assemble_acc,8)
|
|
VEC_SUB_VQ_VR_VR_VR_VR(mma_assemble_acc,4)
|
|
VEC_SUB_VQ_VR_VR_VR_VR(mma_assemble_acc,8)
|
|
interface mma_assemble_acc
|
|
procedure :: SUB_VQ_VI_VI_VI_VI(mma_assemble_acc,1)
|
|
procedure :: SUB_VQ_VI_VI_VI_VI(mma_assemble_acc,2)
|
|
procedure :: SUB_VQ_VI_VI_VI_VI(mma_assemble_acc,4)
|
|
procedure :: SUB_VQ_VI_VI_VI_VI(mma_assemble_acc,8)
|
|
procedure :: SUB_VQ_VU_VU_VU_VU(mma_assemble_acc,1)
|
|
procedure :: SUB_VQ_VU_VU_VU_VU(mma_assemble_acc,2)
|
|
procedure :: SUB_VQ_VU_VU_VU_VU(mma_assemble_acc,4)
|
|
procedure :: SUB_VQ_VU_VU_VU_VU(mma_assemble_acc,8)
|
|
procedure :: SUB_VQ_VR_VR_VR_VR(mma_assemble_acc,4)
|
|
procedure :: SUB_VQ_VR_VR_VR_VR(mma_assemble_acc,8)
|
|
end interface
|
|
public mma_assemble_acc
|
|
|
|
! mma_build_acc
|
|
VEC_SUB_VQ_VI_VI_VI_VI(mma_build_acc,1)
|
|
VEC_SUB_VQ_VI_VI_VI_VI(mma_build_acc,2)
|
|
VEC_SUB_VQ_VI_VI_VI_VI(mma_build_acc,4)
|
|
VEC_SUB_VQ_VI_VI_VI_VI(mma_build_acc,8)
|
|
VEC_SUB_VQ_VU_VU_VU_VU(mma_build_acc,1)
|
|
VEC_SUB_VQ_VU_VU_VU_VU(mma_build_acc,2)
|
|
VEC_SUB_VQ_VU_VU_VU_VU(mma_build_acc,4)
|
|
VEC_SUB_VQ_VU_VU_VU_VU(mma_build_acc,8)
|
|
VEC_SUB_VQ_VR_VR_VR_VR(mma_build_acc,4)
|
|
VEC_SUB_VQ_VR_VR_VR_VR(mma_build_acc,8)
|
|
interface mma_build_acc
|
|
procedure :: SUB_VQ_VI_VI_VI_VI(mma_build_acc,1)
|
|
procedure :: SUB_VQ_VI_VI_VI_VI(mma_build_acc,2)
|
|
procedure :: SUB_VQ_VI_VI_VI_VI(mma_build_acc,4)
|
|
procedure :: SUB_VQ_VI_VI_VI_VI(mma_build_acc,8)
|
|
procedure :: SUB_VQ_VU_VU_VU_VU(mma_build_acc,1)
|
|
procedure :: SUB_VQ_VU_VU_VU_VU(mma_build_acc,2)
|
|
procedure :: SUB_VQ_VU_VU_VU_VU(mma_build_acc,4)
|
|
procedure :: SUB_VQ_VU_VU_VU_VU(mma_build_acc,8)
|
|
procedure :: SUB_VQ_VR_VR_VR_VR(mma_build_acc,4)
|
|
procedure :: SUB_VQ_VR_VR_VR_VR(mma_build_acc,8)
|
|
end interface
|
|
public mma_build_acc
|
|
|
|
#undef VEC_SUB_VQ_VR_VR_VR_VR
|
|
#undef VEC_SUB_VQ_VU_VU_VU_VU
|
|
#undef VEC_SUB_VQ_VI_VI_VI_VI
|
|
#undef SUB_VQ_VR_VR_VR_VR
|
|
#undef SUB_VQ_VU_VU_VU_VU
|
|
#undef SUB_VQ_VI_VI_VI_VI
|
|
|
|
#define SUB_VP_VI_VI(NAME, VKIND) __ppc_##NAME##_vi##VKIND##vi##VKIND
|
|
#define SUB_VP_VU_VU(NAME, VKIND) __ppc_##NAME##_vu##VKIND##vu##VKIND
|
|
#define SUB_VP_VR_VR(NAME, VKIND) __ppc_##NAME##_vr##VKIND##vr##VKIND
|
|
|
|
#define VEC_SUB_VP_VI_VI(NAME, VKIND) \
|
|
procedure(sub_vpvi##VKIND##vi##VKIND) :: SUB_VP_VI_VI(NAME, VKIND);
|
|
#define VEC_SUB_VP_VU_VU(NAME, VKIND) \
|
|
procedure(sub_vpvu##VKIND##vu##VKIND) :: SUB_VP_VU_VU(NAME, VKIND);
|
|
#define VEC_SUB_VP_VR_VR(NAME, VKIND) \
|
|
procedure(sub_vpvr##VKIND##vr##VKIND) :: SUB_VP_VR_VR(NAME, VKIND);
|
|
|
|
! mma_assemble_pair
|
|
VEC_SUB_VP_VI_VI(mma_assemble_pair,1) VEC_SUB_VP_VI_VI(mma_assemble_pair,2)
|
|
VEC_SUB_VP_VI_VI(mma_assemble_pair,4) VEC_SUB_VP_VI_VI(mma_assemble_pair,8)
|
|
VEC_SUB_VP_VU_VU(mma_assemble_pair,1) VEC_SUB_VP_VU_VU(mma_assemble_pair,2)
|
|
VEC_SUB_VP_VU_VU(mma_assemble_pair,4) VEC_SUB_VP_VU_VU(mma_assemble_pair,8)
|
|
VEC_SUB_VP_VR_VR(mma_assemble_pair,4) VEC_SUB_VP_VR_VR(mma_assemble_pair,8)
|
|
interface mma_assemble_pair
|
|
procedure :: SUB_VP_VI_VI(mma_assemble_pair,1)
|
|
procedure :: SUB_VP_VI_VI(mma_assemble_pair,2)
|
|
procedure :: SUB_VP_VI_VI(mma_assemble_pair,4)
|
|
procedure :: SUB_VP_VI_VI(mma_assemble_pair,8)
|
|
procedure :: SUB_VP_VU_VU(mma_assemble_pair,1)
|
|
procedure :: SUB_VP_VU_VU(mma_assemble_pair,2)
|
|
procedure :: SUB_VP_VU_VU(mma_assemble_pair,4)
|
|
procedure :: SUB_VP_VU_VU(mma_assemble_pair,8)
|
|
procedure :: SUB_VP_VR_VR(mma_assemble_pair,4)
|
|
procedure :: SUB_VP_VR_VR(mma_assemble_pair,8)
|
|
end interface
|
|
public mma_assemble_pair
|
|
|
|
#undef VEC_SUB_VP_VR_VR
|
|
#undef VEC_SUB_VP_VU_VU
|
|
#undef VEC_SUB_VP_VI_VI
|
|
#undef SUB_VP_VR_VR
|
|
#undef SUB_VP_VU_VU
|
|
#undef SUB_VP_VI_VI
|
|
|
|
#define SUB_VQ_VI_VI_I_I_I(NAME, VKIND) __ppc_##NAME##_vqvi##VKIND##vi##VKINDi0i0i0
|
|
#define SUB_VQ_VU_VU_I_I_I(NAME, VKIND) __ppc_##NAME##_vqvu##VKIND##vu##VKINDi0i0ii0
|
|
|
|
#define VEC_SUB_VQ_VI_VI_I_I_I(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vi##VKIND##vi##VKIND##iii) :: SUB_VQ_VI_VI_I_I_I(NAME, VKIND);
|
|
#define VEC_SUB_VQ_VU_VU_I_I_I(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vu##VKIND##vu##VKIND##iii) :: SUB_VQ_VU_VU_I_I_I(NAME, VKIND);
|
|
|
|
! mma_pmxvbf16ger2
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2_,out,1)
|
|
interface mma_pmxvbf16ger2
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2_,1)
|
|
end interface mma_pmxvbf16ger2
|
|
public mma_pmxvbf16ger2
|
|
|
|
! mma_pmxvbf16ger2nn
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2nn,inout,1)
|
|
interface mma_pmxvbf16ger2nn
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2nn,1)
|
|
end interface mma_pmxvbf16ger2nn
|
|
public mma_pmxvbf16ger2nn
|
|
|
|
! mma_pmxvbf16ger2np
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2np,inout,1)
|
|
interface mma_pmxvbf16ger2np
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2np,1)
|
|
end interface mma_pmxvbf16ger2np
|
|
public mma_pmxvbf16ger2np
|
|
|
|
! mma_pmxvbf16ger2pn
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2pn,inout,1)
|
|
interface mma_pmxvbf16ger2pn
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2pn,1)
|
|
end interface mma_pmxvbf16ger2pn
|
|
public mma_pmxvbf16ger2pn
|
|
|
|
! mma_pmxvbf16ger2pp
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2pp,inout,1)
|
|
interface mma_pmxvbf16ger2pp
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvbf16ger2pp,1)
|
|
end interface mma_pmxvbf16ger2pp
|
|
public mma_pmxvbf16ger2pp
|
|
|
|
! mma_pmxvf16ger2
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2_,out,1)
|
|
interface mma_pmxvf16ger2
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2_,1)
|
|
end interface mma_pmxvf16ger2
|
|
public mma_pmxvf16ger2
|
|
|
|
! mma_pmxvf16ger2nn
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2nn,inout,1)
|
|
interface mma_pmxvf16ger2nn
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2nn,1)
|
|
end interface mma_pmxvf16ger2nn
|
|
public mma_pmxvf16ger2nn
|
|
|
|
! mma_pmxvf16ger2np
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2np,inout,1)
|
|
interface mma_pmxvf16ger2np
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2np,1)
|
|
end interface mma_pmxvf16ger2np
|
|
public mma_pmxvf16ger2np
|
|
|
|
! mma_pmxvf16ger2pn
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2pn,inout,1)
|
|
interface mma_pmxvf16ger2pn
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2pn,1)
|
|
end interface mma_pmxvf16ger2pn
|
|
public mma_pmxvf16ger2pn
|
|
|
|
! mma_pmxvf16ger2pp
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2pp,inout,1)
|
|
interface mma_pmxvf16ger2pp
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvf16ger2pp,1)
|
|
end interface mma_pmxvf16ger2pp
|
|
public mma_pmxvf16ger2pp
|
|
|
|
! mma_pmxvi16ger2
|
|
VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2_,out,2)
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2_,out,1)
|
|
interface mma_pmxvi16ger2
|
|
procedure :: SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2_,2)
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2_,1)
|
|
end interface mma_pmxvi16ger2
|
|
public mma_pmxvi16ger2
|
|
|
|
! mma_pmxvi16ger2pp
|
|
VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2pp,inout,2)
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2pp,inout,1)
|
|
interface mma_pmxvi16ger2pp
|
|
procedure :: SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2pp,2)
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2pp,1)
|
|
end interface mma_pmxvi16ger2pp
|
|
public mma_pmxvi16ger2pp
|
|
|
|
! mma_pmxvi16ger2s
|
|
VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2s,out,2)
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2s,out,1)
|
|
interface mma_pmxvi16ger2s
|
|
procedure :: SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2s,2)
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2s,1)
|
|
end interface mma_pmxvi16ger2s
|
|
public mma_pmxvi16ger2s
|
|
|
|
! mma_pmxvi16ger2spp
|
|
VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2spp,inout,2)
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2spp,inout,1)
|
|
interface mma_pmxvi16ger2spp
|
|
procedure :: SUB_VQ_VI_VI_I_I_I(mma_pmxvi16ger2spp,2)
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvi16ger2spp,1)
|
|
end interface mma_pmxvi16ger2spp
|
|
public mma_pmxvi16ger2spp
|
|
|
|
! mma_pmxvi4ger8
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi4ger8_,out,1)
|
|
interface mma_pmxvi4ger8
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvi4ger8_,1)
|
|
end interface mma_pmxvi4ger8
|
|
public mma_pmxvi4ger8
|
|
|
|
! mma_pmxvi4ger8pp
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi4ger8pp,inout,1)
|
|
interface mma_pmxvi4ger8pp
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvi4ger8pp,1)
|
|
end interface mma_pmxvi4ger8pp
|
|
public mma_pmxvi4ger8pp
|
|
|
|
! mma_pmxvi8ger4
|
|
VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4_,out,1)
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4_,out,1)
|
|
interface mma_pmxvi8ger4
|
|
procedure :: SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4_,1)
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4_,1)
|
|
end interface mma_pmxvi8ger4
|
|
public mma_pmxvi8ger4
|
|
|
|
! mma_pmxvi8ger4pp
|
|
VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4pp,inout,1)
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4pp,inout,1)
|
|
interface mma_pmxvi8ger4pp
|
|
procedure :: SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4pp,1)
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4pp,1)
|
|
end interface mma_pmxvi8ger4pp
|
|
public mma_pmxvi8ger4pp
|
|
|
|
! mma_pmxvi8ger4spp
|
|
VEC_SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4spp,inout,1)
|
|
VEC_SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4spp,inout,1)
|
|
interface mma_pmxvi8ger4spp
|
|
procedure :: SUB_VQ_VI_VI_I_I_I(mma_pmxvi8ger4spp,1)
|
|
procedure :: SUB_VQ_VU_VU_I_I_I(mma_pmxvi8ger4spp,1)
|
|
end interface mma_pmxvi8ger4spp
|
|
public mma_pmxvi8ger4spp
|
|
|
|
#undef VEC_SUB_VQ_VU_VU_I_I_I
|
|
#undef VEC_SUB_VQ_VI_VI_I_I_I
|
|
#undef SUB_VQ_VU_VU_I_I_I
|
|
#undef SUB_VQ_VI_VI_I_I_I
|
|
|
|
#define SUB_VQ_VU_VU_I_I(NAME, VKIND) __ppc_##NAME##_vqvu##VKIND##vu##VKINDi0i0
|
|
#define SUB_VQ_VR_VR_I_I(NAME, VKIND) __ppc_##NAME##_vqvr##VKIND##vr##VKINDi0i0
|
|
|
|
#define VEC_SUB_VQ_VU_VU_I_I(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vu##VKIND##vu##VKIND##ii) :: SUB_VQ_VU_VU_I_I(NAME, VKIND);
|
|
#define VEC_SUB_VQ_VR_VR_I_I(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vr##VKIND##vr##VKIND##ii) :: SUB_VQ_VR_VR_I_I(NAME, VKIND);
|
|
|
|
! mma_pmxvf32ger
|
|
VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32ger,out,1)
|
|
VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32ger,out,4)
|
|
interface mma_pmxvf32ger
|
|
procedure :: SUB_VQ_VU_VU_I_I(mma_pmxvf32ger,1)
|
|
procedure :: SUB_VQ_VR_VR_I_I(mma_pmxvf32ger,4)
|
|
end interface mma_pmxvf32ger
|
|
public mma_pmxvf32ger
|
|
|
|
! mma_pmxvf32gernn
|
|
VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32gernn,inout,1)
|
|
VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32gernn,inout,4)
|
|
interface mma_pmxvf32gernn
|
|
procedure :: SUB_VQ_VU_VU_I_I(mma_pmxvf32gernn,1)
|
|
procedure :: SUB_VQ_VR_VR_I_I(mma_pmxvf32gernn,4)
|
|
end interface mma_pmxvf32gernn
|
|
public mma_pmxvf32gernn
|
|
|
|
! mma_pmxvf32gernp
|
|
VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32gernp,inout,1)
|
|
VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32gernp,inout,4)
|
|
interface mma_pmxvf32gernp
|
|
procedure :: SUB_VQ_VU_VU_I_I(mma_pmxvf32gernp,1)
|
|
procedure :: SUB_VQ_VR_VR_I_I(mma_pmxvf32gernp,4)
|
|
end interface mma_pmxvf32gernp
|
|
public mma_pmxvf32gernp
|
|
|
|
! mma_pmxvf32gerpn
|
|
VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32gerpn,inout,1)
|
|
VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32gerpn,inout,4)
|
|
interface mma_pmxvf32gerpn
|
|
procedure :: SUB_VQ_VU_VU_I_I(mma_pmxvf32gerpn,1)
|
|
procedure :: SUB_VQ_VR_VR_I_I(mma_pmxvf32gerpn,4)
|
|
end interface mma_pmxvf32gerpn
|
|
public mma_pmxvf32gerpn
|
|
|
|
! mma_pmxvf32gerpp
|
|
VEC_SUB_VQ_VU_VU_I_I(mma_pmxvf32gerpp,inout,1)
|
|
VEC_SUB_VQ_VR_VR_I_I(mma_pmxvf32gerpp,inout,4)
|
|
interface mma_pmxvf32gerpp
|
|
procedure :: SUB_VQ_VU_VU_I_I(mma_pmxvf32gerpp,1)
|
|
procedure :: SUB_VQ_VR_VR_I_I(mma_pmxvf32gerpp,4)
|
|
end interface mma_pmxvf32gerpp
|
|
public mma_pmxvf32gerpp
|
|
|
|
#undef VEC_SUB_VQ_VR_VR_I_I
|
|
#undef VEC_SUB_VQ_VU_VU_I_I
|
|
#undef SUB_VQ_VR_VR_I_I
|
|
#undef SUB_VQ_VU_VU_I_I
|
|
|
|
#define SUB_VQ_VP_VU_I_I(NAME, VKIND) __ppc_##NAME##_vqvpvu##VKINDi0i0
|
|
#define SUB_VQ_VP_VR_I_I(NAME, VKIND) __ppc_##NAME##_vqvpvr##VKINDi0i0
|
|
|
|
#define VEC_SUB_VQ_VP_VU_I_I(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vpvu##VKIND##ii) :: SUB_VQ_VP_VU_I_I(NAME, VKIND);
|
|
#define VEC_SUB_VQ_VP_VR_I_I(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vpvr##VKIND##ii) :: SUB_VQ_VP_VR_I_I(NAME, VKIND);
|
|
|
|
! mma_pmxvf64ger
|
|
VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64ger,out,1)
|
|
VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64ger,out,8)
|
|
interface mma_pmxvf64ger
|
|
procedure :: SUB_VQ_VP_VU_I_I(mma_pmxvf64ger,1)
|
|
procedure :: SUB_VQ_VP_VR_I_I(mma_pmxvf64ger,8)
|
|
end interface mma_pmxvf64ger
|
|
public mma_pmxvf64ger
|
|
|
|
! mma_pmxvf64gernn
|
|
VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64gernn,inout,1)
|
|
VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64gernn,inout,8)
|
|
interface mma_pmxvf64gernn
|
|
procedure :: SUB_VQ_VP_VU_I_I(mma_pmxvf64gernn,1)
|
|
procedure :: SUB_VQ_VP_VR_I_I(mma_pmxvf64gernn,8)
|
|
end interface mma_pmxvf64gernn
|
|
public mma_pmxvf64gernn
|
|
|
|
! mma_pmxvf64gernp
|
|
VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64gernp,inout,1)
|
|
VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64gernp,inout,8)
|
|
interface mma_pmxvf64gernp
|
|
procedure :: SUB_VQ_VP_VU_I_I(mma_pmxvf64gernp,1)
|
|
procedure :: SUB_VQ_VP_VR_I_I(mma_pmxvf64gernp,8)
|
|
end interface mma_pmxvf64gernp
|
|
public mma_pmxvf64gernp
|
|
|
|
! mma_pmxvf64gerpn
|
|
VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64gerpn,inout,1)
|
|
VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64gerpn,inout,8)
|
|
interface mma_pmxvf64gerpn
|
|
procedure :: SUB_VQ_VP_VU_I_I(mma_pmxvf64gerpn,1)
|
|
procedure :: SUB_VQ_VP_VR_I_I(mma_pmxvf64gerpn,8)
|
|
end interface mma_pmxvf64gerpn
|
|
public mma_pmxvf64gerpn
|
|
|
|
! mma_pmxvf64gerpp
|
|
VEC_SUB_VQ_VP_VU_I_I(mma_pmxvf64gerpp,inout,1)
|
|
VEC_SUB_VQ_VP_VR_I_I(mma_pmxvf64gerpp,inout,8)
|
|
interface mma_pmxvf64gerpp
|
|
procedure :: SUB_VQ_VP_VU_I_I(mma_pmxvf64gerpp,1)
|
|
procedure :: SUB_VQ_VP_VR_I_I(mma_pmxvf64gerpp,8)
|
|
end interface mma_pmxvf64gerpp
|
|
public mma_pmxvf64gerpp
|
|
|
|
#undef VEC_SUB_VQ_VP_VR_I_I
|
|
#undef VEC_SUB_VQ_VP_VU_I_I
|
|
#undef SUB_VQ_VP_VR_I_I
|
|
#undef SUB_VQ_VP_VU_I_I
|
|
|
|
#define SUB_VQ_VI_VI(NAME, VKIND) __ppc_##NAME##_vi##VKIND##vi##VKIND
|
|
#define SUB_VQ_VU_VU(NAME, VKIND) __ppc_##NAME##_vu##VKIND##vu##VKIND
|
|
#define SUB_VQ_VR_VR(NAME, VKIND) __ppc_##NAME##_vr##VKIND##vr##VKIND
|
|
|
|
#define VEC_SUB_VQ_VI_VI(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vi##VKIND##vi##VKIND) :: SUB_VQ_VI_VI(NAME, VKIND);
|
|
#define VEC_SUB_VQ_VU_VU(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vu##VKIND##vu##VKIND) :: SUB_VQ_VU_VU(NAME, VKIND);
|
|
#define VEC_SUB_VQ_VR_VR(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vr##VKIND##vr##VKIND) :: SUB_VQ_VR_VR(NAME, VKIND);
|
|
|
|
!! First argument with INTENT(INOUT)
|
|
! mma_xvbf16ger2nn
|
|
VEC_SUB_VQ_VU_VU(mma_xvbf16ger2nn,inout,1)
|
|
interface mma_xvbf16ger2nn
|
|
procedure :: SUB_VQ_VU_VU(mma_xvbf16ger2nn,1)
|
|
end interface
|
|
public mma_xvbf16ger2nn
|
|
|
|
! mma_xvbf16ger2np
|
|
VEC_SUB_VQ_VU_VU(mma_xvbf16ger2np,inout,1)
|
|
interface mma_xvbf16ger2np
|
|
procedure :: SUB_VQ_VU_VU(mma_xvbf16ger2np,1)
|
|
end interface
|
|
public mma_xvbf16ger2np
|
|
|
|
! mma_xvbf16ger2pn
|
|
VEC_SUB_VQ_VU_VU(mma_xvbf16ger2pn,inout,1)
|
|
interface mma_xvbf16ger2pn
|
|
procedure :: SUB_VQ_VU_VU(mma_xvbf16ger2pn,1)
|
|
end interface
|
|
public mma_xvbf16ger2pn
|
|
|
|
! mma_xvbf16ger2pp
|
|
VEC_SUB_VQ_VU_VU(mma_xvbf16ger2pp,inout,1)
|
|
interface mma_xvbf16ger2pp
|
|
procedure :: SUB_VQ_VU_VU(mma_xvbf16ger2pp,1)
|
|
end interface
|
|
public mma_xvbf16ger2pp
|
|
|
|
! mma_xvi8ger4pp
|
|
VEC_SUB_VQ_VI_VI(mma_xvi8ger4pp,inout,1)
|
|
VEC_SUB_VQ_VU_VU(mma_xvi8ger4pp,inout,1)
|
|
interface mma_xvi8ger4pp
|
|
procedure :: SUB_VQ_VI_VI(mma_xvi8ger4pp,1)
|
|
procedure :: SUB_VQ_VU_VU(mma_xvi8ger4pp,1)
|
|
end interface
|
|
public mma_xvi8ger4pp
|
|
|
|
! mma_xvi8ger4spp
|
|
VEC_SUB_VQ_VI_VI(mma_xvi8ger4spp,inout,1)
|
|
VEC_SUB_VQ_VU_VU(mma_xvi8ger4spp,inout,1)
|
|
interface mma_xvi8ger4spp
|
|
procedure :: SUB_VQ_VI_VI(mma_xvi8ger4spp,1)
|
|
procedure :: SUB_VQ_VU_VU(mma_xvi8ger4spp,1)
|
|
end interface
|
|
public mma_xvi8ger4spp
|
|
|
|
! mma_xvi16ger2pp
|
|
VEC_SUB_VQ_VI_VI(mma_xvi16ger2pp,inout,2)
|
|
VEC_SUB_VQ_VU_VU(mma_xvi16ger2pp,inout,1)
|
|
interface mma_xvi16ger2pp
|
|
procedure :: SUB_VQ_VI_VI(mma_xvi16ger2pp,2)
|
|
procedure :: SUB_VQ_VU_VU(mma_xvi16ger2pp,1)
|
|
end interface
|
|
public mma_xvi16ger2pp
|
|
|
|
! mma_xvi16ger2s
|
|
VEC_SUB_VQ_VI_VI(mma_xvi16ger2s,inout,2)
|
|
VEC_SUB_VQ_VU_VU(mma_xvi16ger2s,inout,1)
|
|
interface mma_xvi16ger2s
|
|
procedure :: SUB_VQ_VI_VI(mma_xvi16ger2s,2)
|
|
procedure :: SUB_VQ_VU_VU(mma_xvi16ger2s,1)
|
|
end interface
|
|
public mma_xvi16ger2s
|
|
|
|
! mma_xvi16ger2spp
|
|
VEC_SUB_VQ_VI_VI(mma_xvi16ger2spp,inout,2)
|
|
VEC_SUB_VQ_VU_VU(mma_xvi16ger2spp,inout,1)
|
|
interface mma_xvi16ger2spp
|
|
procedure :: SUB_VQ_VI_VI(mma_xvi16ger2spp,2)
|
|
procedure :: SUB_VQ_VU_VU(mma_xvi16ger2spp,1)
|
|
end interface
|
|
public mma_xvi16ger2spp
|
|
|
|
! mma_xvi4ger8pp
|
|
VEC_SUB_VQ_VU_VU(mma_xvi4ger8pp,inout,1)
|
|
interface mma_xvi4ger8pp
|
|
procedure :: SUB_VQ_VU_VU(mma_xvi4ger8pp,1)
|
|
end interface
|
|
public mma_xvi4ger8pp
|
|
|
|
! mma_xvf16ger2nn
|
|
VEC_SUB_VQ_VU_VU(mma_xvf16ger2nn,inout,1)
|
|
interface mma_xvf16ger2nn
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf16ger2nn,1)
|
|
end interface
|
|
public mma_xvf16ger2nn
|
|
|
|
! mma_xvf16ger2np
|
|
VEC_SUB_VQ_VU_VU(mma_xvf16ger2np,inout,1)
|
|
interface mma_xvf16ger2np
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf16ger2np,1)
|
|
end interface
|
|
public mma_xvf16ger2np
|
|
|
|
! mma_xvf16ger2pn
|
|
VEC_SUB_VQ_VU_VU(mma_xvf16ger2pn,inout,1)
|
|
interface mma_xvf16ger2pn
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf16ger2pn,1)
|
|
end interface
|
|
public mma_xvf16ger2pn
|
|
|
|
! mma_xvf16ger2pp
|
|
VEC_SUB_VQ_VU_VU(mma_xvf16ger2pp,inout,1)
|
|
interface mma_xvf16ger2pp
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf16ger2pp,1)
|
|
end interface
|
|
public mma_xvf16ger2pp
|
|
|
|
! mma_xvf32gernn
|
|
VEC_SUB_VQ_VU_VU(mma_xvf32gernn,inout,1)
|
|
VEC_SUB_VQ_VR_VR(mma_xvf32gernn,inout,4)
|
|
interface mma_xvf32gernn
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf32gernn,1)
|
|
procedure :: SUB_VQ_VR_VR(mma_xvf32gernn,4)
|
|
end interface
|
|
public mma_xvf32gernn
|
|
|
|
! mma_xvf32gernp
|
|
VEC_SUB_VQ_VU_VU(mma_xvf32gernp,inout,1)
|
|
VEC_SUB_VQ_VR_VR(mma_xvf32gernp,inout,4)
|
|
interface mma_xvf32gernp
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf32gernp,1)
|
|
procedure :: SUB_VQ_VR_VR(mma_xvf32gernp,4)
|
|
end interface
|
|
public mma_xvf32gernp
|
|
|
|
! mma_xvf32gerpn
|
|
VEC_SUB_VQ_VU_VU(mma_xvf32gerpn,inout,1)
|
|
VEC_SUB_VQ_VR_VR(mma_xvf32gerpn,inout,4)
|
|
interface mma_xvf32gerpn
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf32gerpn,1)
|
|
procedure :: SUB_VQ_VR_VR(mma_xvf32gerpn,4)
|
|
end interface
|
|
public mma_xvf32gerpn
|
|
|
|
! mma_xvf32gerpp
|
|
VEC_SUB_VQ_VU_VU(mma_xvf32gerpp,inout,1)
|
|
VEC_SUB_VQ_VR_VR(mma_xvf32gerpp,inout,4)
|
|
interface mma_xvf32gerpp
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf32gerpp,1)
|
|
procedure :: SUB_VQ_VR_VR(mma_xvf32gerpp,4)
|
|
end interface
|
|
public mma_xvf32gerpp
|
|
|
|
!! First argument with INTENT(OUT)
|
|
! mma_xvbf16ger2
|
|
VEC_SUB_VQ_VU_VU(mma_xvbf16ger2_,out,1)
|
|
interface mma_xvbf16ger2
|
|
procedure :: SUB_VQ_VU_VU(mma_xvbf16ger2_,1)
|
|
end interface
|
|
public mma_xvbf16ger2
|
|
|
|
! mma_xvi16ger2
|
|
VEC_SUB_VQ_VI_VI(mma_xvi16ger2_,out,2)
|
|
VEC_SUB_VQ_VU_VU(mma_xvi16ger2_,out,1)
|
|
interface mma_xvi16ger2
|
|
procedure :: SUB_VQ_VI_VI(mma_xvi16ger2_,2)
|
|
procedure :: SUB_VQ_VU_VU(mma_xvi16ger2_,1)
|
|
end interface
|
|
public mma_xvi16ger2
|
|
|
|
! mma_xvi4ger8
|
|
VEC_SUB_VQ_VU_VU(mma_xvi4ger8_,out,1)
|
|
interface mma_xvi4ger8
|
|
procedure :: SUB_VQ_VU_VU(mma_xvi4ger8_,1)
|
|
end interface
|
|
public mma_xvi4ger8
|
|
|
|
! mma_xvi8ger4
|
|
VEC_SUB_VQ_VI_VI(mma_xvi8ger4_,out,1)
|
|
VEC_SUB_VQ_VU_VU(mma_xvi8ger4_,out,1)
|
|
interface mma_xvi8ger4
|
|
procedure :: SUB_VQ_VI_VI(mma_xvi8ger4_,1)
|
|
procedure :: SUB_VQ_VU_VU(mma_xvi8ger4_,1)
|
|
end interface
|
|
public mma_xvi8ger4
|
|
|
|
! mma_xvf16ger2
|
|
VEC_SUB_VQ_VU_VU(mma_xvf16ger2_,out,1)
|
|
interface mma_xvf16ger2
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf16ger2_,1)
|
|
end interface
|
|
public mma_xvf16ger2
|
|
|
|
! mma_xvf32ger
|
|
VEC_SUB_VQ_VU_VU(mma_xvf32ger,out,1)
|
|
VEC_SUB_VQ_VR_VR(mma_xvf32ger,out,4)
|
|
interface mma_xvf32ger
|
|
procedure :: SUB_VQ_VU_VU(mma_xvf32ger,1)
|
|
procedure :: SUB_VQ_VR_VR(mma_xvf32ger,4)
|
|
end interface
|
|
public mma_xvf32ger
|
|
|
|
#undef VEC_SUB_VQ_VR_VR
|
|
#undef VEC_SUB_VQ_VU_VU
|
|
#undef VEC_SUB_VQ_VI_VI
|
|
#undef SUB_VQ_VR_VR
|
|
#undef SUB_VQ_VU_VU
|
|
#undef SUB_VQ_VI_VI
|
|
|
|
#define SUB_VQ_VP_VU(NAME, VKIND) __ppc_##NAME##_vu##VKIND
|
|
#define SUB_VQ_VP_VR(NAME, VKIND) __ppc_##NAME##_vr##VKIND
|
|
|
|
#define VEC_SUB_VQ_VP_VU(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vpvu##VKIND) :: SUB_VQ_VP_VU(NAME, VKIND);
|
|
#define VEC_SUB_VQ_VP_VR(NAME, INTENT, VKIND) \
|
|
procedure(sub_vq##INTENT##vpvr##VKIND) :: SUB_VQ_VP_VR(NAME, VKIND);
|
|
|
|
! mma_xvf64ger
|
|
VEC_SUB_VQ_VP_VU(mma_xvf64ger,out,1)
|
|
VEC_SUB_VQ_VP_VR(mma_xvf64ger,out,8)
|
|
interface mma_xvf64ger
|
|
procedure :: SUB_VQ_VP_VU(mma_xvf64ger,1)
|
|
procedure :: SUB_VQ_VP_VR(mma_xvf64ger,8)
|
|
end interface
|
|
public mma_xvf64ger
|
|
|
|
! mma_xvf64gernn
|
|
VEC_SUB_VQ_VP_VU(mma_xvf64gernn,inout,1)
|
|
VEC_SUB_VQ_VP_VR(mma_xvf64gernn,inout,8)
|
|
interface mma_xvf64gernn
|
|
procedure :: SUB_VQ_VP_VU(mma_xvf64gernn,1)
|
|
procedure :: SUB_VQ_VP_VR(mma_xvf64gernn,8)
|
|
end interface
|
|
public mma_xvf64gernn
|
|
|
|
! mma_xvf64gernp
|
|
VEC_SUB_VQ_VP_VU(mma_xvf64gernp,inout,1)
|
|
VEC_SUB_VQ_VP_VR(mma_xvf64gernp,inout,8)
|
|
interface mma_xvf64gernp
|
|
procedure :: SUB_VQ_VP_VU(mma_xvf64gernp,1)
|
|
procedure :: SUB_VQ_VP_VR(mma_xvf64gernp,8)
|
|
end interface
|
|
public mma_xvf64gernp
|
|
|
|
! mma_xvf64gerpn
|
|
VEC_SUB_VQ_VP_VU(mma_xvf64gerpn,inout,1)
|
|
VEC_SUB_VQ_VP_VR(mma_xvf64gerpn,inout,8)
|
|
interface mma_xvf64gerpn
|
|
procedure :: SUB_VQ_VP_VU(mma_xvf64gerpn,1)
|
|
procedure :: SUB_VQ_VP_VR(mma_xvf64gerpn,8)
|
|
end interface
|
|
public mma_xvf64gerpn
|
|
|
|
! mma_xvf64gerpp
|
|
VEC_SUB_VQ_VP_VU(mma_xvf64gerpp,inout,1)
|
|
VEC_SUB_VQ_VP_VR(mma_xvf64gerpp,inout,8)
|
|
interface mma_xvf64gerpp
|
|
procedure :: SUB_VQ_VP_VU(mma_xvf64gerpp,1)
|
|
procedure :: SUB_VQ_VP_VR(mma_xvf64gerpp,8)
|
|
end interface
|
|
public mma_xvf64gerpp
|
|
|
|
#undef VEC_SUB_VQ_VP_VR
|
|
#undef VEC_SUB_VQ_VP_VU
|
|
#undef SUB_VQ_VP_VR
|
|
#undef SUB_VQ_VP_VU
|
|
|
|
! mma_disassemble_acc
|
|
procedure(sub_atvq) :: __ppc_mma_disassemble_acc
|
|
interface mma_disassemble_acc
|
|
procedure :: __ppc_mma_disassemble_acc
|
|
end interface
|
|
public mma_disassemble_acc
|
|
|
|
! mma_disassemble_pair
|
|
procedure(sub_atvp) :: __ppc_mma_disassemble_pair
|
|
interface mma_disassemble_pair
|
|
procedure :: __ppc_mma_disassemble_pair
|
|
end interface
|
|
public mma_disassemble_pair
|
|
|
|
! mma_xxmfacc
|
|
procedure(sub_vq) :: __ppc_mma_xxmfacc
|
|
interface mma_xxmfacc
|
|
procedure :: __ppc_mma_xxmfacc
|
|
end interface
|
|
public mma_xxmfacc
|
|
|
|
! mma_xxmtacc
|
|
procedure(sub_vq) :: __ppc_mma_xxmtacc
|
|
interface mma_xxmtacc
|
|
procedure :: __ppc_mma_xxmtacc
|
|
end interface
|
|
public mma_xxmtacc
|
|
|
|
! mma_xxsetaccz
|
|
procedure(sub_vq) :: __ppc_mma_xxsetaccz
|
|
interface mma_xxsetaccz
|
|
procedure :: __ppc_mma_xxsetaccz
|
|
end interface
|
|
public mma_xxsetaccz
|
|
|
|
end module
|