逸翎清晗🌈
Useful Linux Commands & Tools
实用linux命令大全(周更)
RISC-V ISA
对RISC-V扩展指令集架构的介绍
后端Pass简介——DroppedVariableStatsMIR
DroppedVariableStatsMIR 这个 Pass 比较简单但重要!是 LLVM 后端的一个统计工具,它在每个机器级优化或代码生成阶段前后对比收集到的调试变量信息,记录因各类转换或优化而被丢弃(Dropped)的 DBG_VALUE 指令数量,并将这些丢失统计结果输出。 为什么要这么做 确保调试质量:优化虽能提升性能,却往往会重排或删除部分中间变量的映射指令,导致调试器无法正确显示源代码中的变量值。 回归检测:通过自动化统计,可以在引入新优化 Pass 时,及时发现是否有过多的调试信息丢失,避免影响调试体验。 定位问题:统计结果帮助后端开发者快速定位是哪个 Pass、哪个函数或哪个变量出了问题,从而有针对性地修改代码生成或优化策略。 举例 假设函数中有一个局部变量 foo,编译器在某次寄存器分配优化中,为了更好地利用寄存器,移除了或合并了原先用于跟踪 foo 的 DBG_VALUE 指令。调试时便无法再观察到 foo 的值。使用 DroppedVariableStatsMIR: 在“寄存器分配” Pass 之前,它记录下所有与 foo 相关的 DBG_VALUE。 P ...
后端Pass简介——DetectDeadLanes
DetectDeadLanes 这个 Pass(“Detect Dead Lanes”) 的目的是在涉及子寄存器(subregister)的时候,跟踪虚拟寄存器中各个“lane”上的定义和使用情况,以便在后续阶段正确地识别“死定义”(dead definitions)或“未定义使用”(undefined uses)。 当寄存器被拆分成若干子寄存器或通过 COPY-like 指令(如 PHI、REG_SEQUENCE、INSERT_SUBREG、EXTRACT_SUBREG 等)传递时,普通的寄存器活性分析无法直接得知哪些子部分是真正被使用或定义的。本 Pass 通过位掩码(LaneBitmask)对每个虚拟寄存器的每个子 lane 做数据流分析,从而在 Machine IR 层标记那些确实“死掉”或“未定义”的操作数。 那么什么是 lane 呢? “Lane”在这里指寄存器的==某个子部分(subregister)对应的位集合==。对于一个虚拟寄存器,LLVM 用一个位掩码(LaneBitmask)来表示其中哪些“lane”(即哪些子寄存器位域)已经被定义或使用。 可以理解为高 1 ...
2025编译领域论文
编译领域仅限通用传统编译与 AI 编译大类,不包括量子编译,WebAssembly,不包括编程语言相关 2025 编译领域论文 (LLVM) ASPLOS Volume1 ClosureX: Compiler Support for Correct Persistent Fuzzing Composing Distributed Computations Through Task and Kernel Fusion Debugger Toolchain Validation via Cross-Level Debugging PartIR: Composing SPMD Partitioning Strategies for Machine Learning pulse: Accelerating Distributed Pointer-Traversals on Disaggregated Memory RANGE-BLOCKS: A Synchronization Facility for Domain-Specific Architectures RTL Verificat ...
后端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
寄存器辅助类
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 ---
🍧点此下载🍧

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