mlir 编译器学习笔记之十 -- 数据类型

1、MLIR区分三种整数类型

IntegerType::get(context, 32, IntegerType::Signless); // 简写IntegerType::get(context, 32)

IntegerType::get(context, 32, IntegerType::Signed);

IntegerType::get(context, 32, IntegerType::Unsigned);

在 mlir/include/mlir/IR/BuiltinTypes.td中定义,所以td中i32/si32/ui32 是三种不同的数据类型

在开源CppEmitter::shouldMapToUnsigned中定义映射,Signless保存和Signed一致

在 mlir/include/mlir/Dialect/Arith/IR/ArithOps.td中Arith_IndexCastOp仅支持不带符号信息的数据类型SignlessInteger

2、自定义结构图类型:

hlc.struct_def @DemoKernelL1dAddr {

"totalBytes" : i32,

"bdAddrBase" : i32,

"buffer0" : i64,

"buffer1" : i64

}

hlc.struct_def @DemoKernelPara {

"l1dAddr" : !hlc.struct<@DemoKernelL1dAddr>

}

在主函数中需要将分离的参数和结构体进行绑定:结构体存储的是地址,get_field 取出地址,pointer_cast 转换为内存视图

3、MLIR 的 arith 方言只允许 i64(signless)

可以通过增加属性 constOp->setAttr("xxx", UnitAttr::get(rewriter.getContext())); 做区分

相关推荐
前进的李工5 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
正在走向自律7 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
蒸蒸yyyyzwd7 小时前
后端学习笔记三个知识
笔记·八股
CCIE-Yasuo8 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga9 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
Zhao-Jichao9 小时前
AI Prompting for Everyone 课程笔记 - P19 数据分析 Data Analysis
人工智能·笔记·数据分析
li星野10 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光10 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
ACP广源盛1392462567310 小时前
选型笔记:Type‑C 扩展坞方案评估|DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP
笔记·硬件架构·硬件工程·视频·国产芯片
WEI_YANG_JU11 小时前
初中数学教学中合作学习的研究与实践
学习