CompilerDev 板


LINE

如标题 我发现一个优化演算法为 division-by-constant 当除数为常数时 他可以把除法转换成乘法+算数右移 但他却是在 backend 阶段才应用的 为什麽他不是在 LLVM IR 阶段实作? 我猜可能是乘法的 cost 根据硬体可能不一定比除法 cheap 因此我在猜应该能在 LLVM IR 阶段拿到相关资讯 如 TargetTransforminfo 之类的分析 Pass 但我查一查发现都没有 但是在 DAGCombiner.cpp 有找到类似的 function 叫做 `isIntDivCheap`,结果里面判定是否比较 "Cheap" 的方法是根据优化目的 若以 code size 为优化目的,则 division 比 mul+shr还便宜没错 前者只要一个指令,後者两个,明显便宜一点 但是如果是以速度为目的的话,mul+shr比较便宜(该 function 只做这些判断) 我自己推导成->不论何种硬体,後者速度比前者(除法)快 那为什麽该优化演算法不是实作在 LLVM IR 上? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.190.187 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CompilerDev/M.1649590913.A.8C4.html ※ 编辑: shane87123 (1.160.190.187 台湾), 04/10/2022 22:05:55 ※ 编辑: shane87123 (1.160.190.187 台湾), 04/10/2022 22:06:22
1F:推 LPH66: 我猜数制问题? 实际乘和移的数字应该跟目标是二补还是其他 04/11 06:55
2F:→ LPH66: 有关, 所以无法贸然在 IR 上直接转换 04/11 06:55
其实经过转换後都是一些 magic number, 如果 IR 阶段能拿到一些硬体资讯然後做转换,应该还行吧?
3F:→ Lipraxde: IR 表示语意,codegen 的时候决定怎麽生不是吗? 04/11 09:05
4F:→ Lipraxde: 你问为什麽不是实作在 LLVM IR 上,我猜是指 InstCombi 04/11 09:14
5F:→ Lipraxde: ne?理论上有拿到 target 资讯当然都可以做,可是提前 04/11 09:14
不一定是 InstCombine(? 可以是另一个 Pass 之类的
6F:→ Lipraxde: 做有特别的好处?进到 codegen 阶段时在做顺理成章的拿 04/11 09:14
7F:→ Lipraxde: 资讯,也只需要看是不是 div by const,做在後面应该是 04/11 09:14
8F:→ Lipraxde: 蛮合理的选择 04/11 09:14
我的想法是,如果所有硬体都会因此提升效能的话 做在 LLVM IR 不是有更好的模组性吗? ※ 编辑: shane87123 (1.160.190.187 台湾), 04/11/2022 11:15:56 ※ 编辑: shane87123 (1.160.190.187 台湾), 04/11/2022 11:20:35
9F:→ Lipraxde: 有更好吗,我不确定XD,不过看你回说会乘 magic number 04/11 12:27
10F:→ Lipraxde: ,我想到有没有可能是因为会有 poison value 的关系? 04/11 12:27
我想那应该跟硬体资讯有关? 多少位元会 overflow 之类的 但这些资讯 IR 应该是得的到的 经过这番思考後,我觉得我对 LLVM IR 的出现有很深的误会(? 我以为对所有硬体都有优化效果的都会实作在 LLVM IR 上 如:peephole, constant folding, loop unroll, loop vectorize 之类的 但似乎不是 有看过一个说法是一个 division 比较好分析和优化,比起multiplication+bitwise ※ 编辑: shane87123 (1.160.190.187 台湾), 04/11/2022 19:08:14
11F:→ Lipraxde: #1U-Edzwa (CompilerDev)#1V0N0xoL (CompilerDev) 04/12 13:39
12F:→ Lipraxde: ...优化是有分 target-dependent/independent,有各自 04/12 13:39
13F:→ Lipraxde: 的分类,不过我是觉得不必那麽考究,在哪方便做就在哪 04/12 13:39
14F:→ Lipraxde: 做。像是你这篇的例子,如果不会遇到些数值计算上的问 04/12 13:39
15F:→ Lipraxde: 题,要当 peephole 来做应该也没什麽不行 04/12 13:39
好吧~ 可能我太刁钻於实作在哪块了 谢谢大大解惑 ※ 编辑: shane87123 (114.43.60.48 台湾), 04/12/2022 16:02:20
16F:推 eopXD: 推推 好问题 04/13 15:13







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP