Commit 3d747cb3 authored by Adam Osewski's avatar Adam Osewski
Browse files

Add unit-tests for int4

parent 6f26696f
...@@ -42,3 +42,8 @@ target_compile_options(gtest PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) ...@@ -42,3 +42,8 @@ target_compile_options(gtest PRIVATE ${GTEST_CMAKE_CXX_FLAGS})
target_compile_options(gtest_main PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) target_compile_options(gtest_main PRIVATE ${GTEST_CMAKE_CXX_FLAGS})
target_compile_options(gmock PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) target_compile_options(gmock PRIVATE ${GTEST_CMAKE_CXX_FLAGS})
target_compile_options(gmock_main PRIVATE ${GTEST_CMAKE_CXX_FLAGS}) target_compile_options(gmock_main PRIVATE ${GTEST_CMAKE_CXX_FLAGS})
set_target_properties(gtest PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(gtest_main PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(gmock PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(gmock_main PROPERTIES POSITION_INDEPENDENT_CODE ON)
...@@ -51,3 +51,4 @@ add_subdirectory(grouped_convnd_fwd) ...@@ -51,3 +51,4 @@ add_subdirectory(grouped_convnd_fwd)
add_subdirectory(block_to_ctile_map) add_subdirectory(block_to_ctile_map)
add_subdirectory(softmax) add_subdirectory(softmax)
add_subdirectory(layernorm) add_subdirectory(layernorm)
add_subdirectory(data_type)
add_gtest_executable(test_int4 int4.cpp)
target_link_libraries(test_int4 PRIVATE utility)
// SPDX-License-Identifier: MIT
// Copyright (c) 2018-2022, Advanced Micro Devices, Inc. All rights reserved.
#include "gtest/gtest.h"
#include "ck/utility/data_type.hpp"
#include "ck/utility/math_v2.hpp"
using ck::int4_t;
TEST(Int4, BaseArithmetic)
{
int4_t a{1};
int4_t b{-2};
EXPECT_EQ(a+a, int4_t{2});
EXPECT_EQ(a-a, int4_t{0});
EXPECT_EQ(a+b, int4_t{-1});
EXPECT_EQ(a-b, int4_t{3});
EXPECT_EQ(a*a, int4_t{1});
EXPECT_EQ(a*b, int4_t{-2});
EXPECT_EQ(b*b, int4_t{4});
EXPECT_EQ(a/b, int4_t{0});
a = int4_t{4};
EXPECT_EQ(a/b, int4_t{-2});
b = int4_t{2};
EXPECT_EQ(a%b, int4_t{0});
}
TEST(Int4, NumericLimits)
{
EXPECT_EQ(ck::NumericLimits<int4_t>::Min(), int4_t{-7});
EXPECT_EQ(ck::NumericLimits<int4_t>::Max(), int4_t{7});
EXPECT_EQ(ck::NumericLimits<int4_t>::Lowest(), int4_t{-7});
}
TEST(Int4, MathOpsV2)
{
int4_t a{4};
int4_t b{-5};
EXPECT_EQ(ck::math::abs(a), int4_t{4});
EXPECT_EQ(ck::math::abs(b), int4_t{5});
EXPECT_FALSE(ck::math::isnan(b));
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment