[Mlir-commits] [mlir] 1c777ab - [MLIR] Switch llvm.noalias to a unit attribute
Uday Bondhugula
llvmlistbot at llvm.org
Tue May 11 03:11:34 PDT 2021
Author: Uday Bondhugula
Date: 2021-05-11T15:41:09+05:30
New Revision: 1c777ab459d7ee181d7aba62af8bc35a572a2290
URL: https://github.com/llvm/llvm-project/commit/1c777ab459d7ee181d7aba62af8bc35a572a2290
DIFF: https://github.com/llvm/llvm-project/commit/1c777ab459d7ee181d7aba62af8bc35a572a2290.diff
LOG: [MLIR] Switch llvm.noalias to a unit attribute
Switch llvm.noalias attribute from a boolean attribute to a unit
attribute.
Differential Revision: https://reviews.llvm.org/D102225
Added:
Modified:
mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
mlir/test/Dialect/LLVMIR/func.mlir
mlir/test/Dialect/LLVMIR/invalid.mlir
mlir/test/Target/LLVMIR/llvmir-invalid.mlir
mlir/test/Target/LLVMIR/llvmir.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
index 12e6ccc28aa42..9c7fb42bf2d65 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
@@ -2306,11 +2306,11 @@ LogicalResult LLVMDialect::verifyRegionArgAttribute(Operation *op,
unsigned regionIdx,
unsigned argIdx,
NamedAttribute argAttr) {
- // Check that llvm.noalias is a boolean attribute.
+ // Check that llvm.noalias is a unit attribute.
if (argAttr.first == LLVMDialect::getNoAliasAttrName() &&
- !argAttr.second.isa<BoolAttr>())
+ !argAttr.second.isa<UnitAttr>())
return op->emitError()
- << "llvm.noalias argument attribute of non boolean type";
+ << "expected llvm.noalias argument attribute to be a unit attribute";
// Check that llvm.align is an integer attribute.
if (argAttr.first == LLVMDialect::getAlignAttrName() &&
!argAttr.second.isa<IntegerAttr>())
diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
index 7aa2ffda248e2..cc4a62ff55974 100644
--- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
@@ -558,7 +558,7 @@ LogicalResult ModuleTranslation::convertOneFunction(LLVMFuncOp func) {
llvm::Argument &llvmArg = std::get<1>(kvp);
BlockArgument mlirArg = std::get<0>(kvp);
- if (auto attr = func.getArgAttrOfType<BoolAttr>(
+ if (auto attr = func.getArgAttrOfType<UnitAttr>(
argIdx, LLVMDialect::getNoAliasAttrName())) {
// NB: Attribute already verified to be boolean, so check if we can indeed
// attach the attribute to this argument, based on its type.
@@ -566,8 +566,7 @@ LogicalResult ModuleTranslation::convertOneFunction(LLVMFuncOp func) {
if (!argTy.isa<LLVM::LLVMPointerType>())
return func.emitError(
"llvm.noalias attribute attached to LLVM non-pointer argument");
- if (attr.getValue())
- llvmArg.addAttr(llvm::Attribute::AttrKind::NoAlias);
+ llvmArg.addAttr(llvm::Attribute::AttrKind::NoAlias);
}
if (auto attr = func.getArgAttrOfType<IntegerAttr>(
diff --git a/mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir b/mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
index e09707c766979..82dddeb962cc5 100644
--- a/mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
+++ b/mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
@@ -2,8 +2,8 @@
// RUN: mlir-opt -convert-std-to-llvm='use-bare-ptr-memref-call-conv=1' -split-input-file %s | FileCheck %s --check-prefix=BAREPTR
// BAREPTR-LABEL: func @check_noalias
-// BAREPTR-SAME: %{{.*}}: !llvm.ptr<f32> {llvm.noalias = true}, %{{.*}}: !llvm.ptr<f32> {llvm.noalias = true}
-func @check_noalias(%static : memref<2xf32> {llvm.noalias = true}, %other : memref<2xf32> {llvm.noalias = true}) {
+// BAREPTR-SAME: %{{.*}}: !llvm.ptr<f32> {llvm.noalias}, %{{.*}}: !llvm.ptr<f32> {llvm.noalias}
+func @check_noalias(%static : memref<2xf32> {llvm.noalias}, %other : memref<2xf32> {llvm.noalias}) {
return
}
diff --git a/mlir/test/Dialect/LLVMIR/func.mlir b/mlir/test/Dialect/LLVMIR/func.mlir
index e52acf67745ca..48a6609494363 100644
--- a/mlir/test/Dialect/LLVMIR/func.mlir
+++ b/mlir/test/Dialect/LLVMIR/func.mlir
@@ -31,11 +31,11 @@ module {
// GENERIC-SAME: () -> ()
}) {sym_name = "baz", type = !llvm.func<i64 (i64)>} : () -> ()
- // CHECK: llvm.func @qux(!llvm.ptr<i64> {llvm.noalias = true}, i64)
+ // CHECK: llvm.func @qux(!llvm.ptr<i64> {llvm.noalias}, i64)
// CHECK: attributes {xxx = {yyy = 42 : i64}}
"llvm.func"() ({
}) {sym_name = "qux", type = !llvm.func<void (ptr<i64>, i64)>,
- arg_attrs = [{llvm.noalias = true}, {}], xxx = {yyy = 42}} : () -> ()
+ arg_attrs = [{llvm.noalias}, {}], xxx = {yyy = 42}} : () -> ()
// CHECK: llvm.func @roundtrip1()
llvm.func @roundtrip1()
@@ -69,20 +69,20 @@ module {
// CHECK: llvm.func @roundtrip8() -> i32
llvm.func @roundtrip8() -> i32 attributes {}
- // CHECK: llvm.func @roundtrip9(!llvm.ptr<i32> {llvm.noalias = true})
- llvm.func @roundtrip9(!llvm.ptr<i32> {llvm.noalias = true})
+ // CHECK: llvm.func @roundtrip9(!llvm.ptr<i32> {llvm.noalias})
+ llvm.func @roundtrip9(!llvm.ptr<i32> {llvm.noalias})
- // CHECK: llvm.func @roundtrip10(!llvm.ptr<i32> {llvm.noalias = true})
- llvm.func @roundtrip10(%arg0: !llvm.ptr<i32> {llvm.noalias = true})
+ // CHECK: llvm.func @roundtrip10(!llvm.ptr<i32> {llvm.noalias})
+ llvm.func @roundtrip10(%arg0: !llvm.ptr<i32> {llvm.noalias})
- // CHECK: llvm.func @roundtrip11(%{{.*}}: !llvm.ptr<i32> {llvm.noalias = true}) {
- llvm.func @roundtrip11(%arg0: !llvm.ptr<i32> {llvm.noalias = true}) {
+ // CHECK: llvm.func @roundtrip11(%{{.*}}: !llvm.ptr<i32> {llvm.noalias}) {
+ llvm.func @roundtrip11(%arg0: !llvm.ptr<i32> {llvm.noalias}) {
llvm.return
}
- // CHECK: llvm.func @roundtrip12(%{{.*}}: !llvm.ptr<i32> {llvm.noalias = true})
+ // CHECK: llvm.func @roundtrip12(%{{.*}}: !llvm.ptr<i32> {llvm.noalias})
// CHECK: attributes {foo = 42 : i32}
- llvm.func @roundtrip12(%arg0: !llvm.ptr<i32> {llvm.noalias = true})
+ llvm.func @roundtrip12(%arg0: !llvm.ptr<i32> {llvm.noalias})
attributes {foo = 42 : i32} {
llvm.return
}
diff --git a/mlir/test/Dialect/LLVMIR/invalid.mlir b/mlir/test/Dialect/LLVMIR/invalid.mlir
index 4c62f38a4af2c..0908afafd1ab8 100644
--- a/mlir/test/Dialect/LLVMIR/invalid.mlir
+++ b/mlir/test/Dialect/LLVMIR/invalid.mlir
@@ -1,6 +1,6 @@
// RUN: mlir-opt -allow-unregistered-dialect %s -split-input-file -verify-diagnostics
-// expected-error at +1{{llvm.noalias argument attribute of non boolean type}}
+// expected-error at +1{{expected llvm.noalias argument attribute to be a unit attribute}}
func @invalid_noalias(%arg0: i32 {llvm.noalias = 3}) {
"llvm.return"() : () -> ()
}
diff --git a/mlir/test/Target/LLVMIR/llvmir-invalid.mlir b/mlir/test/Target/LLVMIR/llvmir-invalid.mlir
index 1f3bcdf9ddf36..045aafb3598c9 100644
--- a/mlir/test/Target/LLVMIR/llvmir-invalid.mlir
+++ b/mlir/test/Target/LLVMIR/llvmir-invalid.mlir
@@ -8,7 +8,7 @@ func @foo() {
// -----
// expected-error @+1 {{llvm.noalias attribute attached to LLVM non-pointer argument}}
-llvm.func @invalid_noalias(%arg0 : f32 {llvm.noalias = true}) -> f32 {
+llvm.func @invalid_noalias(%arg0 : f32 {llvm.noalias}) -> f32 {
llvm.return %arg0 : f32
}
diff --git a/mlir/test/Target/LLVMIR/llvmir.mlir b/mlir/test/Target/LLVMIR/llvmir.mlir
index 2b59893d085c9..db40733d41e23 100644
--- a/mlir/test/Target/LLVMIR/llvmir.mlir
+++ b/mlir/test/Target/LLVMIR/llvmir.mlir
@@ -952,7 +952,7 @@ llvm.func @cond_br_arguments(%arg0: i1, %arg1: i1) {
}
// CHECK-LABEL: define void @llvm_noalias(float* noalias {{%*.}})
-llvm.func @llvm_noalias(%arg0: !llvm.ptr<f32> {llvm.noalias = true}) {
+llvm.func @llvm_noalias(%arg0: !llvm.ptr<f32> {llvm.noalias}) {
llvm.return
}
More information about the Mlir-commits
mailing list