逸翎清晗🌈
后端Pass简介——DeadMachineInstructionElim.cpp
DeadMachineInstructionElim 这个 Pass 从名字上看比较好理解,和中端似乎很相似。代码量不大,一百多行。入口我们就不看了,处理流程为: bool DeadMachineInstructionElimImpl::eliminateDeadMI(MachineFunction &MF) { bool AnyChanges = false; // Loop over all instructions in all blocks, from bottom to top, so that it's // more likely that chains of dependent but ultimately dead instructions will // be cleaned up. for (MachineBasicBlock *MBB : post_order(&MF)) { LivePhysRegs.addLiveOuts(*MBB); // Now scan ...
2024编译领域论文
编译领域仅限通用传统编译与 AI 编译大类,不包括量子编译,WebAssembly,不包括编程语言相关 2024编译领域论文 (LLVM) ASPLOS Volume1 Automatic Generation of Vectorizing Compilers for Customizable Digital Signal Processors Volume2 Avoiding Instruction-Centric Microarchitectural Timing Channels Via Binary-Code Transformations Compiling Loop-Based Nested Parallelism for Irregular Workloads Efficient Microsecond-scale Blind Scheduling with Tiny Quanta Lightweight Fault Isolation: Practical, Efficient, and Secure Software Sandboxing METAL: C ...
后端Pass简介——ComplexDeinterleavingPass
ComplexDeinterleavingPass 这个文件 ComplexDeinterleavingPass.cpp 是 LLVM 编译器中的一个优化 pass,专门处理 复杂的向量解交错(complex deinterleaving)。该优化的目的是识别并转换可以通过复杂指令表示的向量操作,特别是处理复数的情况。 这个 Pass 乍看上去根本不知道是干什么的, 所以我们必须搞懂这几个概念: 解交错 复数 shuffle 操作 Deinterleave(解交错):与 shuffle 相反,解交错是将多个交错的向量分离成独立的分量。例如,如果一个向量是 [a1, b1, a2, b2],那么解交错操作可能会将它分离成两个向量 [a1, a2] 和 [b1, b2]。 复合节点:复合节点 是指在图结构中代表一个可以通过一条单独的复杂指令来替代的操作。比如,复合节点表示的是一个操作,可能涉及多个向量的交错和解交错过程,目标是将这些操作合并成一条复合指令,从而避免生成多个低效的指令。 Shuffle(交错):在 SIMD 或向量化的计算中,shuffle 是一种操作,旨在重新排列多个 ...
后端Pass简介——CodeGen
CodeGen 该文件 CodeGen. cpp注册了相关后端 Pass,附属文件: CommandFlags. cpp 定义了相关参数 CodeGenCommonISel.cpp CodeGenPrepare. cpp CodeGenTargetMachineImpl. cpp
个人笔记
408申博笔记
后端Pass简介——CallBrPrepare
CallBrPrepare 这个 Pass 在 IR 级别拆分 callbr 的关键边,并在每个间接目标块开头插入 llvm.callbr.landingpad intrinsic,以便为后端生成时在各条跳转路径上正确地复制并映射返回值。 这个 Pass 不需要调参,但需要 DominatorTreeAnalysis 介入。 这里的“landingpad”有两种常见含义: 在异常处理(C++/LLVM EH)里的 landingpad 语句,用于描述 catch/finally 块的入口。 在这个 callbr pass 里,landingpad 指的是用 llvm.callbr.landingpad intrinsic 人工插入的一个 SSA 值定义点,专门用来在每个间接跳转目标块开头产生 callbr 的返回值副本。 例子: 准备前: entry: %res = callbr i32 asm(...), label %def, [label %tgt1, label %tgt2] def: ; ... 默认目标块 ... tgt1: ; ... 间接跳 ...
后端辅助类——CalcSpillWeights
寄存器辅助类
胶东半岛
后端Pass简介——BreakFalseDeps
一个简单Pass的介绍
后端Pass简介——BranchRelaxation
BranchRelaxtionPass简介
后端Pass简介——BranchFolding
后端Pass,BranchFolding
主流通用大语言模型forCode
来自BigCodeBench的大语言模型排行榜
avatar
💦非常忙碌!
逸翎清晗🌈
Talk is cheap, show me the code.💎
GitHub
公告栏
--- 主域名 ---
www.yangzi.world | yangzi.world
推荐实用资料工具目录
yangzi.world/pages/opensources.html
--- 旅游分享 ---
🍧yangzi.world/iternery/index.html
--- 安卓APP ---
🍧点此下载🍧

最新文章
公开数据
文章数目 :
222
本站总字数 :
46.4w
本站访客数 :
本站总访问量 :
最后更新时间 :
空降评论复制本文地址
随便逛逛昼夜切换关于博客美化设置切换全屏打印页面