1baf6725bSSlava Zakharin //===-- runtime/Float128Math/norm2.cpp ------------------------------------===// 2baf6725bSSlava Zakharin // 3baf6725bSSlava Zakharin // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4baf6725bSSlava Zakharin // See https://llvm.org/LICENSE.txt for license information. 5baf6725bSSlava Zakharin // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6baf6725bSSlava Zakharin // 7baf6725bSSlava Zakharin //===----------------------------------------------------------------------===// 8baf6725bSSlava Zakharin 9baf6725bSSlava Zakharin #include "math-entries.h" 100699749cSSlava Zakharin #include "numeric-template-specs.h" 11baf6725bSSlava Zakharin #include "reduction-templates.h" 12baf6725bSSlava Zakharin 13baf6725bSSlava Zakharin namespace Fortran::runtime { 14baf6725bSSlava Zakharin extern "C" { 15baf6725bSSlava Zakharin 16*fc51c7f0SSlava Zakharin #if HAS_LDBL128 || HAS_FLOAT128 17baf6725bSSlava Zakharin CppTypeFor<TypeCategory::Real, 16> RTDEF(Norm2_16)( 18baf6725bSSlava Zakharin const Descriptor &x, const char *source, int line, int dim) { 19baf6725bSSlava Zakharin return GetTotalReduction<TypeCategory::Real, 16>( 200699749cSSlava Zakharin x, source, line, dim, nullptr, Norm2Accumulator<16>{x}, "NORM2"); 21baf6725bSSlava Zakharin } 22baf6725bSSlava Zakharin 23baf6725bSSlava Zakharin void RTDEF(Norm2DimReal16)(Descriptor &result, const Descriptor &x, int dim, 24baf6725bSSlava Zakharin const char *source, int line) { 25baf6725bSSlava Zakharin Terminator terminator{source, line}; 26baf6725bSSlava Zakharin auto type{x.type().GetCategoryAndKind()}; 27baf6725bSSlava Zakharin RUNTIME_CHECK(terminator, type); 28baf6725bSSlava Zakharin RUNTIME_CHECK( 29baf6725bSSlava Zakharin terminator, type->first == TypeCategory::Real && type->second == 16); 300699749cSSlava Zakharin Norm2Helper<16>{}(result, x, dim, nullptr, terminator); 31baf6725bSSlava Zakharin } 320699749cSSlava Zakharin #endif 33baf6725bSSlava Zakharin 34baf6725bSSlava Zakharin } // extern "C" 35baf6725bSSlava Zakharin } // namespace Fortran::runtime 36