15 snsn1984

尚未进行身份认证

专注技术,专注管理。

等级
TA的排名 2k+

LLVM每日谈之五十六 从RegionPass看Region

RegionPass是Pass的一个子类,和其他Pass的子类(ModulePass、FunctionPass、LoopPass、BasicBlockPass)一样,都是同样的一个模式:运行在每一个XX之上。(注:这里的XX代表着这几个Pass的针对的对象,每个都不同。FunctionPass运行在每一个Function之上,RegionPass运行在每一个Region之上。其他同样)但是...

2019-06-15 23:49:18

[技术论坛]6月22日HelloLLVM上海线下聚会

HelloLLVM和HelloGCC社区将在2019年6月22日(周六)在上海聚会。聚会内容包含(但不限于):MLIR是什么,要学么? 近期的编译领域的八卦 TVMStack前景如何?现在入还来得及么? 如何吸引新人参与GCC开发? 闪电演讲(现场排队)时间暂定为6月22日周六下午3点到6点,地点暂定为张江高科地铁站旁的vπ咖啡。本次活动采取报名制,感兴趣的同学和...

2019-06-15 21:59:24

LLVM每日谈之五十五 浅谈对Pass的错误认知及其原因

Pass作为LLVM的一个重要的组成部分,在LLVMIR层面和LLVMBackend层面都发挥了重要的作用。很多LLVM的使用者容易将Pass理解为LLVMIR层面的analysis和transform,而忽略了Pass在LLVMBackend层面的作用。而实际上,Pass在LLVMBackend层面发挥的作用一点都不小。以后端的结构为例:Notes:《GettingStar...

2019-06-15 21:58:35

LLVM每日谈之五十四 新建后端的第二步校正(register set)

新建后端的七大步骤,在前文《LLVM后端文档解析》中进行过介绍。我们在《创建一个LLVM新后端的第一步中文档与代码的差异》和《TargetRegistration的更正》中,已经列出了现有文档中第一步“CreateasubclassoftheTargetMachineclassthatdescribescharacteristicsofyourtargetmachine...

2019-06-15 21:57:33

LLVM每日谈之五十三 Target Registration的更正

前文:创建一个LLVM新后端的第一步中文档与代码的差异主要是为新后端实现了一个TargetMachine,这是新建后端七个步骤的第一步。在这个步骤之后,还有一个隐含的内容,那就是将这个Target注册,好让其它的LLVM工具可以在运行时使用你新建的target。LLVM的官方文档中,以Sparc为例,做了举例:和实际上,代码变动已经很大了。目前的Target的注册的代...

2019-06-15 21:56:16

LLVM每日谈之五十二 创建LLVM后端的第一步校正(target machine)

根据LLVM文档《WritinganLLVMBackend》可知道,LLVM新建一个后端需要七大步骤。前文对七大步骤和文档中其他的结构的关系也做了简单的分析。后续会逐步分析新建后端的七大步骤,并以RISC-V为目标平台,结合RISC-V的LLVM后端代码进行分析。另外,由于《WritinganLLVMBackend》中有一部分内容已经和代码完全脱钩,所以我通常会列出文档的要求,然后...

2019-06-15 21:55:08

Modern source-to-source transformation with Clang and libTooling

原文地址:https://eli.thegreenplace.net/2014/05/01/modern-source-to-source-transformation-with-clang-and-libtooling/IcoupleofyearsagoIpublishedablogpostnamedBasicsource-to-sourcetransformati...

2019-05-19 18:06:04

[技术论坛] 5月25日 HelloLLVM 北京线下:我们又双叒叕聚了

HelloLLVM与HelloGCC社区计划于2019年5月25日举办线下聚会。本次聚会的内容有:丰富的茶歇(感谢金牌赞助商重德智能。硬广:他们提供工具链外包服务,有需求的话可以到时候在聚会现场直接找他们聊) 话题讨论:「大神们又在搞事情系列」之MLIR是什么,要学么? 技术分享:深度学习中的注意力模型如何应用于漏洞挖掘 话题讨论:TVMStack前景如何?现在入还来得及...

2019-05-19 12:18:33

LLVM每日谈之五十一 TargetMachine

TargetMachine及其子类:前文介绍了TargetMachine类,我们这篇文章简单分析下TargetMachine类及其子类。TargetMachine类位于include/llvm/Target/TargetMachine.h文件之中。TargetMachine类作为获取目标机器相关信息的入口,作为目标机器类的父类,并不是直接被具体平台的TargetMachine类所继承的,...

2019-05-19 12:17:29

LLVM每日谈之五十 LLVM 后端文档解析3 —目标描述类

前文理清楚了六大部分、七大环节和七大步骤的对应关系。那么我们接下来要深入的去分析:Targetdescriptionclasses:abstracttargetdescriptioninterfaces(代码地址:include/llvm/Target/)。Targetdescriptionclasses的特点主要有以下几点:1、Targetdescriptioncl...

2019-05-19 12:16:24

LLVM每日谈之四十九 LLVM后端文档解析2

前文讲了七大环节和六大部分之间的对应关系,简单来讲就是七大环节其实对应了六大部分的第四个部分:Target-independentcodegenerationalgorithms(代码地址:lib/CodeGen)。我们接下里再看看新建后端的时候,所做的七大步骤,对应的是LLVM后端的六大部分的哪一部分。我们首先对六大部分进行裁剪。后端的六大部分:Targetdescript...

2019-05-19 12:15:37

LLVM每日谈之四十八 LLVM后端文档解析1

之前在LLVM每日谈之四十七LLVM后端文档解析中,介绍了后端文档中提到关于后端的六大模块、七大环节和七个步骤。前文也提到过,它们是从不同的维度去解析LLVM的后端,不同维度之间是存在各种各样的交叉关系的。在这里,简单对于三者的关系进行解析。六大模块中第四个模块Target-independentcodegenerationalgorithms(代码地址:lib/CodeGen)...

2019-05-19 12:14:44

LLVM每日谈之四十七 LLVM后端文档解析

去年在HelloLLVM杭州站的活动中,我做了一个分享:LLVM后端简介。主要是从LLVM后端的几大环节上展开,简单介绍了LLVM后端。在新的芯片和指令集大火的今天,为LLVM添加一个新的后端,也成了大家比较关注的热点。LLVM官方提供了两个关于后端的官方文档:1、TheLLVMTarget-IndependentCodeGenerator2、WritinganLLVM...

2019-05-13 23:25:45

LLVM每日谈之四十六 MLIR

在2019EuropeanLLVMdevelopers'meeting上,TatianaShpeisman(Google),ChrisLattner(Google)一起做了《MLIR:Multi-LevelIntermediateRepresentationforCompilerInfrastructure》的keynote,对于了解MLIR有很大的帮助。PPT...

2019-05-13 23:24:22

LLVM每日谈之四十五 LLVM IR TUTORIAL

今年的LLVM欧洲开发者会议上,在Tutorials环节,VinceBridgers(IntelCorporation),FelipedeAzevedoPiovezan(IntelCorporation)做了名为《LLVMIRTutorial-Phis,GEPsandotherthings,ohmy!》的报告。这个报告面向没有LLVMIR基础的用户对LLVM...

2019-05-01 21:13:07

LLVM每日谈之四十四 LLVM的别名分析

别名分析是试图决定两个指针是否指向同一块内存的一类技术,这类技术有很多种不同的算法和方法。所以,别名分析也常常被称作是指针分析。别名分析通常会返回是别名、或许是别名和不是别名等几种情况。LLVM别名分析的核心是AliasAnalysis类。这个类提供了用户或者是LLVM系统内部使用别名分析所需要的接口。AliasAnalysis类的代码在llvm/lib/Analysis/目录下有AliasA...

2019-04-29 12:07:20

LLVM每日谈之四十三 LLVM的utility pass

LLVM的pass是LLVM优化的核心,除了我们经常谈到的analysispass和transformpass,还有一类pass叫做utilitypass(以LLVM8.0.0为例)。utilitypass这一类pass主要是无法按照analysispass和transformpass进行分类的pass。因为analysispass和transformpass的界限很明显,前者...

2019-04-28 10:21:01

LLVM每日谈之四十二 一个添加pass的实例

总会有LLVM的学习者问怎么添加一个pass实例。我之前写过的一个简单的文档,但是间隔时间太久,LLVM更新很大,已经不具有实际的指导作用。这次举一个新提交的patch为例子,可以清晰的看到如何在LLVM之中添加一个pass。rL358607​reviews.llvm.org这个patch为LLVM添加了一个基本的loop融合pass。可以参照这个patch在最新的LLVM之中添加自己...

2019-04-26 17:38:04

LLVM每日谈之四十一 组装一个完整的工具链

写在前面的话:这是一篇LLVM的官方文档,英文文档地址:AssemblingaCompleteToolchain之前读文档的时候,陆陆续续的翻译过一些,周末花了点时间把这个文章整理了出来。因为都是随手翻的,翻译完了之后,也不愿意再花时间去斟酌,所以有不少用词都不那么严谨。LLVM的官方文档很详细,有什么需要最好是直接读官方的英文文档。这个自己随便翻译的文档放出来,是希望能给有些不...

2019-01-13 21:54:32

LLVM每日谈之四十 一门介绍LLVM的课程

最近看到了UFMG的DCC888课程。在这里分享给大家,有需要的可以自己看看,个人感觉非常不错。DCC888课程,主要是关于程序分析和优化的,其主要的内容如下图所示:本身这门课程的内容,就是编译器相关课程。这门课程在后半部分,有一个关于LLVM的子课程,非常适合入门的学习,其内容主要如下:基本上覆盖了LLVM刚入门会需要用到的几个方面。而且,因为是个小课程,相关的基础介绍以及连...

2019-01-11 11:45:06

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。