[GlobalISel] Introduce LLT:token() as a special scalar type (#85189)
The new token type is used in #67006 for implementing convergence
control tokens in GMIR.
diff --git a/llvm/unittests/CodeGen/LowLevelTypeTest.cpp b/llvm/unittests/CodeGen/LowLevelTypeTest.cpp
index cb34802..b60d82b 100644
--- a/llvm/unittests/CodeGen/LowLevelTypeTest.cpp
+++ b/llvm/unittests/CodeGen/LowLevelTypeTest.cpp
@@ -18,6 +18,24 @@
namespace {
+TEST(LowLevelTypeTest, Token) {
+ LLVMContext C;
+ DataLayout DL("");
+
+ const LLT TTy = LLT::token();
+
+ // Test kind.
+ EXPECT_TRUE(TTy.isValid());
+ EXPECT_TRUE(TTy.isScalar());
+ EXPECT_TRUE(TTy.isToken());
+
+ EXPECT_FALSE(TTy.isPointer());
+ EXPECT_FALSE(TTy.isVector());
+
+ const LLT STy = LLT::scalar(0);
+ EXPECT_EQ(STy, TTy);
+}
+
TEST(LowLevelTypeTest, Scalar) {
LLVMContext C;
DataLayout DL("");
@@ -32,6 +50,8 @@
ASSERT_FALSE(Ty.isPointer());
ASSERT_FALSE(Ty.isVector());
+ EXPECT_TRUE(S != 0 || Ty.isToken());
+
// Test sizes.
EXPECT_EQ(S, Ty.getSizeInBits());
EXPECT_EQ(S, Ty.getScalarSizeInBits());
@@ -77,6 +97,7 @@
ASSERT_FALSE(VTy.isScalar());
ASSERT_FALSE(VTy.isPointer());
+ ASSERT_FALSE(VTy.isToken());
// Test sizes.
EXPECT_EQ(S, VTy.getScalarSizeInBits());
@@ -300,6 +321,7 @@
ASSERT_FALSE(Ty.isScalar());
ASSERT_FALSE(Ty.isPointer());
ASSERT_FALSE(Ty.isVector());
+ ASSERT_FALSE(Ty.isToken());
}
TEST(LowLevelTypeTest, Divide) {