Skip to content

Commit 76e9834

Browse files
authored
[MLIR][LLVM] Support named barrier as a global variable type in llvm dialect (#169194)
Enables `amdgcn.named.barrier` target extension type as a global variable type in MLIR.
1 parent ad1be4a commit 76e9834

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

mlir/lib/Dialect/LLVMIR/IR/LLVMTypes.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,7 @@ LogicalResult LLVMStructType::verifyEntries(DataLayoutEntryListRef entries,
667667

668668
static constexpr llvm::StringRef kSpirvPrefix = "spirv.";
669669
static constexpr llvm::StringRef kArmSVCount = "aarch64.svcount";
670+
static constexpr llvm::StringRef kAMDGCNNamedBarrier = "amdgcn.named.barrier";
670671

671672
bool LLVM::LLVMTargetExtType::hasProperty(Property prop) const {
672673
// See llvm/lib/IR/Type.cpp for reference.
@@ -676,6 +677,9 @@ bool LLVM::LLVMTargetExtType::hasProperty(Property prop) const {
676677
properties |=
677678
(LLVMTargetExtType::HasZeroInit | LLVM::LLVMTargetExtType::CanBeGlobal);
678679

680+
if (getExtTypeName() == kAMDGCNNamedBarrier)
681+
properties |= LLVMTargetExtType::CanBeGlobal;
682+
679683
return (properties & prop) == prop;
680684
}
681685

mlir/test/Target/LLVMIR/target-ext-type.mlir

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ llvm.mlir.global external @global() {addr_space = 0 : i32} : !llvm.target<"spirv
66
llvm.return %0 : !llvm.target<"spirv.DeviceEvent">
77
}
88

9+
// CHECK: @amdgcn_named_barrier = internal addrspace(3) global target("amdgcn.named.barrier", 0) poison
10+
llvm.mlir.global internal @amdgcn_named_barrier() {addr_space = 3 : i32} : !llvm.target<"amdgcn.named.barrier", 0> {
11+
%0 = llvm.mlir.poison : !llvm.target<"amdgcn.named.barrier", 0>
12+
llvm.return %0 : !llvm.target<"amdgcn.named.barrier", 0>
13+
}
14+
915
// CHECK-LABEL: define target("spirv.Event") @func2() {
1016
// CHECK-NEXT: %1 = alloca target("spirv.Event"), align 8
1117
// CHECK-NEXT: %2 = load target("spirv.Event"), ptr %1, align 8

0 commit comments

Comments
 (0)