File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed
include/mlir/Dialect/EmitC/Transforms
lib/Dialect/EmitC/Transforms Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change 99#ifndef MLIR_DIALECT_EMITC_TRANSFORMS_TYPECONVERSIONS_H
1010#define MLIR_DIALECT_EMITC_TRANSFORMS_TYPECONVERSIONS_H
1111
12+ #include < optional>
13+
1214namespace mlir {
1315class TypeConverter ;
16+ class Type ;
1417void 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
Original file line number Diff line number Diff 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+ }
You can’t perform that action at this time.
0 commit comments