36 lines · plain
1// RUN: mlir-translate -mlir-to-llvmir -split-input-file %s | FileCheck %s2 3// CHECK-LABEL: define void @native4// CHECK: load5// CHECK-SAME: !mmra ![[MMRA0:[0-9]+]]6// CHECK: fence7// CHECK-SAME: !mmra ![[MMRA1:[0-9]+]]8// CHECK: store {{.*}}, align 4{{$}}9 10#mmra_tag = #llvm.mmra_tag<"foo":"bar">11 12llvm.func @native(%x: !llvm.ptr, %y: !llvm.ptr) {13 %0 = llvm.load %x {llvm.mmra = #mmra_tag} : !llvm.ptr -> i3214 llvm.fence syncscope("workgroup-one-as") release15 {llvm.mmra = [#llvm.mmra_tag<"amdgpu-synchronize-as":"local">, #mmra_tag]}16 llvm.store %0, %y {llvm.mmra = []} : i32, !llvm.ptr17 llvm.return18}19 20// Actual MMRA metadata21// CHECK-DAG: ![[MMRA0]] = !{!"foo", !"bar"}22// CHECK-DAG: ![[MMRA_PART0:[0-9]+]] = !{!"amdgpu-synchronize-as", !"local"}23// CHECK-DAG: ![[MMRA1]] = !{![[MMRA_PART0]], ![[MMRA0]]}24 25// -----26 27// CHECK-LABEL: define void @foreign_op28// CHECK: call void @llvm.amdgcn.load.to.lds29// CHECK-SAME: !mmra ![[MMRA0:[0-9]+]]30llvm.func @foreign_op(%g: !llvm.ptr<1>, %l: !llvm.ptr<3>) {31 rocdl.load.to.lds %g, %l, 4, 0, 0 {llvm.mmra = #llvm.mmra_tag<"fake":"example">} : !llvm.ptr<1>32 llvm.return33}34 35// CHECK: ![[MMRA0]] = !{!"fake", !"example"}36