1b2f1d069SJakub Kuderski //===- AMDGPUUtilsTest.cpp - Unit tests for AMDGPU dialect utils ----------===// 2b2f1d069SJakub Kuderski // 3b2f1d069SJakub Kuderski // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4b2f1d069SJakub Kuderski // See https://llvm.org/LICENSE.txt for license information. 5b2f1d069SJakub Kuderski // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6b2f1d069SJakub Kuderski // 7b2f1d069SJakub Kuderski //===----------------------------------------------------------------------===// 8b2f1d069SJakub Kuderski 9b2f1d069SJakub Kuderski #include "mlir/Dialect/AMDGPU/Utils/Chipset.h" 10b2f1d069SJakub Kuderski #include "gtest/gtest.h" 11b2f1d069SJakub Kuderski 12b2f1d069SJakub Kuderski namespace mlir::amdgpu { 13b2f1d069SJakub Kuderski namespace { 14b2f1d069SJakub Kuderski 15b2f1d069SJakub Kuderski TEST(ChipsetTest, Parsing) { 16b2f1d069SJakub Kuderski FailureOr<Chipset> chipset = Chipset::parse("gfx90a"); 17b2f1d069SJakub Kuderski ASSERT_TRUE(succeeded(chipset)); 18b2f1d069SJakub Kuderski EXPECT_EQ(chipset->majorVersion, 9u); 19*763bc924SJakub Kuderski EXPECT_EQ(chipset->minorVersion, 0u); 20*763bc924SJakub Kuderski EXPECT_EQ(chipset->steppingVersion, 0xau); 21b2f1d069SJakub Kuderski 22b2f1d069SJakub Kuderski chipset = Chipset::parse("gfx940"); 23b2f1d069SJakub Kuderski ASSERT_TRUE(succeeded(chipset)); 24b2f1d069SJakub Kuderski EXPECT_EQ(chipset->majorVersion, 9u); 25*763bc924SJakub Kuderski EXPECT_EQ(chipset->minorVersion, 4u); 26*763bc924SJakub Kuderski EXPECT_EQ(chipset->steppingVersion, 0u); 27b2f1d069SJakub Kuderski 28b2f1d069SJakub Kuderski chipset = Chipset::parse("gfx1103"); 29b2f1d069SJakub Kuderski ASSERT_TRUE(succeeded(chipset)); 30b2f1d069SJakub Kuderski EXPECT_EQ(chipset->majorVersion, 11u); 31*763bc924SJakub Kuderski EXPECT_EQ(chipset->minorVersion, 0u); 32*763bc924SJakub Kuderski EXPECT_EQ(chipset->steppingVersion, 3u); 33b2f1d069SJakub Kuderski } 34b2f1d069SJakub Kuderski 35b2f1d069SJakub Kuderski TEST(ChipsetTest, ParsingInvalid) { 36b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("navi33"))); 37b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("rdna2"))); 38b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("sm_80"))); 39b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("GFX940"))); 40b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("Gfx940"))); 41b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("gfx9"))); 42b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("gfx_940"))); 43b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("gfx940_"))); 44b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("gfxmeow"))); 45b2f1d069SJakub Kuderski EXPECT_TRUE(failed(Chipset::parse("gfx1fff"))); 46b2f1d069SJakub Kuderski } 47b2f1d069SJakub Kuderski 48b2f1d069SJakub Kuderski TEST(ChipsetTest, Comparison) { 49*763bc924SJakub Kuderski EXPECT_EQ(Chipset(9, 4, 0), Chipset(9, 4, 0)); 50*763bc924SJakub Kuderski EXPECT_NE(Chipset(9, 4, 0), Chipset(9, 4, 2)); 51*763bc924SJakub Kuderski EXPECT_NE(Chipset(9, 0, 0), Chipset(10, 0, 0)); 52b2f1d069SJakub Kuderski 53*763bc924SJakub Kuderski EXPECT_LT(Chipset(9, 0, 0), Chipset(10, 0, 0)); 54*763bc924SJakub Kuderski EXPECT_LT(Chipset(9, 0, 0), Chipset(9, 4, 2)); 55*763bc924SJakub Kuderski EXPECT_LE(Chipset(9, 4, 1), Chipset(9, 4, 1)); 56*763bc924SJakub Kuderski EXPECT_FALSE(Chipset(9, 4, 2) < Chipset(9, 4, 2)); 57*763bc924SJakub Kuderski EXPECT_FALSE(Chipset(9, 4, 2) < Chipset(9, 4, 0)); 58*763bc924SJakub Kuderski 59*763bc924SJakub Kuderski EXPECT_GT(Chipset(9, 0, 0xa), Chipset(9, 0, 8)); 60*763bc924SJakub Kuderski EXPECT_GE(Chipset(9, 0, 0xa), Chipset(9, 0, 0xa)); 61*763bc924SJakub Kuderski EXPECT_FALSE(Chipset(9, 4, 1) >= Chipset(9, 4, 2)); 62*763bc924SJakub Kuderski EXPECT_FALSE(Chipset(9, 0, 0xa) >= Chipset(9, 4, 0)); 63b2f1d069SJakub Kuderski } 64b2f1d069SJakub Kuderski 65b2f1d069SJakub Kuderski } // namespace 66b2f1d069SJakub Kuderski } // namespace mlir::amdgpu 67