Skip to content

Commit 86fd3f7

Browse files
committed
[AutoBump] Merge with fixes of 3cead57 (Jun 17)
2 parents 7e79490 + 3cead57 commit 86fd3f7

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

mlir/include/mlir/Dialect/EmitC/Transforms/TypeConversions.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,18 @@
99
#ifndef MLIR_DIALECT_EMITC_TRANSFORMS_TYPECONVERSIONS_H
1010
#define MLIR_DIALECT_EMITC_TRANSFORMS_TYPECONVERSIONS_H
1111

12+
#include <optional>
13+
1214
namespace mlir {
1315
class TypeConverter;
16+
class Type;
1417
void populateEmitCSizeTTypeConversions(TypeConverter &converter);
1518

19+
namespace emitc {
20+
std::optional<Type> getUnsignedTypeFor(Type ty);
21+
std::optional<Type> getSignedTypeFor(Type ty);
22+
} // namespace emitc
23+
1624
} // namespace mlir
1725

1826
#endif // MLIR_DIALECT_EMITC_TRANSFORMS_TYPECONVERSIONS_H

mlir/lib/Dialect/EmitC/Transforms/TypeConversions.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,28 @@ void mlir::populateEmitCSizeTTypeConversions(TypeConverter &converter) {
3737
converter.addTargetMaterialization(materializeAsUnrealizedCast);
3838
converter.addArgumentMaterialization(materializeAsUnrealizedCast);
3939
}
40+
41+
/// Get an unsigned integer or size data type corresponding to \p ty.
42+
std::optional<Type> mlir::emitc::getUnsignedTypeFor(Type ty) {
43+
if (ty.isInteger())
44+
return IntegerType::get(ty.getContext(), ty.getIntOrFloatBitWidth(),
45+
IntegerType::SignednessSemantics::Unsigned);
46+
if (isa<PtrDiffTType, SignedSizeTType>(ty))
47+
return SizeTType::get(ty.getContext());
48+
if (isa<SizeTType>(ty))
49+
return ty;
50+
return {};
51+
}
52+
53+
/// Get a signed integer or size data type corresponding to \p ty that supports
54+
/// arithmetic on negative values.
55+
std::optional<Type> mlir::emitc::getSignedTypeFor(Type ty) {
56+
if (ty.isInteger())
57+
return IntegerType::get(ty.getContext(), ty.getIntOrFloatBitWidth(),
58+
IntegerType::SignednessSemantics::Signed);
59+
if (isa<SizeTType, SignedSizeTType>(ty))
60+
return PtrDiffTType::get(ty.getContext());
61+
if (isa<PtrDiffTType>(ty))
62+
return ty;
63+
return {};
64+
}

0 commit comments

Comments
 (0)