//===--- TargetLibraryInfoTest.cpp - TLI/LibFunc unit tests ---------------===//
//
// 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
//
//===----------------------------------------------------------------------===//

#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/AsmParser/Parser.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/SourceMgr.h"
#include "gtest/gtest.h"

using namespace llvm;

namespace {

class TargetLibraryInfoTest : public testing::Test {
protected:
  LLVMContext Context;
  TargetLibraryInfoImpl TLII;
  TargetLibraryInfo TLI;

  std::unique_ptr<Module> M;

  TargetLibraryInfoTest() : TLI(TLII) {}

  void parseAssembly(const char *Assembly) {
    SMDiagnostic Error;
    M = parseAssemblyString(Assembly, Error, Context);

    std::string errMsg;
    raw_string_ostream os(errMsg);
    Error.print("", os);

    if (!M)
      report_fatal_error(Twine(errMsg));
  }

  ::testing::AssertionResult isLibFunc(const Function *FDecl,
                                       LibFunc ExpectedLF) {
    StringRef ExpectedLFName = TLI.getName(ExpectedLF);

    if (!FDecl)
      return ::testing::AssertionFailure() << ExpectedLFName << " not found";

    LibFunc F;
    if (!TLI.getLibFunc(*FDecl, F))
      return ::testing::AssertionFailure() << ExpectedLFName << " invalid";

    return ::testing::AssertionSuccess() << ExpectedLFName << " is LibFunc";
  }
};

} // end anonymous namespace

// Check that we don't accept egregiously incorrect prototypes.
TEST_F(TargetLibraryInfoTest, InvalidProto) {
  parseAssembly("%foo = type { %foo }\n");

  auto *StructTy = StructType::getTypeByName(Context, "foo");
  auto *InvalidFTy = FunctionType::get(StructTy, /*isVarArg=*/false);

  for (unsigned FI = 0; FI != LibFunc::NumLibFuncs; ++FI) {
    LibFunc LF = (LibFunc)FI;
    auto *F = cast<Function>(
        M->getOrInsertFunction(TLI.getName(LF), InvalidFTy).getCallee());
    EXPECT_FALSE(isLibFunc(F, LF));
  }

  // i64 @labs(i32)
  {
    auto *InvalidLabsFTy = FunctionType::get(Type::getInt64Ty(Context),
                                             {Type::getInt32Ty(Context)},
                                             /*isVarArg=*/false);
    auto *F = cast<Function>(
        M->getOrInsertFunction("labs", InvalidLabsFTy).getCallee());
    EXPECT_FALSE(isLibFunc(F, LibFunc_labs));
  }
}

TEST_F(TargetLibraryInfoTest, SizeReturningNewInvalidProto) {
  parseAssembly(
      "target datalayout = \"p:64:64:64\"\n"
      ";; Invalid additional params \n"
      "declare {i8*, i64} @__size_returning_new(i64, i64)\n"
      ";; Invalid params types \n"
      "declare {i8*, i64} @__size_returning_new_hot_cold(i64, i32)\n"
      ";; Invalid return struct types \n"
      "declare {i8*, i8} @__size_returning_new_aligned(i64, i64)\n"
      ";; Invalid return type \n"
      "declare i8* @__size_returning_new_aligned_hot_cold(i64, i64, i8)\n");

  for (const LibFunc LF :
       {LibFunc_size_returning_new, LibFunc_size_returning_new_aligned,
        LibFunc_size_returning_new_hot_cold,
        LibFunc_size_returning_new_aligned_hot_cold}) {
    TLII.setAvailable(LF);
    Function *F = M->getFunction(TLI.getName(LF));
    ASSERT_NE(F, nullptr);
    EXPECT_FALSE(isLibFunc(F, LF));
  }
}

// Check that we do accept know-correct prototypes.
TEST_F(TargetLibraryInfoTest, ValidProto) {
  parseAssembly(
      // These functions use a 64-bit size_t; use the appropriate datalayout.
      "target datalayout = \"p:64:64:64\"\n"

      // Struct pointers are replaced with an opaque pointer.
      "%struct = type opaque\n"

      // These functions were extracted as-is from the OS X headers.
      "declare double @__cospi(double)\n"
      "declare float @__cospif(float)\n"
      "declare { double, double } @__sincospi_stret(double)\n"
      "declare <2 x float> @__sincospif_stret(float)\n"
      "declare double @__sinpi(double)\n"
      "declare float @__sinpif(float)\n"
      "declare i32 @abs(i32)\n"
      "declare i32 @access(i8*, i32)\n"
      "declare double @acos(double)\n"
      "declare float @acosf(float)\n"
      "declare double @acosh(double)\n"
      "declare float @acoshf(float)\n"
      "declare x86_fp80 @acoshl(x86_fp80)\n"
      "declare x86_fp80 @acosl(x86_fp80)\n"
      "declare i8* @aligned_alloc(i64, i64)\n"
      "declare double @asin(double)\n"
      "declare float @asinf(float)\n"
      "declare double @asinh(double)\n"
      "declare float @asinhf(float)\n"
      "declare x86_fp80 @asinhl(x86_fp80)\n"
      "declare x86_fp80 @asinl(x86_fp80)\n"
      "declare double @atan(double)\n"
      "declare double @atan2(double, double)\n"
      "declare float @atan2f(float, float)\n"
      "declare x86_fp80 @atan2l(x86_fp80, x86_fp80)\n"
      "declare float @atanf(float)\n"
      "declare double @atanh(double)\n"
      "declare float @atanhf(float)\n"
      "declare x86_fp80 @atanhl(x86_fp80)\n"
      "declare x86_fp80 @atanl(x86_fp80)\n"
      "declare double @atof(i8*)\n"
      "declare i32 @atoi(i8*)\n"
      "declare i64 @atol(i8*)\n"
      "declare i64 @atoll(i8*)\n"
      "declare i32 @bcmp(i8*, i8*, i64)\n"
      "declare void @bcopy(i8*, i8*, i64)\n"
      "declare void @bzero(i8*, i64)\n"
      "declare i8* @calloc(i64, i64)\n"
      "declare double @cbrt(double)\n"
      "declare float @cbrtf(float)\n"
      "declare x86_fp80 @cbrtl(x86_fp80)\n"
      "declare double @ceil(double)\n"
      "declare float @ceilf(float)\n"
      "declare x86_fp80 @ceill(x86_fp80)\n"
      "declare i32 @chown(i8*, i32, i32)\n"
      "declare void @clearerr(%struct*)\n"
      "declare double @copysign(double, double)\n"
      "declare float @copysignf(float, float)\n"
      "declare x86_fp80 @copysignl(x86_fp80, x86_fp80)\n"
      "declare double @cabs([2 x double])\n"
      "declare float @cabsf([2 x float])\n"
      "declare x86_fp80 @cabsl([2 x x86_fp80])\n"
      "declare double @cos(double)\n"
      "declare float @cosf(float)\n"
      "declare double @cosh(double)\n"
      "declare float @coshf(float)\n"
      "declare x86_fp80 @coshl(x86_fp80)\n"
      "declare x86_fp80 @cosl(x86_fp80)\n"
      "declare i8* @ctermid(i8*)\n"
      "declare double @exp(double)\n"
      "declare double @exp2(double)\n"
      "declare float @exp2f(float)\n"
      "declare x86_fp80 @exp2l(x86_fp80)\n"
      "declare float @expf(float)\n"
      "declare x86_fp80 @expl(x86_fp80)\n"
      "declare double @expm1(double)\n"
      "declare float @expm1f(float)\n"
      "declare x86_fp80 @expm1l(x86_fp80)\n"
      "declare double @fabs(double)\n"
      "declare float @fabsf(float)\n"
      "declare x86_fp80 @fabsl(x86_fp80)\n"
      "declare i32 @fclose(%struct*)\n"
      "declare i32 @feof(%struct*)\n"
      "declare i32 @ferror(%struct*)\n"
      "declare i32 @fflush(%struct*)\n"
      "declare i32 @ffs(i32)\n"
      "declare i32 @ffsl(i64)\n"
      "declare i32 @ffsll(i64)\n"
      "declare i32 @fgetc(%struct*)\n"
      "declare i32 @fgetc_unlocked(%struct*)\n"
      "declare i32 @fgetpos(%struct*, i64*)\n"
      "declare i8* @fgets(i8*, i32, %struct*)\n"
      "declare i8* @fgets_unlocked(i8*, i32, %struct*)\n"
      "declare i32 @fileno(%struct*)\n"
      "declare void @flockfile(%struct*)\n"
      "declare double @floor(double)\n"
      "declare float @floorf(float)\n"
      "declare x86_fp80 @floorl(x86_fp80)\n"
      "declare i32 @fls(i32)\n"
      "declare i32 @flsl(i64)\n"
      "declare i32 @flsll(i64)\n"
      "declare double @fmax(double, double)\n"
      "declare float @fmaxf(float, float)\n"
      "declare x86_fp80 @fmaxl(x86_fp80, x86_fp80)\n"
      "declare double @fmin(double, double)\n"
      "declare float @fminf(float, float)\n"
      "declare x86_fp80 @fminl(x86_fp80, x86_fp80)\n"
      "declare double @fmaximum_num(double, double)\n"
      "declare float @fmaximum_numf(float, float)\n"
      "declare x86_fp80 @fmaximum_numl(x86_fp80, x86_fp80)\n"
      "declare double @fminimum_num(double, double)\n"
      "declare float @fminimum_numf(float, float)\n"
      "declare x86_fp80 @fminimum_numl(x86_fp80, x86_fp80)\n"
      "declare double @fmod(double, double)\n"
      "declare float @fmodf(float, float)\n"
      "declare x86_fp80 @fmodl(x86_fp80, x86_fp80)\n"
      "declare i32 @fprintf(%struct*, i8*, ...)\n"
      "declare i32 @fputc(i32, %struct*)\n"
      "declare i32 @fputc_unlocked(i32, %struct*)\n"
      "declare i64 @fread(i8*, i64, i64, %struct*)\n"
      "declare i64 @fread_unlocked(i8*, i64, i64, %struct*)\n"
      "declare void @free(i8*)\n"
      "declare double @frexp(double, i32*)\n"
      "declare float @frexpf(float, i32*)\n"
      "declare x86_fp80 @frexpl(x86_fp80, i32*)\n"
      "declare i32 @fscanf(%struct*, i8*, ...)\n"
      "declare i32 @fseek(%struct*, i64, i32)\n"
      "declare i32 @fseeko(%struct*, i64, i32)\n"
      "declare i32 @fsetpos(%struct*, i64*)\n"
      "declare i32 @fstatvfs(i32, %struct*)\n"
      "declare i64 @ftell(%struct*)\n"
      "declare i64 @ftello(%struct*)\n"
      "declare i32 @ftrylockfile(%struct*)\n"
      "declare void @funlockfile(%struct*)\n"
      "declare i32 @getc(%struct*)\n"
      "declare i32 @getc_unlocked(%struct*)\n"
      "declare i32 @getchar()\n"
      "declare i32 @getchar_unlocked()\n"
      "declare i8* @getenv(i8*)\n"
      "declare i32 @getitimer(i32, %struct*)\n"
      "declare i32 @getlogin_r(i8*, i64)\n"
      "declare %struct* @getpwnam(i8*)\n"
      "declare i8* @gets(i8*)\n"
      "declare i32 @gettimeofday(%struct*, i8*)\n"
      "declare double @hypot(double, double)\n"
      "declare float @hypotf(float, float)\n"
      "declare x86_fp80 @hypotl(x86_fp80, x86_fp80)\n"
      "declare i32 @_Z7isasciii(i32)\n"
      "declare i32 @_Z7isdigiti(i32)\n"
      "declare i64 @labs(i64)\n"
      "declare double @ldexp(double, i32)\n"
      "declare float @ldexpf(float, i32)\n"
      "declare x86_fp80 @ldexpl(x86_fp80, i32)\n"
      "declare i64 @llabs(i64)\n"
      "declare double @log(double)\n"
      "declare double @log10(double)\n"
      "declare float @log10f(float)\n"
      "declare x86_fp80 @log10l(x86_fp80)\n"
      "declare double @log1p(double)\n"
      "declare float @log1pf(float)\n"
      "declare x86_fp80 @log1pl(x86_fp80)\n"
      "declare double @log2(double)\n"
      "declare float @log2f(float)\n"
      "declare x86_fp80 @log2l(x86_fp80)\n"
      "declare i32 @ilogb(double)\n"
      "declare i32 @ilogbf(float)\n"
      "declare i32 @ilogbl(x86_fp80)\n"
      "declare double @logb(double)\n"
      "declare float @logbf(float)\n"
      "declare x86_fp80 @logbl(x86_fp80)\n"
      "declare float @logf(float)\n"
      "declare x86_fp80 @logl(x86_fp80)\n"
      "declare i8* @malloc(i64)\n"
      "declare i8* @memccpy(i8*, i8*, i32, i64)\n"
      "declare i8* @memchr(i8*, i32, i64)\n"
      "declare i32 @memcmp(i8*, i8*, i64)\n"
      "declare i8* @memcpy(i8*, i8*, i64)\n"
      "declare i8* @memmove(i8*, i8*, i64)\n"
      "declare i8* @memset(i8*, i32, i64)\n"
      "declare void @memset_pattern16(i8*, i8*, i64)\n"
      "declare void @memset_pattern4(i8*, i8*, i64)\n"
      "declare void @memset_pattern8(i8*, i8*, i64)\n"
      "declare i32 @mkdir(i8*, i16)\n"
      "declare double @modf(double, double*)\n"
      "declare float @modff(float, float*)\n"
      "declare x86_fp80 @modfl(x86_fp80, x86_fp80*)\n"
      "declare double @nan(ptr)\n"
      "declare float @nanf(ptr)\n"
      "declare x86_fp80 @nanl(ptr)\n"
      "declare double @nearbyint(double)\n"
      "declare float @nearbyintf(float)\n"
      "declare x86_fp80 @nearbyintl(x86_fp80)\n"
      "declare i32 @pclose(%struct*)\n"
      "declare void @perror(i8*)\n"
      "declare i32 @posix_memalign(i8**, i64, i64)\n"
      "declare double @pow(double, double)\n"
      "declare float @powf(float, float)\n"
      "declare x86_fp80 @powl(x86_fp80, x86_fp80)\n"
      "declare double @erf(double)\n"
      "declare float @erff(float)\n"
      "declare x86_fp80 @erfl(x86_fp80)\n"
      "declare double @tgamma(double)\n"
      "declare float @tgammaf(float)\n"
      "declare x86_fp80 @tgammal(x86_fp80)\n"
      "declare i32 @printf(i8*, ...)\n"
      "declare i32 @putc(i32, %struct*)\n"
      "declare i32 @putc_unlocked(i32, %struct*)\n"
      "declare i32 @putchar(i32)\n"
      "declare i32 @putchar_unlocked(i32)\n"
      "declare i32 @puts(i8*)\n"
      "declare void @qsort(i8*, i64, i64, i32 (i8*, i8*)*)\n"
      "declare i64 @readlink(i8*, i8*, i64)\n"
      "declare i8* @realloc(i8*, i64)\n"
      "declare i8* @reallocf(i8*, i64)\n"
      "declare double @remainder(double, double)\n"
      "declare float @remainderf(float, float)\n"
      "declare x86_fp80 @remainderl(x86_fp80, x86_fp80)\n"
      "declare i32 @remove(i8*)\n"
      "declare double @remquo(double, double, ptr)\n"
      "declare float @remquof(float, float, ptr)\n"
      "declare x86_fp80 @remquol(x86_fp80, x86_fp80, ptr)\n"
      "declare double @fdim(double, double)\n"
      "declare float @fdimf(float, float)\n"
      "declare x86_fp80 @fdiml(x86_fp80, x86_fp80)\n"
      "declare i32 @rename(i8*, i8*)\n"
      "declare void @rewind(%struct*)\n"
      "declare double @rint(double)\n"
      "declare float @rintf(float)\n"
      "declare x86_fp80 @rintl(x86_fp80)\n"
      "declare i32 @rmdir(i8*)\n"
      "declare double @round(double)\n"
      "declare float @roundf(float)\n"
      "declare x86_fp80 @roundl(x86_fp80)\n"
      "declare double @roundeven(double)\n"
      "declare float @roundevenf(float)\n"
      "declare x86_fp80 @roundevenl(x86_fp80)\n"
      "declare double @scalbln(double, i64)\n"
      "declare float @scalblnf(float, i64)\n"
      "declare x86_fp80 @scalblnl(x86_fp80, i64)\n"
      "declare double @scalbn(double, i32)\n"
      "declare float @scalbnf(float, i32)\n"
      "declare x86_fp80 @scalbnl(x86_fp80, i32)\n"
      "declare i32 @scanf(i8*, ...)\n"
      "declare void @setbuf(%struct*, i8*)\n"
      "declare i32 @setitimer(i32, %struct*, %struct*)\n"
      "declare i32 @setvbuf(%struct*, i8*, i32, i64)\n"
      "declare double @sin(double)\n"
      "declare float @sinf(float)\n"
      "declare double @sinh(double)\n"
      "declare float @sinhf(float)\n"
      "declare x86_fp80 @sinhl(x86_fp80)\n"
      "declare x86_fp80 @sinl(x86_fp80)\n"
      "declare void @sincos(double, ptr, ptr)\n"
      "declare void @sincosf(float, ptr, ptr)\n"
      "declare void @sincosl(x86_fp80, ptr, ptr)\n"
      "declare i32 @snprintf(i8*, i64, i8*, ...)\n"
      "declare i32 @sprintf(i8*, i8*, ...)\n"
      "declare double @sqrt(double)\n"
      "declare float @sqrtf(float)\n"
      "declare x86_fp80 @sqrtl(x86_fp80)\n"
      "declare i32 @sscanf(i8*, i8*, ...)\n"
      "declare i32 @statvfs(i8*, %struct*)\n"
      "declare i8* @stpcpy(i8*, i8*)\n"
      "declare i8* @stpncpy(i8*, i8*, i64)\n"
      "declare i32 @strcasecmp(i8*, i8*)\n"
      "declare i8* @strcat(i8*, i8*)\n"
      "declare i8* @strchr(i8*, i32)\n"
      "declare i32 @strcmp(i8*, i8*)\n"
      "declare i32 @strcoll(i8*, i8*)\n"
      "declare i8* @strcpy(i8*, i8*)\n"
      "declare i64 @strcspn(i8*, i8*)\n"
      "declare i8* @strdup(i8*)\n"
      "declare i64 @strlen(i8*)\n"
      "declare i32 @strncasecmp(i8*, i8*, i64)\n"
      "declare i8* @strncat(i8*, i8*, i64)\n"
      "declare i32 @strncmp(i8*, i8*, i64)\n"
      "declare i8* @strncpy(i8*, i8*, i64)\n"
      "declare i8* @strndup(i8*, i64)\n"
      "declare i64 @strnlen(i8*, i64)\n"
      "declare i8* @strpbrk(i8*, i8*)\n"
      "declare i8* @strrchr(i8*, i32)\n"
      "declare i64 @strspn(i8*, i8*)\n"
      "declare i8* @strstr(i8*, i8*)\n"
      "declare i8* @strtok(i8*, i8*)\n"
      "declare i8* @strtok_r(i8*, i8*, i8**)\n"
      "declare i64 @strtol(i8*, i8**, i32)\n"
      "declare i64 @strlcat(i8*, i8*, i64)\n"
      "declare i64 @strlcpy(i8*, i8*, i64)\n"
      "declare x86_fp80 @strtold(i8*, i8**)\n"
      "declare i64 @strtoll(i8*, i8**, i32)\n"
      "declare i64 @strtoul(i8*, i8**, i32)\n"
      "declare i64 @strtoull(i8*, i8**, i32)\n"
      "declare i64 @strxfrm(i8*, i8*, i64)\n"
      "declare double @tan(double)\n"
      "declare float @tanf(float)\n"
      "declare double @tanh(double)\n"
      "declare float @tanhf(float)\n"
      "declare x86_fp80 @tanhl(x86_fp80)\n"
      "declare x86_fp80 @tanl(x86_fp80)\n"
      "declare i64 @times(%struct*)\n"
      "declare %struct* @tmpfile()\n"
      "declare i32 @_Z7toasciii(i32)\n"
      "declare double @trunc(double)\n"
      "declare float @truncf(float)\n"
      "declare x86_fp80 @truncl(x86_fp80)\n"
      "declare i32 @uname(%struct*)\n"
      "declare i32 @ungetc(i32, %struct*)\n"
      "declare i32 @unlink(i8*)\n"
      "declare i32 @utime(i8*, %struct*)\n"
      "declare i32 @utimes(i8*, %struct*)\n"
      "declare i8* @valloc(i64)\n"
      "declare i32 @vfprintf(%struct*, i8*, %struct*)\n"
      "declare i32 @vfscanf(%struct*, i8*, %struct*)\n"
      "declare i32 @vprintf(i8*, %struct*)\n"
      "declare i32 @vscanf(i8*, %struct*)\n"
      "declare i32 @vsnprintf(i8*, i64, i8*, %struct*)\n"
      "declare i32 @vsprintf(i8*, i8*, %struct*)\n"
      "declare i32 @vsscanf(i8*, i8*, %struct*)\n"
      "declare i64 @wcslen(i32*)\n"
      "declare i32 @fork()\n"
      "declare i32 @execl(i8*, i8*, ...)\n"
      "declare i32 @execle(i8*, i8*, ...)\n"
      "declare i32 @execlp(i8*, i8*, ...)\n"
      "declare i32 @execv(i8*, i8**)\n"
      "declare i32 @execvP(i8*, i8*, i8**)\n"
      "declare i32 @execve(i8*, i8**, i8**)\n"
      "declare i32 @execvp(i8*, i8**)\n"
      "declare i32 @execvpe(i8*, i8**, i8**)\n"

      // These functions were also extracted from the OS X headers, but they are
      // available with a special name on darwin.
      // This test uses the default TLI name instead.
      "declare i32 @chmod(i8*, i16)\n"
      "declare i32 @closedir(%struct*)\n"
      "declare %struct* @fdopen(i32, i8*)\n"
      "declare %struct* @fopen(i8*, i8*)\n"
      "declare i32 @fputs(i8*, %struct*)\n"
      "declare i32 @fputs_unlocked(i8*, %struct*)\n"
      "declare i32 @fstat(i32, %struct*)\n"
      "declare i64 @fwrite(i8*, i64, i64, %struct*)\n"
      "declare i64 @fwrite_unlocked(i8*, i64, i64, %struct*)\n"
      "declare i32 @lchown(i8*, i32, i32)\n"
      "declare i32 @lstat(i8*, %struct*)\n"
      "declare i64 @mktime(%struct*)\n"
      "declare i32 @open(i8*, i32, ...)\n"
      "declare %struct* @opendir(i8*)\n"
      "declare %struct* @popen(i8*, i8*)\n"
      "declare i64 @pread(i32, i8*, i64, i64)\n"
      "declare i64 @pwrite(i32, i8*, i64, i64)\n"
      "declare i64 @read(i32, i8*, i64)\n"
      "declare i8* @realpath(i8*, i8*)\n"
      "declare i32 @stat(i8*, %struct*)\n"
      "declare double @strtod(i8*, i8**)\n"
      "declare float @strtof(i8*, i8**)\n"
      "declare i32 @system(i8*)\n"
      "declare i32 @unsetenv(i8*)\n"
      "declare i64 @write(i32, i8*, i64)\n"

      // These functions are available on Linux but not Darwin; they only differ
      // from their non-64 counterparts in the struct type.
      // Use the same prototype as the non-64 variant.
      "declare %struct* @fopen64(i8*, i8*)\n"
      "declare i32 @fstat64(i32, %struct*)\n"
      "declare i32 @fstatvfs64(i32, %struct*)\n"
      "declare i32 @lstat64(i8*, %struct*)\n"
      "declare i32 @open64(i8*, i32, ...)\n"
      "declare i32 @stat64(i8*, %struct*)\n"
      "declare i32 @statvfs64(i8*, %struct*)\n"
      "declare %struct* @tmpfile64()\n"

      // These functions are also -64 variants, but do differ in the type of the
      // off_t (vs off64_t) parameter.  The non-64 variants declared above used
      // a 64-bit off_t, so, in practice, they are also equivalent.
      "declare i32 @fseeko64(%struct*, i64, i32)\n"
      "declare i64 @ftello64(%struct*)\n"

      "declare void @_ZdaPv(i8*)\n"
      "declare void @_ZdaPvRKSt9nothrow_t(i8*, %struct*)\n"
      "declare void @_ZdaPvSt11align_val_t(i8*, i64)\n"
      "declare void @_ZdaPvSt11align_val_tRKSt9nothrow_t(i8*, i64, %struct*)\n"
      "declare void @_ZdaPvj(i8*, i32)\n"
      "declare void @_ZdaPvjSt11align_val_t(i8*, i32, i32)\n"
      "declare void @_ZdaPvm(i8*, i64)\n"
      "declare void @_ZdaPvmSt11align_val_t(i8*, i64, i64)\n"
      "declare void @_ZdlPv(i8*)\n"
      "declare void @_ZdlPvRKSt9nothrow_t(i8*, %struct*)\n"
      "declare void @_ZdlPvSt11align_val_t(i8*, i64)\n"
      "declare void @_ZdlPvSt11align_val_tRKSt9nothrow_t(i8*, i64, %struct*)\n"
      "declare void @_ZdlPvj(i8*, i32)\n"
      "declare void @_ZdlPvjSt11align_val_t(i8*, i32, i32)\n"
      "declare void @_ZdlPvm(i8*, i64)\n"
      "declare void @_ZdlPvmSt11align_val_t(i8*, i64, i64)\n"
      "declare i8* @_Znaj(i32)\n"
      "declare i8* @_ZnajRKSt9nothrow_t(i32, %struct*)\n"
      "declare i8* @_ZnajSt11align_val_t(i32, i32)\n"
      "declare i8* @_ZnajSt11align_val_tRKSt9nothrow_t(i32, i32, %struct*)\n"
      "declare i8* @_Znam(i64)\n"
      "declare i8* @_Znam12__hot_cold_t(i64, i8)\n"
      "declare i8* @_ZnamRKSt9nothrow_t(i64, %struct*)\n"
      "declare i8* @_ZnamRKSt9nothrow_t12__hot_cold_t(i64, %struct*, i8)\n"
      "declare i8* @_ZnamSt11align_val_t(i64, i64)\n"
      "declare i8* @_ZnamSt11align_val_t12__hot_cold_t(i64, i64, i8)\n"
      "declare i8* @_ZnamSt11align_val_tRKSt9nothrow_t(i64, i64, %struct*)\n"
      "declare i8* @_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64, i64, "
      "%struct*, i8)\n"
      "declare i8* @_Znwj(i32)\n"
      "declare i8* @_ZnwjRKSt9nothrow_t(i32, %struct*)\n"
      "declare i8* @_ZnwjSt11align_val_t(i32, i32)\n"
      "declare i8* @_ZnwjSt11align_val_tRKSt9nothrow_t(i32, i32, %struct*)\n"
      "declare i8* @_Znwm(i64)\n"
      "declare i8* @_Znwm12__hot_cold_t(i64, i8)\n"
      "declare i8* @_ZnwmRKSt9nothrow_t(i64, %struct*)\n"
      "declare i8* @_ZnwmRKSt9nothrow_t12__hot_cold_t(i64, %struct*, i8)\n"
      "declare i8* @_ZnwmSt11align_val_t(i64, i64)\n"
      "declare i8* @_ZnwmSt11align_val_t12__hot_cold_t(i64, i64, i8)\n"
      "declare i8* @_ZnwmSt11align_val_tRKSt9nothrow_t(i64, i64, %struct*)\n"
      "declare i8* @_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64, i64, "
      "%struct*, i8)\n"
      "declare {i8*, i64} @__size_returning_new(i64)\n"
      "declare {i8*, i64} @__size_returning_new_hot_cold(i64, i8)\n"
      "declare {i8*, i64} @__size_returning_new_aligned(i64, i64)\n"
      "declare {i8*, i64} @__size_returning_new_aligned_hot_cold(i64, i64, "
      "i8)\n"

      "declare void @\"??3@YAXPEAX@Z\"(i8*)\n"
      "declare void @\"??3@YAXPEAXAEBUnothrow_t@std@@@Z\"(i8*, %struct*)\n"
      "declare void @\"??3@YAXPEAX_K@Z\"(i8*, i64)\n"
      "declare void @\"??_V@YAXPEAX@Z\"(i8*)\n"
      "declare void @\"??_V@YAXPEAXAEBUnothrow_t@std@@@Z\"(i8*, %struct*)\n"
      "declare void @\"??_V@YAXPEAX_K@Z\"(i8*, i64)\n"
      "declare i8* @\"??2@YAPAXI@Z\"(i32)\n"
      "declare i8* @\"??2@YAPAXIABUnothrow_t@std@@@Z\"(i32, %struct*)\n"
      "declare i8* @\"??2@YAPEAX_K@Z\"(i64)\n"
      "declare i8* @\"??2@YAPEAX_KAEBUnothrow_t@std@@@Z\"(i64, %struct*)\n"
      "declare i8* @\"??_U@YAPAXI@Z\"(i32)\n"
      "declare i8* @\"??_U@YAPAXIABUnothrow_t@std@@@Z\"(i32, %struct*)\n"
      "declare i8* @\"??_U@YAPEAX_K@Z\"(i64)\n"
      "declare i8* @\"??_U@YAPEAX_KAEBUnothrow_t@std@@@Z\"(i64, %struct*)\n"

      "declare void @\"??3@YAXPAX@Z\"(i8*)\n"
      "declare void @\"??3@YAXPAXABUnothrow_t@std@@@Z\"(i8*, %struct*)\n"
      "declare void @\"??3@YAXPAXI@Z\"(i8*, i32)\n"
      "declare void @\"??_V@YAXPAX@Z\"(i8*)\n"
      "declare void @\"??_V@YAXPAXABUnothrow_t@std@@@Z\"(i8*, %struct*)\n"
      "declare void @\"??_V@YAXPAXI@Z\"(i8*, i32)\n"

      // These other functions were derived from the .def C declaration.
      "declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*)\n"
      "declare void @__cxa_guard_abort(%struct*)\n"
      "declare i32 @__cxa_guard_acquire(%struct*)\n"
      "declare void @__cxa_guard_release(%struct*)\n"
      "declare void @__cxa_throw(ptr, ptr, ptr)\n"

      "declare i32 @atexit(void ()*)\n"

      "declare void @abort()\n"
      "declare void @exit(i32)\n"
      "declare void @_Exit(i32)\n"
      "declare void @_ZSt9terminatev()\n"

      "declare i32 @__nvvm_reflect(i8*)\n"

      "declare i8* @__memcpy_chk(i8*, i8*, i64, i64)\n"
      "declare i8* @__memmove_chk(i8*, i8*, i64, i64)\n"
      "declare i8* @__memset_chk(i8*, i32, i64, i64)\n"
      "declare i8* @__stpcpy_chk(i8*, i8*, i64)\n"
      "declare i8* @__stpncpy_chk(i8*, i8*, i64, i64)\n"
      "declare i8* @__strcpy_chk(i8*, i8*, i64)\n"
      "declare i8* @__strncpy_chk(i8*, i8*, i64, i64)\n"
      "declare i8* @__memccpy_chk(i8*, i8*, i32, i64, i64)\n"
      "declare i8* @__mempcpy_chk(i8*, i8*, i64, i64)\n"
      "declare i32 @__snprintf_chk(i8*, i64, i32, i64, i8*, ...)\n"
      "declare i32 @__sprintf_chk(i8*, i32, i64, i8*, ...)\n"
      "declare i8* @__strcat_chk(i8*, i8*, i64)\n"
      "declare i64 @__strlcat_chk(i8*, i8*, i64, i64)\n"
      "declare i64 @__strlen_chk(i8*, i64)\n"
      "declare i8* @__strncat_chk(i8*, i8*, i64, i64)\n"
      "declare i64 @__strlcpy_chk(i8*, i8*, i64, i64)\n"
      "declare i32 @__vsnprintf_chk(i8*, i64, i32, i64, i8*, %struct*)\n"
      "declare i32 @__vsprintf_chk(i8*, i32, i64, i8*, %struct*)\n"

      "declare i8* @memalign(i64, i64)\n"
      "declare i8* @mempcpy(i8*, i8*, i64)\n"
      "declare i8* @memrchr(i8*, i32, i64)\n"

      "declare void @__atomic_load(i64, i8*, i8*, i32)\n"
      "declare void @__atomic_store(i64, i8*, i8*, i32)\n"

      // These are similar to the FILE* fgetc/fputc.
      "declare i32 @_IO_getc(%struct*)\n"
      "declare i32 @_IO_putc(i32, %struct*)\n"

      "declare i32 @__isoc99_scanf(i8*, ...)\n"
      "declare i32 @__isoc99_sscanf(i8*, i8*, ...)\n"
      "declare i8* @__strdup(i8*)\n"
      "declare i8* @__strndup(i8*, i64)\n"
      "declare i8* @__strtok_r(i8*, i8*, i8**)\n"

      "declare double @__sqrt_finite(double)\n"
      "declare float @__sqrtf_finite(float)\n"
      "declare x86_fp80 @__sqrtl_finite(x86_fp80)\n"
      "declare double @exp10(double)\n"
      "declare float @exp10f(float)\n"
      "declare x86_fp80 @exp10l(x86_fp80)\n"

      // These printf variants have the same prototype as the non-'i' versions.
      "declare i32 @fiprintf(%struct*, i8*, ...)\n"
      "declare i32 @iprintf(i8*, ...)\n"
      "declare i32 @siprintf(i8*, i8*, ...)\n"

      // __small_printf variants have the same prototype as the non-'i'
      // versions.
      "declare i32 @__small_fprintf(%struct*, i8*, ...)\n"
      "declare i32 @__small_printf(i8*, ...)\n"
      "declare i32 @__small_sprintf(i8*, i8*, ...)\n"

      "declare i32 @htonl(i32)\n"
      "declare i16 @htons(i16)\n"
      "declare i32 @ntohl(i32)\n"
      "declare i16 @ntohs(i16)\n"

      "declare i32 @isascii(i32)\n"
      "declare i32 @isdigit(i32)\n"
      "declare i32 @toascii(i32)\n"

      // These functions were extracted from math-finite.h which provides
      // functions similar to those in math.h, but optimized for handling
      // finite values only.
      "declare double @__acos_finite(double)\n"
      "declare float @__acosf_finite(float)\n"
      "declare x86_fp80 @__acosl_finite(x86_fp80)\n"
      "declare double @__acosh_finite(double)\n"
      "declare float @__acoshf_finite(float)\n"
      "declare x86_fp80 @__acoshl_finite(x86_fp80)\n"
      "declare double @__asin_finite(double)\n"
      "declare float @__asinf_finite(float)\n"
      "declare x86_fp80 @__asinl_finite(x86_fp80)\n"
      "declare double @__atan2_finite(double, double)\n"
      "declare float @__atan2f_finite(float, float)\n"
      "declare x86_fp80 @__atan2l_finite(x86_fp80, x86_fp80)\n"
      "declare double @__atanh_finite(double)\n"
      "declare float @__atanhf_finite(float)\n"
      "declare x86_fp80 @__atanhl_finite(x86_fp80)\n"
      "declare double @__cosh_finite(double)\n"
      "declare float @__coshf_finite(float)\n"
      "declare x86_fp80 @__coshl_finite(x86_fp80)\n"
      "declare double @__exp10_finite(double)\n"
      "declare float @__exp10f_finite(float)\n"
      "declare x86_fp80 @__exp10l_finite(x86_fp80)\n"
      "declare double @__exp2_finite(double)\n"
      "declare float @__exp2f_finite(float)\n"
      "declare x86_fp80 @__exp2l_finite(x86_fp80)\n"
      "declare double @__exp_finite(double)\n"
      "declare float @__expf_finite(float)\n"
      "declare x86_fp80 @__expl_finite(x86_fp80)\n"
      "declare double @__log10_finite(double)\n"
      "declare float @__log10f_finite(float)\n"
      "declare x86_fp80 @__log10l_finite(x86_fp80)\n"
      "declare double @__log2_finite(double)\n"
      "declare float @__log2f_finite(float)\n"
      "declare x86_fp80 @__log2l_finite(x86_fp80)\n"
      "declare double @__log_finite(double)\n"
      "declare float @__logf_finite(float)\n"
      "declare x86_fp80 @__logl_finite(x86_fp80)\n"
      "declare double @__pow_finite(double, double)\n"
      "declare float @__powf_finite(float, float)\n"
      "declare x86_fp80 @__powl_finite(x86_fp80, x86_fp80)\n"
      "declare double @__sinh_finite(double)\n"
      "declare float @__sinhf_finite(float)\n"
      "declare x86_fp80 @__sinhl_finite(x86_fp80)\n"

      // These functions are aix vec allocation/free routines
      "declare i8* @vec_calloc(i64, i64)\n"
      "declare i8* @vec_malloc(i64)\n"
      "declare i8* @vec_realloc(i8*, i64)\n"
      "declare void @vec_free(i8*)\n"

      // These functions are OpenMP Offloading allocation / free routines
      "declare i8* @__kmpc_alloc_shared(i64)\n"
      "declare void @__kmpc_free_shared(i8*, i64)\n");

  for (unsigned FI = 0; FI != LibFunc::NumLibFuncs; ++FI) {
    LibFunc LF = (LibFunc)FI;
    // Make sure everything is available; we're not testing target defaults.
    TLII.setAvailable(LF);
    Function *F = M->getFunction(TLI.getName(LF));
    EXPECT_TRUE(isLibFunc(F, LF));
  }
}

namespace {

/// Creates TLI for AArch64 and uses it to get the LibFunc names for the given
/// Instruction opcode and Type.
class TLITestAarch64 : public ::testing::Test {
private:
  const Triple TargetTriple;

protected:
  LLVMContext Ctx;
  std::unique_ptr<TargetLibraryInfoImpl> TLII;
  std::unique_ptr<TargetLibraryInfo> TLI;

  /// Create TLI for AArch64
  TLITestAarch64() : TargetTriple(Triple("aarch64-unknown-linux-gnu")) {
    TLII = std::make_unique<TargetLibraryInfoImpl>(
        TargetLibraryInfoImpl(TargetTriple));
    TLI = std::make_unique<TargetLibraryInfo>(TargetLibraryInfo(*TLII));
  }

  /// Returns the TLI function name for the given \p Opcode and type \p Ty.
  StringRef getScalarName(unsigned int Opcode, Type *Ty) {
    LibFunc Func;
    if (!TLI->getLibFunc(Opcode, Ty, Func))
      return "";
    return TLI->getName(Func);
  }
};
} // end anonymous namespace

TEST_F(TLITestAarch64, TestFrem) {
  EXPECT_EQ(getScalarName(Instruction::FRem, Type::getDoubleTy(Ctx)), "fmod");
  EXPECT_EQ(getScalarName(Instruction::FRem, Type::getFloatTy(Ctx)), "fmodf");
}
