blob: 906aba701ec37cbc1c1cf3e56dacee09e6513e45 [file] [log] [blame]
!===-- module/__fortran_ppc_intrinsics.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 __Fortran_PPC_intrinsics
private
! fmadd, fmsub, fnmadd, fnmsub
abstract interface
elemental real(4) function func_r4r4r4r4(a, x, y)
real(4), intent(in) :: a, x, y
end function func_r4r4r4r4
elemental real(8) function func_r8r8r8r8(a, x, y)
real(8), intent(in) :: a, x, y
end function func_r8r8r8r8
end interface
procedure(func_r4r4r4r4) :: __ppc_fmadd_r4
procedure(func_r8r8r8r8) :: __ppc_fmadd_r8
interface fmadd
procedure :: __ppc_fmadd_r4
procedure :: __ppc_fmadd_r8
end interface fmadd
public :: fmadd
procedure(func_r4r4r4r4) :: __ppc_fmsub_r4
procedure(func_r8r8r8r8) :: __ppc_fmsub_r8
interface fmsub
procedure :: __ppc_fmsub_r4
procedure :: __ppc_fmsub_r8
end interface fmsub
public :: fmsub
procedure(func_r4r4r4r4) :: __ppc_fnmadd_r4
procedure(func_r8r8r8r8) :: __ppc_fnmadd_r8
interface fnmadd
procedure :: __ppc_fnmadd_r4
procedure :: __ppc_fnmadd_r8
end interface fnmadd
public :: fnmadd
procedure(func_r4r4r4r4) :: __ppc_fnmsub_r4
procedure(func_r8r8r8r8) :: __ppc_fnmsub_r8
interface fnmsub
procedure :: __ppc_fnmsub_r4
procedure :: __ppc_fnmsub_r8
end interface fnmsub
public :: fnmsub
! fctid, fctidz, fctiw, fctiwz, fctudz, fctuwz
abstract interface
elemental real(4) function func_r4r4x(x)
real(4), intent(in) :: x
end function func_r4r4x
elemental real(8) function func_r8r8x(x)
real(8), intent(in) :: x
end function func_r8r8x
end interface
procedure(func_r8r8x) :: __ppc_fctid
interface fctid
procedure :: __ppc_fctid
end interface fctid
public :: fctid
procedure(func_r8r8x) :: __ppc_fctidz
interface fctidz
procedure :: __ppc_fctidz
end interface fctidz
public :: fctidz
procedure(func_r8r8x) :: __ppc_fctiw
interface fctiw
procedure :: __ppc_fctiw
end interface fctiw
public :: fctiw
procedure(func_r8r8x) :: __ppc_fctiwz
interface fctiwz
procedure :: __ppc_fctiwz
end interface fctiwz
public :: fctiwz
procedure(func_r8r8x) :: __ppc_fctudz
interface fctudz
procedure :: __ppc_fctudz
end interface fctudz
public :: fctudz
procedure(func_r8r8x) :: __ppc_fctuwz
interface fctuwz
procedure :: __ppc_fctuwz
end interface fctuwz
public :: fctuwz
! fcfi, fcfid, fcfud
abstract interface
elemental real(8) function func_r8r8i(i)
real(8), intent(in) :: i
end function func_r8r8i
end interface
procedure(func_r8r8i) :: __ppc_fcfi
interface fcfi
procedure :: __ppc_fcfi
end interface fcfi
public :: fcfi
procedure(func_r8r8i) :: __ppc_fcfid
interface fcfid
procedure :: __ppc_fcfid
end interface fcfid
public :: fcfid
procedure(func_r8r8i) :: __ppc_fcfud
interface fcfud
procedure :: __ppc_fcfud
end interface fcfud
public :: fcfud
! fnabs
procedure(func_r4r4x) :: __ppc_fnabs_r4
procedure(func_r8r8x) :: __ppc_fnabs_r8
interface fnabs
procedure :: __ppc_fnabs_r4
procedure :: __ppc_fnabs_r8
end interface fnabs
public :: fnabs
! fre, fres
procedure(func_r8r8x) :: __ppc_fre
interface fre
procedure :: __ppc_fre
end interface fre
public :: fre
procedure(func_r4r4x) :: __ppc_fres
interface fres
procedure :: __ppc_fres
end interface fres
public :: fres
! frsqrte, frsqrtes
procedure(func_r8r8x) :: __ppc_frsqrte
interface frsqrte
procedure :: __ppc_frsqrte
end interface frsqrte
public :: frsqrte
procedure(func_r4r4x) :: __ppc_frsqrtes
interface frsqrtes
procedure :: __ppc_frsqrtes
end interface frsqrtes
public :: frsqrtes
! mtfsf, mtfsfi
interface mtfsf
subroutine __ppc_mtfsf(mask, r)
integer(4), intent(in) :: mask
real(8), intent(in) :: r
end subroutine __ppc_mtfsf
end interface mtfsf
public :: mtfsf
interface mtfsfi
subroutine __ppc_mtfsfi(bf, i)
integer(4), intent(in) :: bf
integer(4), intent(in) :: i
end subroutine __ppc_mtfsfi
end interface mtfsfi
public :: mtfsfi
end module __Fortran_PPC_intrinsics