mirror of
https://github.com/intel/llvm.git
synced 2026-01-25 10:55:58 +08:00
[mlir][LLVM] Add alignment to LLVMFuncOp
Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D154410
This commit is contained in:
@@ -1648,7 +1648,8 @@ def LLVM_LLVMFuncOp : LLVM_Op<"func", [
|
||||
OptionalAttr<UnitAttr>:$arm_streaming,
|
||||
OptionalAttr<UnitAttr>:$arm_locally_streaming,
|
||||
OptionalAttr<StrAttr>:$section,
|
||||
OptionalAttr<UnnamedAddr>:$unnamed_addr
|
||||
OptionalAttr<UnnamedAddr>:$unnamed_addr,
|
||||
OptionalAttr<I64Attr>:$alignment
|
||||
);
|
||||
|
||||
let regions = (region AnyRegion:$body);
|
||||
|
||||
@@ -1749,6 +1749,9 @@ LogicalResult ModuleImport::processFunction(llvm::Function *func) {
|
||||
if (func->hasComdat())
|
||||
funcOp.setComdatAttr(comdatMapping.lookup(func->getComdat()));
|
||||
|
||||
if (llvm::MaybeAlign maybeAlign = func->getAlign())
|
||||
funcOp.setAlignment(maybeAlign->value());
|
||||
|
||||
// Handle Function attributes.
|
||||
processFunctionAttributes(func, funcOp);
|
||||
|
||||
|
||||
@@ -1044,6 +1044,9 @@ LogicalResult ModuleTranslation::convertFunctionSignatures() {
|
||||
|
||||
if (auto unnamedAddr = function.getUnnamedAddr())
|
||||
llvmFunc->setUnnamedAddr(convertUnnamedAddrToLLVM(*unnamedAddr));
|
||||
|
||||
if (auto alignment = function.getAlignment())
|
||||
llvmFunc->setAlignment(llvm::MaybeAlign(*alignment));
|
||||
}
|
||||
|
||||
return success();
|
||||
|
||||
@@ -207,7 +207,13 @@ module {
|
||||
|
||||
// CHECK-LABEL: local_unnamed_addr @local_unnamed_addr_func
|
||||
llvm.func local_unnamed_addr @local_unnamed_addr_func() {
|
||||
llvm.return
|
||||
llvm.return
|
||||
}
|
||||
|
||||
// CHECK-LABEL: @align_func
|
||||
// CHECK-SAME: attributes {alignment = 2 : i64}
|
||||
llvm.func @align_func() attributes {alignment = 2 : i64} {
|
||||
llvm.return
|
||||
}
|
||||
|
||||
// CHECK: llvm.comdat @__llvm_comdat
|
||||
|
||||
@@ -229,3 +229,17 @@ define void @local_unnamed_addr_func() local_unnamed_addr {
|
||||
|
||||
; CHECK-LABEL: unnamed_addr @unnamed_addr_func
|
||||
declare void @unnamed_addr_func() unnamed_addr
|
||||
|
||||
// -----
|
||||
|
||||
; CHECK-LABEL: @align_func
|
||||
; CHECK-SAME: attributes {alignment = 2 : i64}
|
||||
define void @align_func() align 2 {
|
||||
ret void
|
||||
}
|
||||
|
||||
// -----
|
||||
|
||||
; CHECK-LABEL: @align_decl
|
||||
; CHECK-SAME: attributes {alignment = 64 : i64}
|
||||
declare void @align_decl() align 64
|
||||
|
||||
@@ -1656,6 +1656,20 @@ llvm.func unnamed_addr @unnamed_addr_func()
|
||||
|
||||
// -----
|
||||
|
||||
// CHECK-LABEL: @align_func
|
||||
// CHECK-SAME: align 2
|
||||
llvm.func @align_func() attributes {alignment = 2 : i64} {
|
||||
llvm.return
|
||||
}
|
||||
|
||||
// -----
|
||||
|
||||
// CHECK-LABEL: @align_decl
|
||||
// CHECK-SAME: align 64
|
||||
llvm.func @align_decl() attributes {alignment = 64 : i64}
|
||||
|
||||
// -----
|
||||
|
||||
// CHECK-LABEL: @callFreezeOp
|
||||
llvm.func @callFreezeOp(%x : i32) {
|
||||
// CHECK: freeze i32 %{{[0-9]+}}
|
||||
|
||||
Reference in New Issue
Block a user