//===-- RegisterValueTest.cpp -----------------------------------*- C++ -*-===//
//
// 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 "RegisterValue.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"

namespace llvm {
namespace exegesis {

namespace {

#define CHECK(EXPECTED, ACTUAL)                                                \
  EXPECT_EQ(APInt(SizeInBits, EXPECTED, 16),                                   \
            bitcastFloatValue(Semantic, PredefinedValues::ACTUAL))

TEST(RegisterValueTest, Half) {
  const size_t SizeInBits = 16;
  const auto &Semantic = APFloatBase::IEEEhalf();
  CHECK("0000", POS_ZERO);
  CHECK("8000", NEG_ZERO);
  CHECK("3C00", ONE);
  CHECK("4000", TWO);
  CHECK("7C00", INF);
  CHECK("7E00", QNAN);
  CHECK("7BFF", LARGEST);
  CHECK("0400", SMALLEST_NORM);
  CHECK("0001", SMALLEST);
  CHECK("0001", ULP);
  CHECK("3C01", ONE_PLUS_ULP);
}

TEST(RegisterValueTest, Single) {
  const size_t SizeInBits = 32;
  const auto &Semantic = APFloatBase::IEEEsingle();
  CHECK("00000000", POS_ZERO);
  CHECK("80000000", NEG_ZERO);
  CHECK("3F800000", ONE);
  CHECK("40000000", TWO);
  CHECK("7F800000", INF);
  CHECK("7FC00000", QNAN);
  CHECK("7F7FFFFF", LARGEST);
  CHECK("00800000", SMALLEST_NORM);
  CHECK("00000001", SMALLEST);
  CHECK("00000001", ULP);
  CHECK("3F800001", ONE_PLUS_ULP);
}

TEST(RegisterValueTest, Double) {
  const size_t SizeInBits = 64;
  const auto &Semantic = APFloatBase::IEEEdouble();
  CHECK("0000000000000000", POS_ZERO);
  CHECK("8000000000000000", NEG_ZERO);
  CHECK("3FF0000000000000", ONE);
  CHECK("4000000000000000", TWO);
  CHECK("7FF0000000000000", INF);
  CHECK("7FF8000000000000", QNAN);
  CHECK("7FEFFFFFFFFFFFFF", LARGEST);
  CHECK("0010000000000000", SMALLEST_NORM);
  CHECK("0000000000000001", SMALLEST);
  CHECK("0000000000000001", ULP);
  CHECK("3FF0000000000001", ONE_PLUS_ULP);
}

} // namespace
} // namespace exegesis
} // namespace llvm
