diff options
author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2025-03-05 11:27:01 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-05 11:27:01 -0800 |
commit | 2bbe30bf358e369b5262aac7608f3704fc66c58b (patch) | |
tree | e6a41d84c67d715b94fccaab6a68a83178f9cdf5 /mlir/lib/Target/LLVMIR/ModuleImport.cpp | |
parent | 35622a93bb034ad5c56e3a490060648b35ba49f1 (diff) | |
download | llvm-2bbe30bf358e369b5262aac7608f3704fc66c58b.zip llvm-2bbe30bf358e369b5262aac7608f3704fc66c58b.tar.gz llvm-2bbe30bf358e369b5262aac7608f3704fc66c58b.tar.bz2 |
[MLIR][LLVMIR] llvm.call_intrinsic: support operand/result attributes (#129640)
Basically catch up with llvm.call and add support for translate and
import to LLVM IR.
This PR is split into two commits in case it's easier to review the
refactoring part, which comes first (happy to split the PR if
necessary).
---------
Co-authored-by: Tobias Gysi <tobias.gysi@nextsilicon.com>
Diffstat (limited to 'mlir/lib/Target/LLVMIR/ModuleImport.cpp')
-rw-r--r-- | mlir/lib/Target/LLVMIR/ModuleImport.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/mlir/lib/Target/LLVMIR/ModuleImport.cpp b/mlir/lib/Target/LLVMIR/ModuleImport.cpp index 7ea82f6..2d3c0ef 100644 --- a/mlir/lib/Target/LLVMIR/ModuleImport.cpp +++ b/mlir/lib/Target/LLVMIR/ModuleImport.cpp @@ -2213,7 +2213,8 @@ void ModuleImport::convertParameterAttributes(llvm::Function *func, } void ModuleImport::convertParameterAttributes(llvm::CallBase *call, - CallOpInterface callOp, + ArrayAttr &argsAttr, + ArrayAttr &resAttr, OpBuilder &builder) { llvm::AttributeList llvmAttrs = call->getAttributes(); SmallVector<llvm::AttributeSet> llvmArgAttrsSet; @@ -2233,14 +2234,23 @@ void ModuleImport::convertParameterAttributes(llvm::CallBase *call, SmallVector<DictionaryAttr> argAttrs; for (auto &llvmArgAttrs : llvmArgAttrsSet) argAttrs.emplace_back(convertParameterAttribute(llvmArgAttrs, builder)); - callOp.setArgAttrsAttr(getArrayAttr(argAttrs)); + argsAttr = getArrayAttr(argAttrs); } llvm::AttributeSet llvmResAttr = llvmAttrs.getRetAttrs(); if (!llvmResAttr.hasAttributes()) return; DictionaryAttr resAttrs = convertParameterAttribute(llvmResAttr, builder); - callOp.setResAttrsAttr(getArrayAttr({resAttrs})); + resAttr = getArrayAttr({resAttrs}); +} + +void ModuleImport::convertParameterAttributes(llvm::CallBase *call, + CallOpInterface callOp, + OpBuilder &builder) { + ArrayAttr argsAttr, resAttr; + convertParameterAttributes(call, argsAttr, resAttr, builder); + callOp.setArgAttrsAttr(argsAttr); + callOp.setResAttrsAttr(resAttr); } template <typename Op> |