compiler
文章平均质量分 91
displayMessage
I have a small sister,she is very cute
展开
-
LLVM-High Level Structure-Global Variables
全局变量区的内存分配是在编译时期而不是运行时。 必须初始化全局变量定义。 可以声明其他转换单元中的全局变量,在这种情况下,它们没有初始化器。 全局变量可以选择指定链接类型(linkage type)。 全局变量的定义或声明都放置在明确段,并且可能指定了可选的对齐方式。如果全局变量声明的显式或推断段信息与定义不匹配,其结果是未定义的。 一个表示全局常量(constant)的变量意味着该变量的内容不会被修改(比较好的实现是将这种全局数据放进可执行文件的只读段)。请注意,需要运行时初始化的翻译 2021-06-24 17:04:58 · 312 阅读 · 0 评论 -
MLIR-Code Doc-Operation Definition Specification(ODS)
除了mlir::OpC++模板特化的方式,MLIR也支持表驱动的方式去定义操作和数据类型。它的实现是通过TableGen(LLVM 中有介绍),TableGen即是一种通用语言,也是维护特定领域信息记录的工具。与操作相关的事实被精确地指定到TableGen记录中,TableGen记录将在编译器构建时展开为等价的mlir::Op c++模板特化。 本手册详细解释了以这种表驱动方式定义操作的所有可用机制。它的目标是成为一个规范而不是教程。后者请参考Quickstart tutorial to addin翻译 2021-06-17 08:37:45 · 1077 阅读 · 1 评论 -
MLIR-Documentation-Conversion to the LLVM Dialect
点点点翻译 2021-05-30 21:24:00 · 763 阅读 · 1 评论 -
MLIR-Code Doc-Tutorials-Defining Dialect Attributes & Types
本文档是为了快速入门方言对MLIR的属性与类型系统的特定扩展。虽然本教学的主要内容集中在对类型的定义,但是对于定于属性来讲,这些指令几乎是相同的。类型(Types) MLIR中的类型(包括 属性,位置,和其他很多东西)都是值类型。这意味着Type的示例是按值传递的,而不是按指针或者引用传递。Typeclass1本身充当内部存储对象的包装器,这个存储对象在一个MLIRContext实例中是唯一的。定义Type类(Defining the type class) 根据上面的描述,Type对象在M翻译 2021-05-30 09:52:01 · 495 阅读 · 0 评论 -
MLIR-Tutorials-Toy Tutorial
玩具语言教程(Toy Tutorial)第七章:向玩具语言增加一个复合类型(Chapter 7: Adding a Composite Type to Toy)总结 在前一章中,我们展示了从Toy语言的编译前端到LLVM IR的端到端编译流。在本章中,我们将扩展Toy语言以支持新的复合结构类型(struct)。在Toy中定义一个struct(Defining a struct in Toy) 首先,我们需要定义这种类型在Toy源语言中的接口。通常struct类型的语法如下:# A struc翻译 2021-05-30 09:34:54 · 545 阅读 · 0 评论 -
MLIR-Code Documentation-Pass Infrastructure(Pass基础设施)
代码文档Pass基础设施Pass管理器上面的章节介绍了不同类型的Pass和它们的不变量。本章节介绍Pass管理器的概念,与怎样使用它配置和调度一个Pass管道。与Pass管理器相关的主要有两个类,PassManager与OpPassManager。PassManager类充当最上层的入口点,包含整个Pass管道要用的各种各样的配置。OpPassManager类用于调度Pass运行在指定的嵌套等级。最上层的PassManager也可以作为OpPassManager。OpPassManagerOpPa翻译 2021-05-11 18:50:59 · 1212 阅读 · 0 评论