[Mlir-commits] [mlir] ec92f78 - [mlir][emitc] Print signed integers properly
Marius Brehler
llvmlistbot at llvm.org
Mon Sep 13 08:29:50 PDT 2021
Author: Simon Camphausen
Date: 2021-09-13T15:29:30Z
New Revision: ec92f788f34373eafb8b1663245a6ab425405abb
URL: https://github.com/llvm/llvm-project/commit/ec92f788f34373eafb8b1663245a6ab425405abb
DIFF: https://github.com/llvm/llvm-project/commit/ec92f788f34373eafb8b1663245a6ab425405abb.diff
LOG: [mlir][emitc] Print signed integers properly
Previously negative integers were printed as large unsigned values.
Reviewed By: marbre
Differential Revision: https://reviews.llvm.org/D109690
Added:
Modified:
mlir/lib/Target/Cpp/TranslateToCpp.cpp
mlir/test/Target/Cpp/const.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Target/Cpp/TranslateToCpp.cpp b/mlir/lib/Target/Cpp/TranslateToCpp.cpp
index 924c60828dbba..aae254a14459c 100644
--- a/mlir/lib/Target/Cpp/TranslateToCpp.cpp
+++ b/mlir/lib/Target/Cpp/TranslateToCpp.cpp
@@ -677,14 +677,16 @@ bool CppEmitter::hasBlockLabel(Block &block) {
}
LogicalResult CppEmitter::emitAttribute(Location loc, Attribute attr) {
- auto printInt = [&](APInt val, bool isSigned) {
+ auto printInt = [&](APInt val, bool isUnsigned) {
if (val.getBitWidth() == 1) {
if (val.getBoolValue())
os << "true";
else
os << "false";
} else {
- val.print(os, isSigned);
+ SmallString<128> strValue;
+ val.toString(strValue, 10, !isUnsigned, false);
+ os << strValue;
}
};
diff --git a/mlir/test/Target/Cpp/const.mlir b/mlir/test/Target/Cpp/const.mlir
index 15438249b1f58..c9c24d3f15580 100644
--- a/mlir/test/Target/Cpp/const.mlir
+++ b/mlir/test/Target/Cpp/const.mlir
@@ -5,22 +5,34 @@
func @emitc_constant() {
%c0 = "emitc.constant"(){value = #emitc.opaque<""> : i32} : () -> i32
%c1 = "emitc.constant"(){value = 42 : i32} : () -> i32
- %c2 = "emitc.constant"(){value = #emitc.opaque<""> : !emitc.opaque<"int32_t*">} : () -> !emitc.opaque<"int32_t*">
- %c3 = "emitc.constant"(){value = #emitc.opaque<"NULL"> : !emitc.opaque<"int32_t*">} : () -> !emitc.opaque<"int32_t*">
+ %c2 = "emitc.constant"(){value = -1 : i32} : () -> i32
+ %c3 = "emitc.constant"(){value = -1 : si8} : () -> si8
+ %c4 = "emitc.constant"(){value = 255 : ui8} : () -> ui8
+ %c5 = "emitc.constant"(){value = #emitc.opaque<""> : !emitc.opaque<"int32_t*">} : () -> !emitc.opaque<"int32_t*">
+ %c6 = "emitc.constant"(){value = #emitc.opaque<"NULL"> : !emitc.opaque<"int32_t*">} : () -> !emitc.opaque<"int32_t*">
return
}
// CPP-DEFAULT: void emitc_constant() {
// CPP-DEFAULT-NEXT: int32_t [[V0:[^ ]*]];
// CPP-DEFAULT-NEXT: int32_t [[V1:[^ ]*]] = 42;
-// CPP-DEFAULT-NEXT: int32_t* [[V2:[^ ]*]];
-// CPP-DEFAULT-NEXT: int32_t* [[V3:[^ ]*]] = NULL;
+// CPP-DEFAULT-NEXT: int32_t [[V2:[^ ]*]] = -1;
+// CPP-DEFAULT-NEXT: int8_t [[V3:[^ ]*]] = -1;
+// CPP-DEFAULT-NEXT: uint8_t [[V4:[^ ]*]] = 255;
+// CPP-DEFAULT-NEXT: int32_t* [[V5:[^ ]*]];
+// CPP-DEFAULT-NEXT: int32_t* [[V6:[^ ]*]] = NULL;
// CPP-DECLTOP: void emitc_constant() {
// CPP-DECLTOP-NEXT: int32_t [[V0:[^ ]*]];
// CPP-DECLTOP-NEXT: int32_t [[V1:[^ ]*]];
-// CPP-DECLTOP-NEXT: int32_t* [[V2:[^ ]*]];
-// CPP-DECLTOP-NEXT: int32_t* [[V3:[^ ]*]];
+// CPP-DECLTOP-NEXT: int32_t [[V2:[^ ]*]];
+// CPP-DECLTOP-NEXT: int8_t [[V3:[^ ]*]];
+// CPP-DECLTOP-NEXT: uint8_t [[V4:[^ ]*]];
+// CPP-DECLTOP-NEXT: int32_t* [[V5:[^ ]*]];
+// CPP-DECLTOP-NEXT: int32_t* [[V6:[^ ]*]];
// CPP-DECLTOP-NEXT: ;
// CPP-DECLTOP-NEXT: [[V1]] = 42;
+// CPP-DECLTOP-NEXT: [[V2]] = -1;
+// CPP-DECLTOP-NEXT: [[V3]] = -1;
+// CPP-DECLTOP-NEXT: [[V4]] = 255;
// CPP-DECLTOP-NEXT: ;
-// CPP-DECLTOP-NEXT: [[V3]] = NULL;
+// CPP-DECLTOP-NEXT: [[V6]] = NULL;
More information about the Mlir-commits
mailing list