17#ifndef FORTRAN_RUNTIME_TRANSFORMATIONAL_H_
18#define FORTRAN_RUNTIME_TRANSFORMATIONAL_H_
20#include "flang/Common/float128.h"
21#include "flang/Runtime/cpp-type.h"
22#include "flang/Runtime/entry-names.h"
25namespace Fortran::runtime {
31void RTDECL(Reshape)(Descriptor &result,
const Descriptor &source,
32 const Descriptor &shape,
const Descriptor *pad =
nullptr,
33 const Descriptor *order =
nullptr,
const char *sourceFile =
nullptr,
36void RTDECL(BesselJn_2)(Descriptor &result, int32_t n1, int32_t n2,
float x,
37 float bn2,
float bn2_1,
const char *sourceFile =
nullptr,
int line = 0);
39void RTDECL(BesselJn_3)(Descriptor &result, int32_t n1, int32_t n2,
float x,
40 float bn2,
float bn2_1,
const char *sourceFile =
nullptr,
int line = 0);
42void RTDECL(BesselJn_4)(Descriptor &result, int32_t n1, int32_t n2,
float x,
43 float bn2,
float bn2_1,
const char *sourceFile =
nullptr,
int line = 0);
45void RTDECL(BesselJn_8)(Descriptor &result, int32_t n1, int32_t n2,
double x,
46 double bn2,
double bn2_1,
const char *sourceFile =
nullptr,
int line = 0);
49void RTDECL(BesselJn_10)(Descriptor &result, int32_t n1, int32_t n2,
50 CppTypeFor<TypeCategory::Real, 10> x,
51 CppTypeFor<TypeCategory::Real, 10> bn2,
52 CppTypeFor<TypeCategory::Real, 10> bn2_1,
const char *sourceFile =
nullptr,
56#if HAS_LDBL128 || HAS_FLOAT128
57void RTDECL(BesselJn_16)(Descriptor &result, int32_t n1, int32_t n2,
58 CppFloat128Type x, CppFloat128Type bn2, CppFloat128Type bn2_1,
59 const char *sourceFile =
nullptr,
int line = 0);
62void RTDECL(BesselJnX0_2)(Descriptor &result, int32_t n1, int32_t n2,
63 const char *sourceFile =
nullptr,
int line = 0);
65void RTDECL(BesselJnX0_3)(Descriptor &result, int32_t n1, int32_t n2,
66 const char *sourceFile =
nullptr,
int line = 0);
68void RTDECL(BesselJnX0_4)(Descriptor &result, int32_t n1, int32_t n2,
69 const char *sourceFile =
nullptr,
int line = 0);
71void RTDECL(BesselJnX0_8)(Descriptor &result, int32_t n1, int32_t n2,
72 const char *sourceFile =
nullptr,
int line = 0);
75void RTDECL(BesselJnX0_10)(Descriptor &result, int32_t n1, int32_t n2,
76 const char *sourceFile =
nullptr,
int line = 0);
79#if HAS_LDBL128 || HAS_FLOAT128
80void RTDECL(BesselJnX0_16)(Descriptor &result, int32_t n1, int32_t n2,
81 const char *sourceFile =
nullptr,
int line = 0);
84void RTDECL(BesselYn_2)(Descriptor &result, int32_t n1, int32_t n2,
float x,
85 float bn1,
float bn1_1,
const char *sourceFile =
nullptr,
int line = 0);
87void RTDECL(BesselYn_3)(Descriptor &result, int32_t n1, int32_t n2,
float x,
88 float bn1,
float bn1_1,
const char *sourceFile =
nullptr,
int line = 0);
90void RTDECL(BesselYn_4)(Descriptor &result, int32_t n1, int32_t n2,
float x,
91 float bn1,
float bn1_1,
const char *sourceFile =
nullptr,
int line = 0);
93void RTDECL(BesselYn_8)(Descriptor &result, int32_t n1, int32_t n2,
double x,
94 double bn1,
double bn1_1,
const char *sourceFile =
nullptr,
int line = 0);
97void RTDECL(BesselYn_10)(Descriptor &result, int32_t n1, int32_t n2,
98 CppTypeFor<TypeCategory::Real, 10> x,
99 CppTypeFor<TypeCategory::Real, 10> bn1,
100 CppTypeFor<TypeCategory::Real, 10> bn1_1,
const char *sourceFile =
nullptr,
104#if HAS_LDBL128 || HAS_FLOAT128
105void RTDECL(BesselYn_16)(Descriptor &result, int32_t n1, int32_t n2,
106 CppFloat128Type x, CppFloat128Type bn1, CppFloat128Type bn1_1,
107 const char *sourceFile =
nullptr,
int line = 0);
110void RTDECL(BesselYnX0_2)(Descriptor &result, int32_t n1, int32_t n2,
111 const char *sourceFile =
nullptr,
int line = 0);
113void RTDECL(BesselYnX0_3)(Descriptor &result, int32_t n1, int32_t n2,
114 const char *sourceFile =
nullptr,
int line = 0);
116void RTDECL(BesselYnX0_4)(Descriptor &result, int32_t n1, int32_t n2,
117 const char *sourceFile =
nullptr,
int line = 0);
119void RTDECL(BesselYnX0_8)(Descriptor &result, int32_t n1, int32_t n2,
120 const char *sourceFile =
nullptr,
int line = 0);
123void RTDECL(BesselYnX0_10)(Descriptor &result, int32_t n1, int32_t n2,
124 const char *sourceFile =
nullptr,
int line = 0);
127#if HAS_LDBL128 || HAS_FLOAT128
128void RTDECL(BesselYnX0_16)(Descriptor &result, int32_t n1, int32_t n2,
129 const char *sourceFile =
nullptr,
int line = 0);
132void RTDECL(Cshift)(Descriptor &result,
const Descriptor &source,
133 const Descriptor &shift,
int dim = 1,
const char *sourceFile =
nullptr,
135void RTDECL(CshiftVector)(Descriptor &result,
const Descriptor &source,
136 std::int64_t shift,
const char *sourceFile =
nullptr,
int line = 0);
138void RTDECL(Eoshift)(Descriptor &result,
const Descriptor &source,
139 const Descriptor &shift,
const Descriptor *boundary =
nullptr,
int dim = 1,
140 const char *sourceFile =
nullptr,
int line = 0);
141void RTDECL(EoshiftVector)(Descriptor &result,
const Descriptor &source,
142 std::int64_t shift,
const Descriptor *boundary =
nullptr,
143 const char *sourceFile =
nullptr,
int line = 0);
145void RTDECL(Pack)(Descriptor &result,
const Descriptor &source,
146 const Descriptor &mask,
const Descriptor *vector =
nullptr,
147 const char *sourceFile =
nullptr,
int line = 0);
149void RTDECL(Spread)(Descriptor &result,
const Descriptor &source,
int dim,
150 std::int64_t ncopies,
const char *sourceFile =
nullptr,
int line = 0);
152void RTDECL(Transpose)(Descriptor &result,
const Descriptor &matrix,
153 const char *sourceFile =
nullptr,
int line = 0);
155void RTDECL(Unpack)(Descriptor &result,
const Descriptor &vector,
156 const Descriptor &mask,
const Descriptor &field,
157 const char *sourceFile =
nullptr,
int line = 0);