xref: /llvm-project/mlir/unittests/Dialect/AMDGPU/AMDGPUUtilsTest.cpp (revision 763bc9249cf0b7da421182e24716d9a569fb5184)
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