Files
clang-p2996/mlir/test/Target/LLVMIR/test.mlir
Oleksandr "Alex" Zinenko 9519e3ecbf [mlir] support dialect attribute translation to LLVM IR (#75309)
Extend the `amendOperation` mechanism for translating dialect attributes
attached to operations from another dialect when translating MLIR to
LLVM IR. Previously, this mechanism would have no knowledge of the LLVM
IR instructions created for the given operation, making it impossible
for it to perform local modifications such as attaching operation-level
metadata. Collect instructions inserted by the LLVM IR builder and pass
them to `amendOperation`.
2023-12-19 14:18:16 +01:00

43 lines
1.4 KiB
MLIR

// RUN: mlir-translate -test-to-llvmir -split-input-file %s | FileCheck %s
module {
"test.symbol"() <{sym_name = "foo"}> : () -> ()
}
// CHECK-NOT: @sym_from_attr
// CHECK: @foo = external global i32
// CHECK-NOT: @sym_from_attr
// -----
// Make sure that the module attribute is processed before its body, so that the
// `test.symbol` that is created as a result of the `test.discardable_mod_attr`
// attribute is later picked up and translated to LLVM IR.
module attributes {test.discardable_mod_attr = true} {}
// CHECK: @sym_from_attr = external global i32
// -----
// CHECK-LABEL: @dialect_attr_translation
llvm.func @dialect_attr_translation() {
// CHECK: ret void, !annotation ![[MD_ID:.+]]
llvm.return {test.add_annotation}
}
// CHECK: ![[MD_ID]] = !{!"annotation_from_test"}
// -----
// CHECK-LABEL: @dialect_attr_translation_multi
llvm.func @dialect_attr_translation_multi(%a: i64, %b: i64, %c: i64) -> i64 {
// CHECK: add {{.*}}, !annotation ![[MD_ID_ADD:.+]]
// CHECK: mul {{.*}}, !annotation ![[MD_ID_MUL:.+]]
// CHECK: ret {{.*}}, !annotation ![[MD_ID_RET:.+]]
%ab = llvm.add %a, %b {test.add_annotation = "add"} : i64
%r = llvm.mul %ab, %c {test.add_annotation = "mul"} : i64
llvm.return {test.add_annotation = "ret"} %r : i64
}
// CHECK-DAG: ![[MD_ID_ADD]] = !{!"annotation_from_test: add"}
// CHECK-DAG: ![[MD_ID_MUL]] = !{!"annotation_from_test: mul"}
// CHECK-DAG: ![[MD_ID_RET]] = !{!"annotation_from_test: ret"}