| // RUN: mlir-opt %s -split-input-file --verify-roundtrip --mlir-print-local-scope | FileCheck %s |
| |
| // CHECK-LABEL: llvm.func @native |
| // CHECK: llvm.load |
| // CHECK-SAME: llvm.mmra = #llvm.mmra_tag<"foo":"bar"> |
| // CHECK: llvm.fence |
| // CHECK-SAME: llvm.mmra = [#llvm.mmra_tag<"amdgpu-synchronize-as":"local">, #llvm.mmra_tag<"foo":"bar">] |
| // CHECK: llvm.store |
| // CHECK-SAME: llvm.mmra = #llvm.mmra_tag<"foo":"bar"> |
| |
| #mmra_tag = #llvm.mmra_tag<"foo":"bar"> |
| |
| llvm.func @native(%x: !llvm.ptr, %y: !llvm.ptr) { |
| %0 = llvm.load %x {llvm.mmra = #mmra_tag} : !llvm.ptr -> i32 |
| llvm.fence syncscope("workgroup-one-as") release |
| {llvm.mmra = [#llvm.mmra_tag<"amdgpu-synchronize-as":"local">, #mmra_tag]} |
| llvm.store %0, %y {llvm.mmra = #llvm.mmra_tag<"foo":"bar">} : i32, !llvm.ptr |
| llvm.return |
| } |
| |
| // ----- |
| |
| // CHECK-LABEL: llvm.func @foreign_op |
| // CHECK: rocdl.load.to.lds |
| // CHECK-SAME: llvm.mmra = #llvm.mmra_tag<"fake":"example"> |
| llvm.func @foreign_op(%g: !llvm.ptr<1>, %l: !llvm.ptr<3>) { |
| rocdl.load.to.lds %g, %l, 4, 0, 0 {llvm.mmra = #llvm.mmra_tag<"fake":"example">} : !llvm.ptr<1> |
| llvm.return |
| } |