From 078a8fb5e8149db063d42657e9ff62588cf0b1cc Mon Sep 17 00:00:00 2001 From: farmerzhang1 Date: Mon, 28 Nov 2022 15:39:49 +0800 Subject: [PATCH] [Lab4.2] Publish --- Documentations/4.2-gvn/README.md | 544 +++++++++++ Documentations/4.2-gvn/gvn.pdf | Bin 0 -> 514740 bytes Documentations/common/simple_cpp.md | 10 + Reports/4.2-gvn/report.md | 28 + include/lightir/Instruction.h | 5 +- include/lightir/Value.h | 4 + include/optimization/DeadCode.h | 106 +++ include/optimization/FuncInfo.h | 131 +++ include/optimization/GVN.h | 189 ++++ src/CMakeLists.txt | 2 +- src/cminusfc/cminusfc.cpp | 26 +- src/lightir/Value.cpp | 14 + src/optimization/CMakeLists.txt | 1 + src/optimization/GVN.cpp | 306 +++++++ tests/4-ir-opt/lab4_evals.py | 349 +++++++ .../testcases/GVN/functional/bin.cminus | 19 + .../testcases/GVN/functional/bin.json | 109 +++ .../testcases/GVN/functional/loop3.cminus | 41 + .../testcases/GVN/functional/loop3.json | 244 +++++ .../testcases/GVN/functional/pure_func.cminus | 41 + .../testcases/GVN/functional/pure_func.json | 863 ++++++++++++++++++ .../GVN/functional/single_bb1.cminus | 12 + .../testcases/GVN/functional/single_bb1.json | 4 + .../GVN/performance/baseline/const-prop.in | 1 + .../GVN/performance/baseline/const-prop.ll | 26 + .../GVN/performance/baseline/transpose.in | 32 + .../GVN/performance/baseline/transpose.ll | 192 ++++ .../GVN/performance/const-prop.cminus | 23 + .../testcases/GVN/performance/const-prop.in | 1 + .../testcases/GVN/performance/const-prop.out | 1 + .../GVN/performance/transpose.cminus | 70 ++ .../testcases/GVN/performance/transpose.in | 32 + .../testcases/GVN/performance/transpose.out | 1 + 33 files changed, 3419 insertions(+), 8 deletions(-) create mode 100644 Documentations/4.2-gvn/README.md create mode 100644 Documentations/4.2-gvn/gvn.pdf create mode 100644 Reports/4.2-gvn/report.md create mode 100644 include/optimization/DeadCode.h create mode 100644 include/optimization/FuncInfo.h create mode 100644 include/optimization/GVN.h create mode 100644 src/optimization/GVN.cpp create mode 100755 tests/4-ir-opt/lab4_evals.py create mode 100644 tests/4-ir-opt/testcases/GVN/functional/bin.cminus create mode 100644 tests/4-ir-opt/testcases/GVN/functional/bin.json create mode 100644 tests/4-ir-opt/testcases/GVN/functional/loop3.cminus create mode 100644 tests/4-ir-opt/testcases/GVN/functional/loop3.json create mode 100644 tests/4-ir-opt/testcases/GVN/functional/pure_func.cminus create mode 100644 tests/4-ir-opt/testcases/GVN/functional/pure_func.json create mode 100644 tests/4-ir-opt/testcases/GVN/functional/single_bb1.cminus create mode 100644 tests/4-ir-opt/testcases/GVN/functional/single_bb1.json create mode 100644 tests/4-ir-opt/testcases/GVN/performance/baseline/const-prop.in create mode 100644 tests/4-ir-opt/testcases/GVN/performance/baseline/const-prop.ll create mode 100644 tests/4-ir-opt/testcases/GVN/performance/baseline/transpose.in create mode 100644 tests/4-ir-opt/testcases/GVN/performance/baseline/transpose.ll create mode 100644 tests/4-ir-opt/testcases/GVN/performance/const-prop.cminus create mode 100644 tests/4-ir-opt/testcases/GVN/performance/const-prop.in create mode 100644 tests/4-ir-opt/testcases/GVN/performance/const-prop.out create mode 100644 tests/4-ir-opt/testcases/GVN/performance/transpose.cminus create mode 100644 tests/4-ir-opt/testcases/GVN/performance/transpose.in create mode 100644 tests/4-ir-opt/testcases/GVN/performance/transpose.out diff --git a/Documentations/4.2-gvn/README.md b/Documentations/4.2-gvn/README.md new file mode 100644 index 0000000..cec6fec --- /dev/null +++ b/Documentations/4.2-gvn/README.md @@ -0,0 +1,544 @@ +# Lab4 实验文档 +- [Lab4 实验文档](#lab4-实验文档) + - [0. 前言](#0-前言) + - [1. GVN 基础知识](#1-gvn-基础知识) + - [1.1 GVN 简介](#11-gvn-简介) + - [1.2 GVN 相关概念](#12-gvn-相关概念) + - [1. IR 假设](#1-ir-假设) + - [2. Expression 概念](#2-expression-概念) + - [3. 等价概念](#3-等价概念) + - [4. Value Expression 概念](#4-value-expression-概念) + - [5. Value phi-function 概念](#5-value-phi-function-概念) + - [6. Partition](#6-partition) + - [7. Join 操作](#7-join-操作) + - [8. 变量等价与表达式等价](#8-变量等价与表达式等价) + - [9. Transfer Function](#9-transfer-function) + - [2. GVN 算法(论文中提供的伪代码)](#2-gvn-算法论文中提供的伪代码) + - [3. 实验内容](#3-实验内容) + - [3.1 GVN pass 实现内容要求](#31-gvn-pass-实现内容要求) + - [3.2 GVN 辅助类](#32-gvn-辅助类) + - [3.3 注册及运行 GVN Pass](#33-注册及运行-gvn-pass) + - [注册 Pass](#注册-pass) + - [运行 Pass](#运行-pass) + - [3.3 自动测试](#33-自动测试) + - [3.4 Tips](#34-tips) + - [4. 提交要求](#4-提交要求) + - [目录结构](#目录结构) + - [提交要求和评分标准](#提交要求和评分标准) +## 0. 前言 + +在 Lab4.1 中,我们介绍了 SSA IR,并阐明了其优势。本次实验中我们需要在 SSA IR 基础上,实现一个基于数据流分析的冗余消除的优化 Pass : Global Value Numbering(全局值编号)。 +## 1. GVN 基础知识 + +### 1.1 GVN 简介 + +GVN(Global Value Numbering) 全局值编号,是一个基于 SSA 格式的优化,通过建立变量,表达式到值编号的映射关系,从而检测到冗余计算代码并删除。本次实验采用的算法参考论文为:**[Detection of Redundant Expressions: A Complete and Polynomial-Time Algorithm in SSA](./gvn.pdf)** 在该论文中,提出了一种适合 SSA IR ,多项式算法复杂度的数据流分析方式的算法,能够实现对冗余代码完备的检测。本次实验中,我们将在`Light IR` 上实现该数据流分析算法,并根据数据流分析结果删掉冗余代码,达到优化目的。 + +### 1.2 GVN 相关概念 + +#### 1. IR 假设 + +将IR抽象为具有空的`entry block`与`exit block`的控制流图(CFG)。块内包含形式为`x = e`的赋值语句,其中`e`为表达式,`x`为变量。每个bb块最多可以有两个前驱,有两个前驱的bb块被称为`join block`。 + +#### 2. Expression 概念 + +一个`Expression`(表达式)可以是一个常量,一个变量,或者是$`x⊕y`$的形式,其中 x 与 y 是常量或者变量, ⊕ 代表一个通用的二元运算符。一个`Expression`也可以是 $`\phi_k(x,y)`$ 的形式,其中 x, y 是变量,并且 k 表示 join block。这种形式的 `Expression`被称作 `phi` 函数。基于 Lab4.1 对`phi`指令概念的理解,我们知道 phi 函数是出现在 join block 的起始处,而在实际的数据流分析过程中,我们会将 `phi` 指令作为 join block 前驱的赋值指令进行处理。 + +**注**:如下例子所示:形如$`x_3=\phi(x_{1},x_{2})`$的 phi 指令。 + +```asm +bb1: + x1 = 1 + 1 + br bb3 + +bb2: + x2 = 2 + 2 + br bb3 + +bb3: + x3=phi(x1,x2) + ... +``` + +为了实现 SSA 上 GVN 分析的完备性,我们在数据流分析中,将 phi 指令在对应前驱中转化为 $`x_3 = x_1`$, $`x_3 = x_2`$ 两条赋值语句处理。如下例子所示: + +```asm +bb1: + x1 = 1 + 1 + x3 = x1 + br bb3 + +bb2: + x2 = 2 + 2 + x3 = x2 + br bb3 + +bb3: + ... +``` + +#### 3. 等价概念 + +两个表达式 `e1`,`e2` 如果被称作等价的,那么他们有着相同的运算符,并且操作数也是对应等价的。 + +#### 4. Value Expression 概念 + +一个 Value Expression(值表达式),$`vi⊕vj`$ 代表了值编号为vi,vj的两个等价类之间的运算。$`vi⊕vj=\{x⊕y;x\in C_i,C_i是一系列变量等价的等价类集合,值编号为v_i;y\in C_j,C_j是一系列变量等价的等价类的集合, 值编号是v_j\}`$ + +#### 5. Value phi-function 概念 + +与值表达式类似,value phi-function 视作为一系列等价的 phi-function 的抽象。在本次 GVN 实验中,需要扩展 phi-function 的理解,例如如下ir片段的例子: + +```asm +bb1: + y=x1+1 + br bb3 + +bb2: + z=x2+1 + br bb3 + +bb3: + x3=phi(x1,x2) + w3=x3+1 +``` + +对于 变量 w3 对应的 Expression x3+1,由于x3是phi function,因此可以通过[expression 概念](#2-expression-概念)中对phi function的处理探测出:w3,y在bb1中等价,w3,z在bb2中等价,因此可以将 w3 视作是变量 y 与变量 z 在 bb3 处的合并,可以用 $`\phi_{bb_3}(y,z)`$ 来表示w3对应的 value phi-function。 + +#### 6. Partition + +一个 Partition (分区)由一系列等价类组成,一个等价类是由一个值编号,和一系列成员组成。每个成员可以是:变量,常量,值表达式。同时,一个等价类可能会关联一个 value-phi-function。 + +#### 7. Join 操作 +Join 操作检测到达此处的所有路径共有的等价项。在 SSA 格式的 IR 中,变量只会被赋值一次,当程序点 p 支配 join block 时,在 p 点成立的等价关系,在 join block 处仍然成立。通过对 join block 的前驱 Partition 取交集,可以保留所有支配 join block 的程序点的等价关系。对于在每个路径的等价的探测,我们将在[2.GVN算法](#2-gvn-算法论文中提供的伪代码)中通过伪代码进行阐述。对于表达式的等价关系与变量等价关系的检测与判定,我们会分别阐述。 + +#### 8. 变量等价与表达式等价 + +例如如下代码段: + +```asm +bb1: + x1=1+1 + y1=2+2 + z1=x1+y1 + br bb3 + +bb2: + x2=2+2 + y2=3+3 + z2=x2+y2 + br bb3 + +bb3: + x3=phi(x1,x2) + y3=phi(y1,y2) + z3=phi(z1,z2) + z4=x3+y3 +``` + +在左分支bb1中,通过将 x3=phi(x1, x2)语句转换为前驱的复制语句 x3=x1 ,可以检测出,x3与x1在左分支路径上的等价性。同理也有x3与x2在右分支上的等价性。此为**变量等价** + +同时,通过对z4=x3+y3的分析,可以看出,x3+y3 这个表达式,在bb1中与x1+y1等价,在bb2中与x2+y2等价,此为**表达式等价**,通过这个表达式等价的关系,可以分析出,z4与z1在bb1中变量等价,z4与z2在bb2中变量等价,因此可以建立z4的phi函数为phi(z1,z2),进而可以导出z3与z4的**变量等价**,从而消除z3与z4的冗余。 + +#### 9. Transfer Function + +TransferFunction 作用于一条语句s:x=e 上,接受 partition 记为 $`PIN_s`$ 并探测 e 与到达此处程序点所有 path 上是否有等价的 expression。TransferFunction 通过更新原有的等价类,或者创建新的等价类来在 partition $`PIN_s`$ 基础上修改并输出 partition 记为 $`POUT_s`$。在后面给出的伪代码可以看出,TransferFunction先在$`PIN_s`$检测是否存在 expression e 的 value expression,然后会继续检查 e 是否可以表达为不同表达式的合并。考虑如下例子(沿用了在变量等价中的例子): + +```asm +bb1: + x1=1+1 + y1=2+2 + z1=x1+y1 + br bb3 + +bb2: + x2=2+2 + y2=3+3 + z2=x2+y2 + br bb3 + +bb3: + x3=phi(x1,x2) + y3=phi(y1,y2) + z3=phi(z1,z2) + z4=x3+y3 +``` + +在对`z4=x3+y3`这个表达式执行$`\text{TransferFunction}(x=e, PIN_s)`$: + +其中,x 为 z4, e 为 `x3+y3` +$`PIN_{bb3}=\{\{v_1,x_1,1+1:\text{non-phi}\},\{v_2,y_1,2+2:\text{non-phi}\},\{v_3,z_1,x_1+y_1:\text{non-phi}\},\{v_4,x_2,2+2:\text{non-phi}\},\{v_5,y_2,3+3:\text{non-phi}\},\{v_6,z_2,x_2+y_2:\text{non-phi}\},\{v_7,x_3:\phi(x_1,x_2)\},\{v_8,y_3:\phi(y_1,y_2)\},\{v_9,z_3:\phi(z_1,z_2)\}\}`$ + +在 $`PIN_{bb3}`$ 中找不到 `x3+y3` 对应的 expression 表达式。 + +但是,对 `x3+y3` 进一步分析可以得到:因为`x3`和`y3`都是`phi`,`x3+y3`可以表示为 `bb1` 中 `x1+y1` 与 `bb2` 中 `x2+y2` 的两个表达式的合并,因此可以记为 phi(`x1+y1`, `x2+y2`) + +接下来,可以检测到变量 z1 与 `x1+y1` expression 在`bb3`前驱`bb1`中的等价关系,变量 z2 与 `x2+y2` expression 在`bb3`前驱`bb2`中的等价关系。因此可以检测到 phi(`x1+y1`, `x2+y2`)与 phi(z1,z2)的等价关系。 + +进而得到 变量 z3 与 z4 是等价的,`x3 + y3` expression 的计算是冗余的。 + +注:这里的 $`PIN_{bb3}`$ 的例子仅仅是为了说明 TransferFunction 的职能和 partition 的结构式样,不代表最终迭代稳定后的结果。 + +## 2. GVN 算法(论文中提供的伪代码) + +本小节附上了原论文中附的伪代码,伪代码中给出了五个主函数的逻辑,这里自顶向下梳理一下: + +`detectEquivalences(G)` 包含了最主要的数据流迭代过程,传入参数 G 为抽象的数据流分析的 CFG 图结构,实现中可以以函数为分析的基本单位来执行此函数,迭代初始时,将各个 Partition 初始化为顶元`Top`, 定义为`Join(P, Top) = P = Join(Top, P)` + +注:此函数中的 statement 的概念对应前述的一条语句 + +```clike +detectEquivalences(G) + PIN1 = {} // “1” is the first statement in the program + POUT1 = transferFunction(PIN1) + for each statement s other than the first statement in the program + POUTs = Top + while changes to any POUT occur // i.e. changes in equivalences + for each statement s other than the first statement in the program + if s appears in block b that has two predecessors + then + PINs = Join(POUTs1, POUTs2) // s1 and s2 are last statements in respective predecessors + else + PINs = POUTs3 // s3 the statement just before s + POUTs = transferFunction(PINs) // apply transferFunction on each statement in the block +``` + +`Join` 操作仅仅在某个语句有两个前驱时被触发,注意:在join操作执行之前,join block 中的 phi 语句会作为 copy statement 加入 join block 对应的两个前驱末尾处。细节处理方式见[expression 概念](#2-expression-概念)的注栏。 + +```clike +Join(P1, P2) + P = {} + for each pair of classes Ci ∈ P1 and Cj ∈ P2 + Ck = Intersect(Ci, Cj) + P = P ∪ Ck // Ignore when Ck is empty + return P + +Intersect(Ci, Cj) + Ck = Ci ∩ Cj // set intersection + if Ck != {} and Ck does not have value number + then + Ck = Ck ∪ {vk} // vk is new value number + Ck = (Ck − {vpf}) ∪ {φb(vi, vj)} + // vpf is value φ-function in Ck, vi ∈ Ci, vj ∈ Cj, b is join block + return Ck +``` + +`TransferFunction` 接受一个赋值语句 x=e(x是变量,e为表达式),与一个 partition $`PIN_s`$ 。其中 getVN 从一个 partition 中根据 e 来找到对应的编号。 + +注: 在 lightir 的设计中,普通语句的 x 与 e 存在同一个类中,而 phi 语句中需要经转换为 copy 语句,x 与 e 与普通语句会有一些不同,需要仔细思考区分一下。 + +```clike +TransferFunction(x = e, PINs) + POUTs = PINs + if x is in a class Ci in POUTs + then Ci = Ci − {x} + ve = valueExpr(e) + vpf = valuePhiFunc(ve,PINs) // can be NULL + if ve or vpf is in a class Ci in POUTs // ignore vpf when NULL + then + Ci = Ci ∪ {x, ve} // set union + else + POUTs = POUTs ∪ {vn, x, ve : vpf} // vn is new value number + return POUTs + +valuePhiFunc(ve,P) + if ve is of the form φk(vi1, vj1) ⊕ φk(vi2, vj2) + then + // process left edge + vi = getVN(POUTkl, vi1 ⊕ vi2) + if vi is NULL + then vi = valuePhiFunc(vi1 ⊕ vi2, POUTkl) + // process right edge + vj = getVN(POUTkr, vj1 ⊕ vj2) + if vj is NULL + then vj = valuePhiFunc(vj1 ⊕ vj2, POUTkr) + + if vi is not NULL and vj is not NULL + then return φk(vi, vj) + else return NULL +``` + +## 3. 实验内容 + +在本次实验中,请仔细阅读[3.2 GVN pass 实现内容要求](#32-gvn-pass-实现内容要求),根据要求补全`src/optimization/GVN.cpp`,`include/optimization/GVN.cpp`中关于 GVN pass 数据流分析部分,同时需要在 `Reports/4-ir-opt/` 目录下撰写实验报告。**为了在评测中统一分析结果,请大家采用 lab3 的 TA-impl 分支提供的答案来继续后续实验。** +### 3.1 GVN pass 实现内容要求 + +GVN 通过数据流分析来检测冗余的变量和计算,通过替换和死代码删除结合,实现优化效果。前述的例子中主要以二元运算语句来解释原理,且助教为大家提供了代码替换和删除的逻辑,除此之外,需要完成的方向有: + +1. 对冗余指令的检测与消除包括(二元运算指令,cmp,gep,类型转换指令) + +2. 对纯函数的冗余调用消除(助教提供了纯函数分析,见[FuncInfo.h](../../include/optimization/FuncInfo.h)) + + 该 Pass 的接口`is_pure_function`接受一个lightIR Function,判断该函数是否为纯函数;对于纯函数,如果其参数等价,对这个纯函数的不同调用也等价。 + +3. 常量传播 + + 在数据流分析的过程中,可以使用常量折叠来实现常量传播,从而将可在编译时计算的结果计算好,减少运行时开销。(助教提供了常量折叠类,在辅助类的介绍中) + +我们会在测试样例中对这三点进行考察。 + +**注**:我们为大家提供了冗余删除的函数 `GVN::replace_cc_members` ,只需要正确填充在 `GVN` 类中的 `pout` 变量,我们的替换逻辑将会根据每个 bb 的 pout 自行使用`CongruenceClass` 的 `leader_` 成员来替换在此 bb 内与其等价其他指令。 + +### 3.2 GVN 辅助类 + +在上述对 GVN 概念的介绍中,为了能让大家专注于核心数据流分析逻辑的实现,我们为大家提供了一些相应实现的辅助类,并在注释里解释了其相应用途,请注意与前述的 GVN 的抽象概念结合,理解其设计,并补充必要的类成员的实现。 + +`GVN.h`: + +```c++ +class ConstFolder; // 常量折叠类,用于折叠操作数都是常量的指令 + +// 该 namespace 下,包含了用于判断 expression 等价的结构,我们提供了 binary expression,phi expression,constant expression 的结构,请根据测试用例添加你需要的其他 expression 的结构,具体细节请据 GVN.h 结合代码与注释理解 +namespace GVNExpression { +class Expression; // 所有 expression 类型的基类 +class ConstantExpression; // 常量 expression 类型 +class BinaryExpression; // 二元运算 expression 包括 + - * / +class PhiExpression; // phi expression 类型,表示不同路径的 expression 在此的合并 +} + +struct CongruenceClass; // 对应伪代码中等价类的概念,分析结果会根据此类 dump 至 json 文件中,代码替换与消除逻辑也根据此结构实现 + +class GVN; // GVN pass核心实现逻辑,除一些用的上的辅助函数外,重点补齐此处与伪代码对应的核心函数,其中run()函数是 pass 启动的入口,已经为大家补充好。 +``` + +`GVN.cpp`: + +```c++ +namespace utils // 一些用于输出的函数,可方便调试,以及将结果 dump 到 json 文件中的方法 +``` + +### 3.3 注册及运行 GVN Pass + +#### 注册 Pass + +本次实验使用了由 C++ 编写的 `LightIR` 来在 IR 层面完成优化化简,在`include/optimization/PassManager.hpp`中,定义了一个用于管理 Pass 的类`PassManager`。它的作用是注册与运行 Pass 。它提供了以下接口: + +```cpp +PassManager pm(module.get()) +pm.add_Pass(emit, dump_json) // 注册Pass,emit为true时打印优化后的IR +pm.run() // 按照注册的顺序运行 Pass 的 run() 函数 +``` + +#### 运行 Pass + +```sh +mkdir build && cd build +cmake .. +make -j +make install +``` + +为了便于大家进行实验,助教对之前的`cminusfc`增加了选项,用来选择是否开启某种优化,通过`-mem2reg`开关来控制优化 Pass 的使用,当需要对 `.cminus` 文件测试时,可以这样使用: + +```bash +./cminusfc [ -mem2reg ] [ -gvn [ -dump-json ] ] +``` + +其中,gvn pass 需要在 mem2reg pass 运行后运行。 + +### 3.3 自动测试 + +助教贴心地为大家准备了自动测试脚本,它在 `tests/4-ir-opt` 目录下,使用方法如下: + +```bash +python3 lab4_evals.py [ -gvn-analysis ] [ -gvn ] +``` + +该脚本可以在任意目录下运行 + +```bash +python3 tests/4-ir-opt/lab4_evals.py [ -gvn-analysis ] [ -gvn ] +``` + +其中 `-gvn-analysis` 对 GVN 分析结果的正确性进行判断,执行结果如下所示: + +```bash +========== GlobalValueNumberAnalysis ========== +Compiling -mem2reg -emit-llvm -gvn -dump-json + 0%| | 0/4 [00:00 0.8 得满分 + (before_optimization-after_optimization)/(before_optimization-baseline) > 0.5 得85%分数 + (before_optimization-after_optimization)/(before_optimization-baseline) > 0.2 得60%分数 + ``` + + * 禁止执行恶意代码,违者本次实验0分处理 + +* 迟交规定 + + * `Soft Deadline`: 2022/12/12 23:59:59 (北京标准时间,UTC+8) + + * `Hard Deadline`: 2022/12/19 23:59:59 (北京标准时间,UTC+8) + + * 迟交需要邮件通知 TA : + * 邮箱: + chen16614@mail.ustc.edu.cn 抄送 farmerzhang1@mail.ustc.edu.cn + * 邮件主题: lab4.2迟交-学号 + * 内容: 包括迟交原因、最后版本commitID、迟交时间等 + + * 迟交分数 + * x为迟交天数(对于`Soft Deadline`而言),grade为满分 + ``` bash + final_grade = grade, x = 0 + final_grade = grade * (0.9)^x, 0 < x <= 7 + final_grade = 0, x > 7 # 这一条严格执行,请对自己负责 + ``` + +* 关于抄袭和雷同 + 经过助教和老师判定属于实验抄袭或雷同情况,所有参与方一律零分,不接受任何解释和反驳(严禁对开源代码或者其他同学代码的直接搬运)。 + 如有任何问题,欢迎提issue进行批判指正。 diff --git a/Documentations/4.2-gvn/gvn.pdf b/Documentations/4.2-gvn/gvn.pdf new file mode 100644 index 0000000000000000000000000000000000000000..87b2c577f0674df1b6ebbcaf9669b949ddea7030 GIT binary patch literal 514740 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

(tlC(zmP;N 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

-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%0AWLiEj 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 Wkjk;8dsxcU)*3LtVYH*R*8c<6&4dsD literal 0 HcmV?d00001 diff --git a/Documentations/common/simple_cpp.md b/Documentations/common/simple_cpp.md index 60a07e2..42c88f8 100644 --- a/Documentations/common/simple_cpp.md +++ b/Documentations/common/simple_cpp.md @@ -106,3 +106,13 @@ C中,只能使用标准库中的`malloc`与`free`来进行内存分配,并 1. `std::shared_ptr`: 引用计数智能指针,使用一个共享变量来记录指针管理的对象被引用了几次。当对象引用计数为0时,说明当前该对象不再有引用,并且进程也无法再通过其它方式来引用它,也就意味着可以回收内存,这相当于低级的垃圾回收策略。 2. `std::unique_ptr`: 表示所有权的智能指针,该指针要求它所管理的对象智能有一次引用,主要用于语义上不允许共享的对象(比如`llvm::Module`)。当引用计数为0时,它也会回收内存。 +## Debugging Seg Fault +Lab3/4 中,你可能会各种各样的段错误,不要害怕!clang 提供了一个工具来帮助我们解决内存泄漏。 +```bash +cd build +cmake .. -DCMAKE_BUILD_TYPE=Asan +make +``` +然后再次运行你的错误代码, Asan 会提供更详细的报错信息。 + +注:要更换到别的 build type (如Debug或Release)时需要显式指定,否则 cmake 会使用 cached 的版本。 diff --git a/Reports/4.2-gvn/report.md b/Reports/4.2-gvn/report.md new file mode 100644 index 0000000..d290e35 --- /dev/null +++ b/Reports/4.2-gvn/report.md @@ -0,0 +1,28 @@ +# Lab4.2 实验报告 + +姓名 学号 + +## 实验要求 + +请按照自己的理解,写明本次实验需要做什么 + +## 实验难点 + +实验中遇到哪些挑战 + +## 实验设计 +实现思路,相应代码,优化前后的IR对比(举一个例子)并辅以简单说明 + +### 思考题 +1. 请简要分析你的算法复杂度 +2. `std::shared_ptr`如果存在环形引用,则无法正确释放内存,你的 Expression 类是否存在 circular reference? +3. 尽管本次实验已经写了很多代码,但是在算法上和工程上仍然可以对 GVN 进行改进,请简述你的 GVN 实现可以改进的地方 + +## 实验总结 + +此次实验有什么收获 + +## 实验反馈(可选 不会评分) + +对本次实验的建议 + diff --git a/include/lightir/Instruction.h b/include/lightir/Instruction.h index ccf46c5..738aad6 100644 --- a/include/lightir/Instruction.h +++ b/include/lightir/Instruction.h @@ -55,8 +55,8 @@ class Instruction : public User, public llvm::ilist_node { Module *get_module(); OpID get_instr_type() const { return op_id_; } - std::string get_instr_op_name() { - switch (op_id_) { + static std::string get_instr_op_name(OpID id) { + switch (id) { case ret: return "ret"; break; case br: return "br"; break; case add: return "add"; break; @@ -82,6 +82,7 @@ class Instruction : public User, public llvm::ilist_node { default: return ""; break; } } + std::string get_instr_op_name() { return get_instr_op_name(op_id_); } bool is_void() { return ((op_id_ == ret) || (op_id_ == br) || (op_id_ == store) || diff --git a/include/lightir/Value.h b/include/lightir/Value.h index 4eeb018..5fb6a88 100644 --- a/include/lightir/Value.h +++ b/include/lightir/Value.h @@ -1,12 +1,14 @@ #ifndef SYSYC_VALUE_H #define SYSYC_VALUE_H +#include #include #include #include class Type; class Value; +class User; struct Use { Value *val_; @@ -35,6 +37,8 @@ class Value { std::string get_name() const; void replace_all_use_with(Value *new_val); + /// replace `value` with `new_val` when the user of value satisfies predicate `pred` + void replace_use_with_when(Value *new_val, std::function pred); void remove_use(Value *val); virtual std::string print() = 0; diff --git a/include/optimization/DeadCode.h b/include/optimization/DeadCode.h new file mode 100644 index 0000000..ef5a803 --- /dev/null +++ b/include/optimization/DeadCode.h @@ -0,0 +1,106 @@ +#pragma once +#include "FuncInfo.h" +#include "Function.h" +#include "Instruction.h" +#include "PassManager.hpp" +#include "logging.hpp" + +/** + * 死代码消除:参见 https://www.clear.rice.edu/comp512/Lectures/10Dead-Clean-SCCP.pdf + **/ +class DeadCode : public Pass { + public: + DeadCode(Module *m) : Pass(m), func_info(std::make_shared(m)) {} + + // 处理流程:两趟处理,mark 标记有用变量,sweep 删除无用指令 + void run() { + bool changed{}; + func_info->run(); + do { + changed = false; + for (auto &F : m_->get_functions()) { + auto func = &F; + mark(func); + changed |= sweep(func); + } + } while (changed); + LOG_INFO << "dead code pass erased " << ins_count << " instructions"; + } + + private: + std::shared_ptr func_info; + void mark(Function *func) { + work_list.clear(); + marked.clear(); + + for (auto &bb : func->get_basic_blocks()) { + for (auto &ins : bb.get_instructions()) { + if (is_critical(&ins)) { + marked[&ins] = true; + work_list.push_back(&ins); + } + } + } + + while (work_list.empty() == false) { + auto now = work_list.front(); + work_list.pop_front(); + + mark(now); + } + } + void mark(Instruction *ins) { + for (auto op : ins->get_operands()) { + auto def = dynamic_cast(op); + if (def == nullptr) + continue; + if (marked[def]) + continue; + if (def->get_function() != ins->get_function()) + continue; + marked[def] = true; + work_list.push_back(def); + } + } + bool sweep(Function *func) { + std::unordered_set wait_del{}; + for (auto &bb : func->get_basic_blocks()) { + for (auto it = bb.get_instructions().begin(); it != bb.get_instructions().end();) { + if (marked[&*it]) { + ++it; + continue; + } else { + auto tmp = &*it; + wait_del.insert(tmp); + it++; + } + } + } + for (auto inst : wait_del) + inst->remove_use_of_ops(); + for (auto inst : wait_del) + inst->get_parent()->get_instructions().erase(inst); + ins_count += wait_del.size(); + return not wait_del.empty(); // changed + } + bool is_critical(Instruction *ins) { + // 对纯函数的无用调用也可以在删除之列 + if (ins->is_call()) { + auto call_inst = dynamic_cast(ins); + auto callee = dynamic_cast(call_inst->get_operand(0)); + if (func_info->is_pure_function(callee)) + return false; + return true; + } + if (ins->is_br() || ins->is_ret()) + return true; + if (ins->is_store()) + return true; + return false; + } + + // 用以衡量死代码消除的性能 + int ins_count{0}; + std::deque work_list{}; + std::unordered_map marked{}; +}; diff --git a/include/optimization/FuncInfo.h b/include/optimization/FuncInfo.h new file mode 100644 index 0000000..1ffe128 --- /dev/null +++ b/include/optimization/FuncInfo.h @@ -0,0 +1,131 @@ +#pragma once +#include "Function.h" +#include "PassManager.hpp" +#include "logging.hpp" + +#include +#include +#include + +/** + * 计算哪些函数是纯函数 + * WARN: 假定所有函数都是纯函数,除非他写入了全局变量、修改了传入的数组、或者直接间接调用了非纯函数 + */ +class FuncInfo : public Pass { + public: + FuncInfo(Module *m) : Pass(m) {} + + void run() { + for (auto &f : m_->get_functions()) { + auto func = &f; + trivial_mark(func); + if (not is_pure[func]) + worklist.push_back(func); + } + while (worklist.empty() == false) { + auto now = worklist.front(); + worklist.pop_front(); + process(now); + } + log(); + } + + bool is_pure_function(Function *func) const { + // exit_if(is_pure.find(func) == is_pure.end(), ERROR_IN_PURE_FUNCTION_ANALYSIS); + return is_pure.at(func); + } + + void log() { + for (auto it : is_pure) { + LOG_INFO << it.first->get_name() << " is pure? " << it.second; + } + } + + private: + // 有 store 操作的函数非纯函数来处理 + void trivial_mark(Function *func) { + if (func->is_declaration() or func->get_name() == "main") { + is_pure[func] = false; + return; + } + // 只要传入数组,都作为非纯函数处理 + for (auto it = func->get_function_type()->param_begin(); it != func->get_function_type()->param_end(); ++it) { + auto arg_type = *it; + if (arg_type->is_integer_type() == false and arg_type->is_float_type() == false) { + is_pure[func] = false; + return; + } + } + for (auto &bb : func->get_basic_blocks()) + for (auto &inst : bb.get_instructions()) { + if (is_side_effect_inst(&inst)) { + is_pure[func] = false; + return; + } + } + is_pure[func] = true; + } + + void process(Function *func) { + for (auto &use : func->get_use_list()) { + LOG_INFO << use.val_->print() << " uses func: " << func->get_name(); + if (auto inst = dynamic_cast(use.val_)) { + auto func = (inst->get_parent()->get_parent()); + if (is_pure[func]) { + is_pure[func] = false; + worklist.push_back(func); + } + } else + LOG_WARNING << "Value besides instruction uses a function"; + } + } + + // 对局部变量进行 store 没有副作用 + bool is_side_effect_inst(Instruction *inst) { + if (inst->is_store()) { + if (is_local_store(dynamic_cast(inst))) + return false; + return true; + } + if (inst->is_load()) { + if (is_local_load(dynamic_cast(inst))) + return false; + return true; + } + // call 指令的副作用会在后续 bfs 中计算 + return false; + } + + bool is_local_load(LoadInst *inst) { + auto addr = dynamic_cast(get_first_addr(inst->get_operand(0))); + if (addr and addr->is_alloca()) + return true; + return false; + } + + bool is_local_store(StoreInst *inst) { + auto addr = dynamic_cast(get_first_addr(inst->get_lval())); + if (addr and addr->is_alloca()) + return true; + return false; + } + Value *get_first_addr(Value *val) { + if (auto inst = dynamic_cast(val)) { + if (inst->is_alloca()) + return inst; + if (inst->is_gep()) + return get_first_addr(inst->get_operand(0)); + if (inst->is_load()) + return val; + LOG_WARNING << "FuncInfo: try to determine addr in operands"; + for (auto op : inst->get_operands()) { + if (op->get_type()->is_pointer_type()) + return get_first_addr(op); + } + } + return val; + } + + std::deque worklist; + std::unordered_map is_pure; +}; diff --git a/include/optimization/GVN.h b/include/optimization/GVN.h new file mode 100644 index 0000000..6b794ac --- /dev/null +++ b/include/optimization/GVN.h @@ -0,0 +1,189 @@ +#pragma once +#include "BasicBlock.h" +#include "Constant.h" +#include "DeadCode.h" +#include "FuncInfo.h" +#include "Function.h" +#include "Instruction.h" +#include "Module.h" +#include "PassManager.hpp" +#include "Value.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace GVNExpression { + +// fold the constant value +class ConstFolder { + public: + ConstFolder(Module *m) : module_(m) {} + Constant *compute(Instruction *instr, Constant *value1, Constant *value2); + Constant *compute(Instruction *instr, Constant *value1); + + private: + Module *module_; +}; + +/** + * for constructor of class derived from `Expression`, we make it public + * because `std::make_shared` needs the constructor to be publicly available, + * but you should call the static factory method `create` instead the constructor itself to get the desired data + */ +class Expression { + public: + // TODO: you need to extend expression types according to testcases + enum gvn_expr_t { e_constant, e_bin, e_phi }; + Expression(gvn_expr_t t) : expr_type(t) {} + virtual ~Expression() = default; + virtual std::string print() = 0; + gvn_expr_t get_expr_type() const { return expr_type; } + + private: + gvn_expr_t expr_type; +}; + +bool operator==(const std::shared_ptr &lhs, const std::shared_ptr &rhs); +bool operator==(const GVNExpression::Expression &lhs, const GVNExpression::Expression &rhs); + +class ConstantExpression : public Expression { + public: + static std::shared_ptr create(Constant *c) { return std::make_shared(c); } + virtual std::string print() { return c_->print(); } + // we leverage the fact that constants in lightIR have unique addresses + bool equiv(const ConstantExpression *other) const { return c_ == other->c_; } + ConstantExpression(Constant *c) : Expression(e_constant), c_(c) {} + + private: + Constant *c_; +}; + +// arithmetic expression +class BinaryExpression : public Expression { + public: + static std::shared_ptr create(Instruction::OpID op, + std::shared_ptr lhs, + std::shared_ptr rhs) { + return std::make_shared(op, lhs, rhs); + } + virtual std::string print() { + return "(" + Instruction::get_instr_op_name(op_) + " " + lhs_->print() + " " + rhs_->print() + ")"; + } + + bool equiv(const BinaryExpression *other) const { + if (op_ == other->op_ and *lhs_ == *other->lhs_ and *rhs_ == *other->rhs_) + return true; + else + return false; + } + + BinaryExpression(Instruction::OpID op, std::shared_ptr lhs, std::shared_ptr rhs) + : Expression(e_bin), op_(op), lhs_(lhs), rhs_(rhs) {} + + private: + Instruction::OpID op_; + std::shared_ptr lhs_, rhs_; +}; + +class PhiExpression : public Expression { + public: + static std::shared_ptr create(std::shared_ptr lhs, std::shared_ptr rhs) { + return std::make_shared(lhs, rhs); + } + virtual std::string print() { return "(phi " + lhs_->print() + " " + rhs_->print() + ")"; } + bool equiv(const PhiExpression *other) const { + if (*lhs_ == *other->lhs_ and *rhs_ == *other->rhs_) + return true; + else + return false; + } + PhiExpression(std::shared_ptr lhs, std::shared_ptr rhs) + : Expression(e_phi), lhs_(lhs), rhs_(rhs) {} + + private: + std::shared_ptr lhs_, rhs_; +}; +} // namespace GVNExpression + +/** + * Congruence class in each partitions + * note: for constant propagation, you might need to add other fields + * and for load/store redundancy detection, you most certainly need to modify the class + */ +struct CongruenceClass { + size_t index_; + // representative of the congruence class, used to replace all the members (except itself) when analysis is done + Value *leader_; + // value expression in congruence class + std::shared_ptr value_expr_; + // value φ-function is an annotation of the congruence class + std::shared_ptr value_phi_; + // equivalent variables in one congruence class + std::set members_; + + CongruenceClass(size_t index) : index_(index), leader_{}, value_expr_{}, value_phi_{}, members_{} {} + + bool operator<(const CongruenceClass &other) const { return this->index_ < other.index_; } + bool operator==(const CongruenceClass &other) const; +}; + +namespace std { +template <> +// overload std::less for std::shared_ptr, i.e. how to sort the congruence classes +struct less> { + bool operator()(const std::shared_ptr &a, const std::shared_ptr &b) const { + // nullptrs should never appear in partitions, so we just dereference it + return *a < *b; + } +}; +} // namespace std + +class GVN : public Pass { + public: + using partitions = std::set>; + GVN(Module *m, bool dump_json) : Pass(m), dump_json_(dump_json) {} + // pass start + void run() override; + // init for pass metadata; + void initPerFunction(); + + // fill the following functions according to Pseudocode, **you might need to add more arguments** + void detectEquivalences(); + partitions join(const partitions &P1, const partitions &P2); + std::shared_ptr intersect(std::shared_ptr, std::shared_ptr); + partitions transferFunction(Instruction *x, Value *e, partitions pin); + std::shared_ptr valuePhiFunc(std::shared_ptr, + const partitions &); + std::shared_ptr valueExpr(Instruction *instr); + std::shared_ptr getVN(const partitions &pout, + std::shared_ptr ve); + + // replace cc members with leader + void replace_cc_members(); + + // note: be careful when to use copy constructor or clone + partitions clone(const partitions &p); + + // create congruence class helper + std::shared_ptr createCongruenceClass(size_t index = 0) { + return std::make_shared(index); + } + + private: + bool dump_json_; + std::uint64_t next_value_number_ = 1; + Function *func_; + std::map pin_, pout_; + std::unique_ptr func_info_; + std::unique_ptr folder_; + std::unique_ptr dce_; +}; + +bool operator==(const GVN::partitions &p1, const GVN::partitions &p2); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8875e3d..bae0849 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,4 +3,4 @@ add_subdirectory(common) add_subdirectory(io) add_subdirectory(lightir) add_subdirectory(cminusfc) -add_subdirectory(optimization) \ No newline at end of file +add_subdirectory(optimization) diff --git a/src/cminusfc/cminusfc.cpp b/src/cminusfc/cminusfc.cpp index 880d879..7c705a2 100644 --- a/src/cminusfc/cminusfc.cpp +++ b/src/cminusfc/cminusfc.cpp @@ -1,4 +1,5 @@ #include "Dominators.h" +#include "GVN.h" #include "Mem2Reg.hpp" #include "PassManager.hpp" #include "cminusf_builder.hpp" @@ -11,7 +12,8 @@ using namespace std::literals::string_literals; void print_help(std::string exe_name) { - std::cout << "Usage: " << exe_name << " [ -h | --help ] [ -o ] [ -emit-llvm ] [-mem2reg] " + std::cout << "Usage: " << exe_name + << " [ -h | --help ] [ -o ] [ -emit-llvm ] [-mem2reg] [-gvn] [-dump-json] " << std::endl; } @@ -20,6 +22,8 @@ int main(int argc, char **argv) { std::string input_path; bool mem2reg = false; + bool gvn = false; + bool dump_json = false; bool emit = false; for (int i = 1; i < argc; ++i) { @@ -38,6 +42,10 @@ int main(int argc, char **argv) { emit = true; } else if (argv[i] == "-mem2reg"s) { mem2reg = true; + } else if (argv[i] == "-gvn"s) { + gvn = true; + } else if (argv[i] == "-dump-json"s) { + dump_json = true; } else { if (input_path.empty()) { input_path = argv[i]; @@ -47,6 +55,8 @@ int main(int argc, char **argv) { } } } + if (gvn and not mem2reg) + LOG_WARNING << "Enabling GVN without mem2reg"; if (input_path.empty()) { print_help(argv[0]); return 0; @@ -77,12 +87,15 @@ int main(int argc, char **argv) { auto m = builder.getModule(); - m->set_print_name(); + // m->set_print_name(); PassManager PM(m.get()); if (mem2reg) { PM.add_pass(emit); } + if (gvn) + PM.add_pass(emit, dump_json); + PM.run(); auto IR = m->print(); @@ -95,11 +108,13 @@ int main(int argc, char **argv) { output_stream << IR; output_stream.close(); if (!emit) { - std::string lib_path = argv[0]; + std::string lib_path = " -L"s + argv[0]; auto idx = lib_path.rfind('/'); if (idx != std::string::npos) - lib_path.erase(lib_path.rfind('/')); - auto cmd_str = "clang -O0 -w "s + target_path + ".ll -o " + target_path + " -L" + lib_path + " -lcminus_io"; + lib_path.erase(idx); + else + lib_path.clear(); + auto cmd_str = "clang -O0 -w -no-pie "s + target_path + ".ll -o " + target_path + lib_path + " -lcminus_io"; int re_code0 = std::system(cmd_str.c_str()); cmd_str = "rm "s + target_path + ".ll"; int re_code1 = std::system(cmd_str.c_str()); @@ -108,5 +123,6 @@ int main(int argc, char **argv) { else return 1; } + return 0; } diff --git a/src/lightir/Value.cpp b/src/lightir/Value.cpp index 06297e1..0ccc6bd 100644 --- a/src/lightir/Value.cpp +++ b/src/lightir/Value.cpp @@ -24,3 +24,17 @@ void Value::remove_use(Value *val) { auto is_val = [val](const Use &use) { return use.val_ == val; }; use_list_.remove_if(is_val); } + +void Value::replace_use_with_when(Value *new_val, std::function pred) { + for (auto it = use_list_.begin(); it != use_list_.end();) { + auto use = *it; + auto val = dynamic_cast(use.val_); + assert(val && "new_val is not a user"); + if (not pred(val)) { + ++it; + continue; + } + val->set_operand(use.arg_no_, new_val); + it = use_list_.erase(it); + } +} diff --git a/src/optimization/CMakeLists.txt b/src/optimization/CMakeLists.txt index 102c5e8..8e969b3 100644 --- a/src/optimization/CMakeLists.txt +++ b/src/optimization/CMakeLists.txt @@ -2,4 +2,5 @@ add_library( OP_lib STATIC Dominators.cpp Mem2Reg.cpp + GVN.cpp ) diff --git a/src/optimization/GVN.cpp b/src/optimization/GVN.cpp new file mode 100644 index 0000000..e10dda3 --- /dev/null +++ b/src/optimization/GVN.cpp @@ -0,0 +1,306 @@ +#include "GVN.h" + +#include "BasicBlock.h" +#include "Constant.h" +#include "DeadCode.h" +#include "FuncInfo.h" +#include "Function.h" +#include "Instruction.h" +#include "logging.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace GVNExpression; +using std::string_literals::operator""s; +using std::shared_ptr; + +static auto get_const_int_value = [](Value *v) { return dynamic_cast(v)->get_value(); }; +static auto get_const_fp_value = [](Value *v) { return dynamic_cast(v)->get_value(); }; +// Constant Propagation helper, folders are done for you +Constant *ConstFolder::compute(Instruction *instr, Constant *value1, Constant *value2) { + auto op = instr->get_instr_type(); + switch (op) { + case Instruction::add: return ConstantInt::get(get_const_int_value(value1) + get_const_int_value(value2), module_); + case Instruction::sub: return ConstantInt::get(get_const_int_value(value1) - get_const_int_value(value2), module_); + case Instruction::mul: return ConstantInt::get(get_const_int_value(value1) * get_const_int_value(value2), module_); + case Instruction::sdiv: return ConstantInt::get(get_const_int_value(value1) / get_const_int_value(value2), module_); + case Instruction::fadd: return ConstantFP::get(get_const_fp_value(value1) + get_const_fp_value(value2), module_); + case Instruction::fsub: return ConstantFP::get(get_const_fp_value(value1) - get_const_fp_value(value2), module_); + case Instruction::fmul: return ConstantFP::get(get_const_fp_value(value1) * get_const_fp_value(value2), module_); + case Instruction::fdiv: return ConstantFP::get(get_const_fp_value(value1) / get_const_fp_value(value2), module_); + + case Instruction::cmp: + switch (dynamic_cast(instr)->get_cmp_op()) { + case CmpInst::EQ: return ConstantInt::get(get_const_int_value(value1) == get_const_int_value(value2), module_); + case CmpInst::NE: return ConstantInt::get(get_const_int_value(value1) != get_const_int_value(value2), module_); + case CmpInst::GT: return ConstantInt::get(get_const_int_value(value1) > get_const_int_value(value2), module_); + case CmpInst::GE: return ConstantInt::get(get_const_int_value(value1) >= get_const_int_value(value2), module_); + case CmpInst::LT: return ConstantInt::get(get_const_int_value(value1) < get_const_int_value(value2), module_); + case CmpInst::LE: return ConstantInt::get(get_const_int_value(value1) <= get_const_int_value(value2), module_); + } + case Instruction::fcmp: + switch (dynamic_cast(instr)->get_cmp_op()) { + case FCmpInst::EQ: return ConstantInt::get(get_const_fp_value(value1) == get_const_fp_value(value2), module_); + case FCmpInst::NE: return ConstantInt::get(get_const_fp_value(value1) != get_const_fp_value(value2), module_); + case FCmpInst::GT: return ConstantInt::get(get_const_fp_value(value1) > get_const_fp_value(value2), module_); + case FCmpInst::GE: return ConstantInt::get(get_const_fp_value(value1) >= get_const_fp_value(value2), module_); + case FCmpInst::LT: return ConstantInt::get(get_const_fp_value(value1) < get_const_fp_value(value2), module_); + case FCmpInst::LE: return ConstantInt::get(get_const_fp_value(value1) <= get_const_fp_value(value2), module_); + } + default: return nullptr; + } +} + +Constant *ConstFolder::compute(Instruction *instr, Constant *value1) { + auto op = instr->get_instr_type(); + switch (op) { + case Instruction::sitofp: return ConstantFP::get((float)get_const_int_value(value1), module_); + case Instruction::fptosi: return ConstantInt::get((int)get_const_fp_value(value1), module_); + case Instruction::zext: return ConstantInt::get((int)get_const_int_value(value1), module_); + default: return nullptr; + } +} + +namespace utils { +static std::string print_congruence_class(const CongruenceClass &cc) { + std::stringstream ss; + if (cc.index_ == 0) { + ss << "top class\n"; + return ss.str(); + } + ss << "\nindex: " << cc.index_ << "\nleader: " << cc.leader_->print() + << "\nvalue phi: " << (cc.value_phi_ ? cc.value_phi_->print() : "nullptr"s) + << "\nvalue expr: " << (cc.value_expr_ ? cc.value_expr_->print() : "nullptr"s) << "\nmembers: {"; + for (auto &member : cc.members_) + ss << member->print() << "; "; + ss << "}\n"; + return ss.str(); +} + +static std::string dump_cc_json(const CongruenceClass &cc) { + std::string json; + json += "["; + for (auto member : cc.members_) { + if (auto c = dynamic_cast(member)) + json += member->print() + ", "; + else + json += "\"%" + member->get_name() + "\", "; + } + json += "]"; + return json; +} + +static std::string dump_partition_json(const GVN::partitions &p) { + std::string json; + json += "["; + for (auto cc : p) + json += dump_cc_json(*cc) + ", "; + json += "]"; + return json; +} + +static std::string dump_bb2partition(const std::map &map) { + std::string json; + json += "{"; + for (auto [bb, p] : map) + json += "\"" + bb->get_name() + "\": " + dump_partition_json(p) + ","; + json += "}"; + return json; +} + +// logging utility for you +static void print_partitions(const GVN::partitions &p) { + if (p.empty()) { + LOG_DEBUG << "empty partitions\n"; + return; + } + std::string log; + for (auto &cc : p) + log += print_congruence_class(*cc); + LOG_DEBUG << log; // please don't use std::cout +} +} // namespace utils + +GVN::partitions GVN::join(const partitions &P1, const partitions &P2) { + // TODO: do intersection pair-wise + return {}; +} + +std::shared_ptr GVN::intersect(std::shared_ptr Ci, + std::shared_ptr Cj) { + // TODO + return {}; +} + +void GVN::detectEquivalences() { + bool changed = false; + // initialize pout with top + // iterate until converge + do { + // see the pseudo code in documentation + for (auto &bb : func_->get_basic_blocks()) { // you might need to visit the blocks in depth-first order + // get PIN of bb by predecessor(s) + // iterate through all instructions in the block + // and the phi instruction in all the successors + + // check changes in pout + } + } while (changed); +} + +shared_ptr GVN::valueExpr(Instruction *instr) { + // TODO + return {}; +} + +// instruction of the form `x = e`, mostly x is just e (SSA), but for copy stmt x is a phi instruction in the +// successor. Phi values (not copy stmt) should be handled in detectEquiv +/// \param bb basic block in which the transfer function is called +GVN::partitions GVN::transferFunction(Instruction *x, Value *e, partitions pin) { + partitions pout = clone(pin); + // TODO: get different ValueExpr by Instruction::OpID, modify pout + return pout; +} + +shared_ptr GVN::valuePhiFunc(shared_ptr ve, const partitions &P) { + // TODO + return {}; +} + +shared_ptr GVN::getVN(const partitions &pout, shared_ptr ve) { + // TODO: return what? + for (auto it = pout.begin(); it != pout.end(); it++) + if ((*it)->value_expr_ and *(*it)->value_expr_ == *ve) + return {}; + return nullptr; +} + +void GVN::initPerFunction() { + next_value_number_ = 1; + pin_.clear(); + pout_.clear(); +} + +void GVN::replace_cc_members() { + for (auto &[_bb, part] : pout_) { + auto bb = _bb; // workaround: structured bindings can't be captured in C++17 + for (auto &cc : part) { + if (cc->index_ == 0) + continue; + // if you are planning to do constant propagation, leaders should be set to constant at some point + for (auto &member : cc->members_) { + bool member_is_phi = dynamic_cast(member); + bool value_phi = cc->value_phi_ != nullptr; + if (member != cc->leader_ and (value_phi or !member_is_phi)) { + // only replace the members if users are in the same block as bb + member->replace_use_with_when(cc->leader_, [bb](User *user) { + if (auto instr = dynamic_cast(user)) { + auto parent = instr->get_parent(); + auto &bb_pre = parent->get_pre_basic_blocks(); + if (instr->is_phi()) // as copy stmt, the phi belongs to this block + return std::find(bb_pre.begin(), bb_pre.end(), bb) != bb_pre.end(); + else + return parent == bb; + } + return false; + }); + } + } + } + } + return; +} + +// top-level function, done for you +void GVN::run() { + std::ofstream gvn_json; + if (dump_json_) { + gvn_json.open("gvn.json", std::ios::out); + gvn_json << "["; + } + + folder_ = std::make_unique(m_); + func_info_ = std::make_unique(m_); + func_info_->run(); + dce_ = std::make_unique(m_); + dce_->run(); // let dce take care of some dead phis with undef + + for (auto &f : m_->get_functions()) { + if (f.get_basic_blocks().empty()) + continue; + func_ = &f; + initPerFunction(); + LOG_INFO << "Processing " << f.get_name(); + detectEquivalences(); + LOG_INFO << "===============pin=========================\n"; + for (auto &[bb, part] : pin_) { + LOG_INFO << "\n===============bb: " << bb->get_name() << "=========================\npartitionIn: "; + for (auto &cc : part) + LOG_INFO << utils::print_congruence_class(*cc); + } + LOG_INFO << "\n===============pout=========================\n"; + for (auto &[bb, part] : pout_) { + LOG_INFO << "\n=====bb: " << bb->get_name() << "=====\npartitionOut: "; + for (auto &cc : part) + LOG_INFO << utils::print_congruence_class(*cc); + } + if (dump_json_) { + gvn_json << "{\n\"function\": "; + gvn_json << "\"" << f.get_name() << "\", "; + gvn_json << "\n\"pout\": " << utils::dump_bb2partition(pout_); + gvn_json << "},"; + } + replace_cc_members(); // don't delete instructions, just replace them + } + dce_->run(); // let dce do that for us + if (dump_json_) + gvn_json << "]"; +} + +template +static bool equiv_as(const Expression &lhs, const Expression &rhs) { + // we use static_cast because we are very sure that both operands are actually T, not other types. + return static_cast(&lhs)->equiv(static_cast(&rhs)); +} + +bool GVNExpression::operator==(const Expression &lhs, const Expression &rhs) { + if (lhs.get_expr_type() != rhs.get_expr_type()) + return false; + switch (lhs.get_expr_type()) { + case Expression::e_constant: return equiv_as(lhs, rhs); + case Expression::e_bin: return equiv_as(lhs, rhs); + case Expression::e_phi: return equiv_as(lhs, rhs); + } +} + +bool GVNExpression::operator==(const shared_ptr &lhs, const shared_ptr &rhs) { + if (lhs == nullptr and rhs == nullptr) // is the nullptr check necessary here? + return true; + return lhs and rhs and *lhs == *rhs; +} + +GVN::partitions GVN::clone(const partitions &p) { + partitions data; + for (auto &cc : p) { + data.insert(std::make_shared(*cc)); + } + return data; +} + +bool operator==(const GVN::partitions &p1, const GVN::partitions &p2) { + // TODO: how to compare partitions? + return false; +} + +bool CongruenceClass::operator==(const CongruenceClass &other) const { + // TODO: which fields need to be compared? + return false; +} diff --git a/tests/4-ir-opt/lab4_evals.py b/tests/4-ir-opt/lab4_evals.py new file mode 100755 index 0000000..013ff90 --- /dev/null +++ b/tests/4-ir-opt/lab4_evals.py @@ -0,0 +1,349 @@ +#!/usr/bin/env python3 +import subprocess +import os +import argparse +import re +import time +import glob +import json5 +from pathlib import Path + +# you can run the script from anywhere! +cminusfc_path = Path(__file__).absolute().parents[2] / "build/cminusfc" +cminusfc = str(cminusfc_path) + +try: + from tqdm import tqdm +except Exception as _: + os.system("apt install -y python3-tqdm || python3 -m pip install tqdm") + from tqdm import tqdm +repeated_time = 3 + + +def init_args(): + parser = argparse.ArgumentParser() + parser.add_argument("--GlobalValueNumber", "-gvn", action="store_true") + parser.add_argument( + "--GlobalValueNumberAnalysis", "-gvn-analysis", action="store_true" + ) + args = parser.parse_args() + return args + + +def get_raw_testcases(root_path): + file_names = glob.glob(root_path + "/*.cminus") + # pattern=r'[0-9]+' + # file_names.sort(key= lambda item:int(re.findall(pattern, os.path.basename(item))[0])) + return file_names + + +def get_baseline_files(root_path): + file_names = glob.glob(root_path + "/*.ll") + # pattern=r'[0-9]+' + # file_names.sort(key= lambda item:int(re.findall(pattern, os.path.basename(item))[0])) + return file_names + + +def compile_baseline_files(file_lists): + print("Compiling baseline files") + progess_bar = tqdm(total=len(file_lists), ncols=50) + exec_files = list() + for each in file_lists: + exec_file, _ = os.path.splitext(each) + COMMAND = "clang -O0 -w " + each + " -o " + exec_file + " -L. -lcminus_io" + try: + result = subprocess.run( + COMMAND, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=True, + timeout=1, + ) + if result.returncode == 0: + exec_files.append(exec_file) + else: + exec_files.append(None) + print( + f"\nCompile {each.split('/')[-1]} \033[31;1m failed\033[0m") + except Exception as _: + exec_files.append(None) + print(f"Compile {each.split('/')[-1]} \033[31;1m failed\033[0m") + progess_bar.update(1) + progess_bar.close() + return exec_files + + +def compile_testcases(file_lists, option): + COMMAND = cminusfc + " " + option + " " + exec_files = list() + print("Compiling ", option) + progess_bar = tqdm(total=len(file_lists), ncols=50) + + for each in file_lists: + + try: + result = subprocess.run( + COMMAND + each, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=True, + timeout=1, + ) + if result.returncode == 0: + exec_file, _ = os.path.splitext(each) + exec_files.append(exec_file) + else: + exec_files.append(None) + print( + f"\nCompile {each.split('/')[-1]} \033[31;1m failed\033[0m") + except Exception as _: + exec_files.append(None) + print(f"Compile {each.split('/')[-1]} \033[31;1m failed\033[0m") + + progess_bar.update(1) + progess_bar.close() + return exec_files + + +def gvn_evaluate(file_lists, metric_func, check_mode=True): + result = list() + print("Evalution ") + progess_bar = tqdm(total=len(file_lists), ncols=50) + for each in file_lists: + if each == None: + result.append(None) + continue + if check_if_correct(each, check_mode): + base = 0 + for _ in range(repeated_time): + re_value = metric_func(each) + if re_value != None: + base += re_value / repeated_time + else: + base = None + break + result.append(base) + else: + result.append(None) + + subprocess.call(["rm", "-rf", each]) + progess_bar.update(1) + progess_bar.close() + return result + + +def check_if_correct(exec_file, check_mode=True): + if check_mode: + input_option = None + if os.path.exists(exec_file + ".in"): + with open(exec_file + ".in", "rb") as fin: + input_option = fin.read() + try: + result = subprocess.run( + [exec_file], + input=input_option, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + timeout=10, + ) + with open(exec_file + ".out", "rb") as fout: + answer = fout.read() + if result.stdout == answer: + return True + else: + print( + f"Execute {exec_file.split('/')[-1]} result is not correct! your output:{result.stdout}, but the answer is:{answer}" + ) + return False + + except Exception as e: + print( + f"Execute {exec_file.split('/')[-1]} \033[31;1m failed\033[0m") + return False + else: + return True + + +def get_execute_time(exec_file): + try: + cmdline = "taskset -c 0 " + exec_file + " < " + exec_file + ".in" + " 2>&1" + input_option = None + start = time.time() + result = subprocess.run( + [cmdline], + shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True, + timeout=10, + ) + elapsed = time.time() - start + return elapsed + except Exception as e: + print(f"Execute {exec_file.split('/')[-1]} \033[31;1m failed\033[0m") + return None + + +def table_print(testcase, before_optimization, after_optimization, baseline): + if len(before_optimization) == len(baseline) and len(before_optimization) == len( + after_optimization + ): + pass + else: + max_len = max( + [len(before_optimization), len(after_optimization), len(baseline)] + ) + if len(before_optimization) < max_len: + before_optimization += [None] * \ + (max_len - len(before_optimization)) + if len(after_optimization) < max_len: + after_optimization += [None] * (max_len - len(after_optimization)) + if len(baseline) < max_len: + baseline += [None] * (max_len - len(baseline)) + print( + "\033[33;1mtestcase", + "\t", + "\033[31;1mbefore optimization\033[0m", + "\t", + "\033[32;1mafter optimization\033[0m", + "\t", + "\033[35;1mbaseline\033[0m", + ) + for index, (result1, result2, result3) in enumerate( + zip(before_optimization, after_optimization, baseline) + ): + print( + testcase[index].split("/")[-1], + "\t\t%.2f" % result1 if result1 != None else "\t\tNone", + "\t\t\t%.2f" % result2 if result2 != None else "\t\t\tNone", + "\t\t %.2f" % result3 if result3 != None else "\t\t None", + ) + + +def calculate_gvn_bb_score(input_partition, answer_partition): + # score of every bb is either 0 or 1 + if len(input_partition) != len(answer_partition): + return 0 + score_cnt = 0 + for in_cc in input_partition: + for ans_cc in answer_partition: + if set(in_cc) == set(ans_cc): + score_cnt += 1 + break + if score_cnt == len(answer_partition): + return 1 + return 0 + + +def calculate_gvn_score(input_functions, answer_functions): + # input & answer is dict from json + # calculate score use sum(score of every bb)/total_bb + # score of every bb is either 1 or 0 + # total_bb is count of pout + + total_bb = 0 + for ans_func in answer_functions: + total_bb += len(ans_func["pout"]) + cal_score = 0 + for ans_func in answer_functions: + for in_func in input_functions: + if ans_func["function"] == in_func["function"]: + for ans_bb, ans_partition in ans_func["pout"].items(): + for in_bb, in_partition in in_func["pout"].items(): + if ans_bb == in_bb: + cal_score += calculate_gvn_bb_score( + in_partition, ans_partition + ) + else: + continue + else: + continue + return cal_score / total_bb + + +if __name__ == "__main__": + script_path = os.path.join(os.getcwd(), __file__) + usr_args = init_args() + + if usr_args.GlobalValueNumber: + print("=" * 10, "GlobalValueNumber", "=" * 10) + root_path = os.path.join( + os.path.dirname(script_path), "testcases/GVN/performance" + ) + testcases = get_raw_testcases(root_path=root_path) + exec_files1 = compile_testcases( + file_lists=testcases, option="-mem2reg") + results1 = gvn_evaluate(file_lists=exec_files1, + metric_func=get_execute_time) + + exec_files2 = compile_testcases( + file_lists=testcases, option="-mem2reg -gvn") + results2 = gvn_evaluate(file_lists=exec_files2, + metric_func=get_execute_time) + + baseline_files = get_baseline_files( + os.path.join(root_path, "baseline")) + exec_files3 = compile_baseline_files(baseline_files) + results3 = gvn_evaluate( + file_lists=exec_files3, metric_func=get_execute_time, check_mode=False + ) + table_print( + testcase=testcases, + before_optimization=results1, + after_optimization=results2, + baseline=results3, + ) + + if usr_args.GlobalValueNumberAnalysis: + print("=" * 10, "GlobalValueNumberAnalysis", "=" * 10) + root_path = os.path.join( + os.path.dirname(script_path), "testcases/GVN/functional" + ) + testcases = get_raw_testcases(root_path=root_path) + option = "-mem2reg -emit-llvm -gvn -dump-json" + COMMAND = cminusfc + " " + option + " " + print("Compiling ", option) + progess_bar = tqdm(total=len(testcases), ncols=50) + + score_list = [] + i = 0 + for each in testcases: + i += 1 + try: + result = subprocess.run( + COMMAND + each, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=True, + timeout=1, + ) + if result.returncode == 0: + exec_file, _ = os.path.splitext(each) + each_base = each.split("/")[-1] + print(f"\nCompile {each_base} \033[32;1m success\033[0m") + with open("gvn.json", "r") as load_input: + with open(exec_file + ".json", "r") as load_answer: + print( + f"generate json {each_base} \033[32;1m success\033[0m" + ) + # here, input is a list of dict + input_functions = json5.load(load_input) + answer_functions = json5.load(load_answer) + score = calculate_gvn_score( + input_functions, answer_functions + ) + score_list.append((each_base, score)) + subprocess.call(["rm", "-rf", exec_file + ".ll"]) + else: + print( + f"\nnCompile {each.split('/')[-1]} \033[31;1m failed\033[0m") + except Exception as _: + print( + f"Analyze {each.split('/')[-1]} \033[31;1m failed\033[0m") + progess_bar.update(1) + progess_bar.close() + + i = 0 + for file, score in score_list: + i += 1 + print(file + ":", score) diff --git a/tests/4-ir-opt/testcases/GVN/functional/bin.cminus b/tests/4-ir-opt/testcases/GVN/functional/bin.cminus new file mode 100644 index 0000000..e63686b --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/functional/bin.cminus @@ -0,0 +1,19 @@ +/* c and d are redundant, and also check for constant propagation */ +int main(void) { + int a; + int b; + int c; + int d; + if (input() > input()) { + a = 33 + 33; + b = 44 + 44; + c = a + b; + } else { + a = 55 + 55; + b = 66 + 66; + c = a + b; + } + output(c); + d = a + b; + output(d); +} diff --git a/tests/4-ir-opt/testcases/GVN/functional/bin.json b/tests/4-ir-opt/testcases/GVN/functional/bin.json new file mode 100644 index 0000000..40c9cc3 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/functional/bin.json @@ -0,0 +1,109 @@ +[ + { + "function": "main", + "pout": { + "label_entry": [ + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op3", + ], + [ + "%op4", + ], + ], + "label5": [ + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op3", + ], + [ + "%op4", + ], + [ + "%op6", + "%op12", + ], + [ + "%op7", + "%op11", + ], + [ + "%op8", + "%op10", + ], + ], + "label9": [ + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op3", + ], + [ + "%op4", + ], + [ + "%op12", + ], + [ + "%op11", + ], + [ + "%op13", + "%op10", + ], + ], + "label14": [ + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op3", + ], + [ + "%op4", + ], + [ + "%op15", + "%op12", + ], + [ + "%op16", + "%op11", + ], + [ + "%op17", + "%op10", + ], + ], + } + }, +] \ No newline at end of file diff --git a/tests/4-ir-opt/testcases/GVN/functional/loop3.cminus b/tests/4-ir-opt/testcases/GVN/functional/loop3.cminus new file mode 100644 index 0000000..2567a98 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/functional/loop3.cminus @@ -0,0 +1,41 @@ +/* c and d are redundant, e and f are not redundant */ +int main(void) { + int i; + int j; + int a; + int b; + int c; + int d; + int e; + int f; + + a = 0; + b = 0; + c = 0; + d = 0; + e = 0; + f = 0; + + i = 1; + while (i < 10) { + j = 1; + a = input(); + b = input(); + c = a + b; + while (j < 10) { + i = i + j; + j = i + j; + c = a + b; + } + d = a + b; + i = i + 1; + + e = c + d; + output(c); + output(d); + } + f = c + d; + output(e); + output(f); + return 0; +} diff --git a/tests/4-ir-opt/testcases/GVN/functional/loop3.json b/tests/4-ir-opt/testcases/GVN/functional/loop3.json new file mode 100644 index 0000000..a80a9bd --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/functional/loop3.json @@ -0,0 +1,244 @@ +[ + { + "function": "main", + "pout": { + "label_entry": [ + [ + 0, + "%op3", + "%op2", + "%op1", + ], + [ + 1, + "%op7", + ], + ], + "label0": [ + [ + "%op3", + "%op2", + ], + [ + "%op1", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op10", + ], + ], + "label11": [ + [ + "%op3", + "%op2", + ], + [ + "%op1", + ], + [ + "%op20", + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op10", + ], + [ + "%op12", + ], + [ + "%op13", + ], + [ + "%op14", + "%op18", + ], + [ + 1, + "%op19", + ], + ], + "label15": [ + [ + "%op3", + "%op2", + ], + [ + "%op1", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op10", + ], + [ + "%op16", + ], + ], + "label17": [ + [ + "%op12", + ], + [ + "%op13", + ], + [ + "%op3", + "%op2", + ], + [ + "%op1", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op10", + ], + [ + "%op7", + ], + [ + "%op20", + ], + [ + "%op14", + "%op18", + ], + [ + "%op19", + ], + [ + "%op21", + ], + [ + "%op22", + ], + [ + "%op23", + ], + ], + "label24": [ + [ + "%op12", + ], + [ + "%op13", + ], + [ + "%op3", + "%op2", + ], + [ + "%op1", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op10", + ], + [ + "%op7", + ], + [ + "%op14", + "%op27", + "%op18", + ], + [ + "%op21", + ], + [ + "%op22", + ], + [ + "%op23", + ], + [ + "%op25", + ], + [ + "%op26", + "%op19", + ], + [ + "%op20", + ], + ], + "label28": [ + [ + "%op12", + ], + [ + "%op13", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op10", + ], + [ + "%op20", + ], + [ + "%op14", + "%op29", + "%op3", + "%op18", + "%op2", + ], + [ + "%op19", + ], + [ + "%op21", + ], + [ + "%op22", + ], + [ + "%op23", + ], + [ + "%op30", + "%op7", + ], + [ + "%op31", + "%op1", + ], + ], + } + }, +] \ No newline at end of file diff --git a/tests/4-ir-opt/testcases/GVN/functional/pure_func.cminus b/tests/4-ir-opt/testcases/GVN/functional/pure_func.cminus new file mode 100644 index 0000000..bd23964 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/functional/pure_func.cminus @@ -0,0 +1,41 @@ +/* `max` is pure, can be detected using FuncInfo */ +int max(int a, int b) { + if (a > b) + return a; + return b; +} + +int a[10000]; +int b[10000]; + +void inputarray(int a[], int n) { + int i; + i = 0; + while (i < n) { + a[i] = input(); + i = i + 1; + } +} + +int main(void) { + int i; + int n; + n = input(); + inputarray(a, n); + inputarray(b, n); + i = 0; + while (i < n) { + int ai; + int bi; + /* `gep a i` and `max(ai,bi)` are redundant */ + ai = a[i]; + bi = b[i]; + a[i] = max(ai, bi) * max(ai, bi); + i = i + 1; + } + i = 0; + while (i < n) { + output(a[i]); + i = i + 1; + } +} \ No newline at end of file diff --git a/tests/4-ir-opt/testcases/GVN/functional/pure_func.json b/tests/4-ir-opt/testcases/GVN/functional/pure_func.json new file mode 100644 index 0000000..6b1cf46 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/functional/pure_func.json @@ -0,0 +1,863 @@ +[ + { + "function": "max", + "pout": { + "label_entry": [ + [ + "%arg0", + ], + [ + "%arg1", + ], + [ + "%a", + ], + [ + "%b", + ], + [ + "%op2", + ], + [ + "%op3", + ], + [ + "%op4", + ], + ], + "label5": [ + [ + "%arg0", + ], + [ + "%arg1", + ], + [ + "%a", + ], + [ + "%b", + ], + [ + "%op2", + ], + [ + "%op3", + ], + [ + "%op4", + ], + ], + "label6": [ + [ + "%arg0", + ], + [ + "%arg1", + ], + [ + "%a", + ], + [ + "%b", + ], + [ + "%op2", + ], + [ + "%op3", + ], + [ + "%op4", + ], + ], + } + }, + { + "function": "inputarray", + "pout": { + "label_entry": [ + [ + "%arg0", + ], + [ + "%arg1", + ], + [ + "%a", + ], + [ + "%b", + ], + [ + "%op4", + 0, + ], + ], + "label3": [ + [ + "%arg0", + ], + [ + "%arg1", + ], + [ + "%a", + ], + [ + "%b", + ], + [ + "%op4", + ], + [ + "%op5", + ], + [ + "%op6", + ], + [ + "%op7", + ], + ], + "label8": [ + [ + "%arg0", + ], + [ + "%arg1", + ], + [ + "%a", + ], + [ + "%b", + ], + [ + "%op4", + ], + [ + "%op5", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op9", + ], + [ + "%op10", + ], + ], + "label11": [ + [ + "%arg0", + ], + [ + "%arg1", + ], + [ + "%a", + ], + [ + "%b", + ], + [ + "%op4", + ], + [ + "%op5", + ], + [ + "%op6", + ], + [ + "%op7", + ], + ], + "label12": [ + [ + "%arg0", + ], + [ + "%arg1", + ], + [ + "%a", + ], + [ + "%b", + ], + [ + "%op4", + ], + [ + "%op5", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op9", + ], + [ + "%op10", + ], + ], + "label13": [ + [ + "%arg0", + ], + [ + "%arg1", + ], + [ + "%a", + ], + [ + "%b", + ], + [ + "%op5", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op9", + ], + [ + "%op10", + ], + [ + "%op14", + ], + [ + "%op4", + "%op15", + ], + ], + } + }, + { + "function": "main", + "pout": { + "label_entry": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + 0, + "%op6", + ], + [ + "%op1", + ], + [ + "%op2", + ], + ], + "label3": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + ], + "label10": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op11", + ], + ], + "label12": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + 0, + "%op31", + ], + ], + "label13": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op11", + ], + ], + "label14": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op11", + "%op17", + ], + [ + "%op15", + ], + [ + "%op16", + ], + ], + "label18": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op11", + "%op17", + ], + [ + "%op15", + ], + [ + "%op16", + ], + ], + "label19": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op11", + "%op17", + "%op25", + ], + [ + "%op15", + ], + [ + "%op16", + ], + [ + "%op20", + ], + [ + "%op21", + ], + [ + "%op22", + "%op23", + ], + [ + "%op24", + ], + ], + "label26": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op11", + "%op17", + "%op25", + ], + [ + "%op15", + ], + [ + "%op16", + ], + [ + "%op20", + ], + [ + "%op21", + ], + [ + "%op22", + "%op23", + ], + [ + "%op24", + ], + ], + "label27": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op11", + "%op17", + "%op25", + ], + [ + "%op15", + "%op28", + ], + [ + "%op16", + ], + [ + "%op20", + ], + [ + "%op21", + ], + [ + "%op22", + "%op23", + ], + [ + "%op24", + ], + [ + "%op6", + "%op29", + ], + ], + "label30": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op31", + ], + [ + "%op32", + ], + [ + "%op33", + ], + [ + "%op34", + ], + ], + "label35": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op31", + ], + [ + "%op32", + ], + [ + "%op33", + ], + [ + "%op34", + ], + [ + "%op36", + ], + ], + "label37": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op31", + ], + [ + "%op32", + ], + [ + "%op33", + ], + [ + "%op34", + ], + ], + "label38": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op31", + ], + [ + "%op32", + ], + [ + "%op33", + ], + [ + "%op34", + ], + [ + "%op36", + ], + ], + "label39": [ + [ + "%a", + ], + [ + "%b", + ], + [ + "%op0", + ], + [ + "%op1", + ], + [ + "%op2", + ], + [ + "%op6", + ], + [ + "%op7", + ], + [ + "%op8", + ], + [ + "%op9", + ], + [ + "%op32", + ], + [ + "%op33", + ], + [ + "%op34", + ], + [ + "%op36", + ], + [ + "%op40", + ], + [ + "%op41", + ], + [ + "%op31", + "%op42", + ], + ], + } + }, +] \ No newline at end of file diff --git a/tests/4-ir-opt/testcases/GVN/functional/single_bb1.cminus b/tests/4-ir-opt/testcases/GVN/functional/single_bb1.cminus new file mode 100644 index 0000000..fca23c1 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/functional/single_bb1.cminus @@ -0,0 +1,12 @@ +/* check GVN on one-block input */ +int main(void) { + int a; + int b; + /* we provide a pure function analysis, + input is not side-effect free, so multiple calls to input are considered different */ + a = input(); + b = input(); + output(a + b); + output(a + b); + return 0; +} diff --git a/tests/4-ir-opt/testcases/GVN/functional/single_bb1.json b/tests/4-ir-opt/testcases/GVN/functional/single_bb1.json new file mode 100644 index 0000000..5ea2140 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/functional/single_bb1.json @@ -0,0 +1,4 @@ +[{ +"function": "main", +"pout": {"label_entry": [["%op0", ], ["%op1", ], ["%op2", "%op3", ], ], +}},] \ No newline at end of file diff --git a/tests/4-ir-opt/testcases/GVN/performance/baseline/const-prop.in b/tests/4-ir-opt/testcases/GVN/performance/baseline/const-prop.in new file mode 100644 index 0000000..ea600cb --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/baseline/const-prop.in @@ -0,0 +1 @@ +100000000 diff --git a/tests/4-ir-opt/testcases/GVN/performance/baseline/const-prop.ll b/tests/4-ir-opt/testcases/GVN/performance/baseline/const-prop.ll new file mode 100644 index 0000000..d8a1c73 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/baseline/const-prop.ll @@ -0,0 +1,26 @@ +declare i32 @input() + +declare void @output(i32) + +declare void @outputFloat(float) + +declare void @neg_idx_except() + +define void @main() { +label_entry: + %op0 = call i32 @input() + br label %label1 +label1: ; preds = %label_entry, %label11 + %op2 = phi i32 [ 0, %label_entry ], [ 711082625, %label11 ] + %op7 = phi i32 [ 0, %label_entry ], [ %op37, %label11 ] + %op8 = icmp slt i32 %op7, %op0 + %op9 = zext i1 %op8 to i32 + %op10 = icmp ne i32 %op9, 0 + br i1 %op10, label %label11, label %label38 +label11: ; preds = %label1 + %op37 = add i32 %op7, 1 + br label %label1 +label38: ; preds = %label1 + call void @output(i32 %op2) + ret void +} diff --git a/tests/4-ir-opt/testcases/GVN/performance/baseline/transpose.in b/tests/4-ir-opt/testcases/GVN/performance/baseline/transpose.in new file mode 100644 index 0000000..f37548b --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/baseline/transpose.in @@ -0,0 +1,32 @@ +10000000 +30 +2 +5 +4 +25 +8 +125 +16 +625 +32 +3125 +2 +5 +4 +25 +8 +125 +16 +625 +32 +3125 +2 +5 +4 +25 +8 +125 +16 +625 +32 +3125 diff --git a/tests/4-ir-opt/testcases/GVN/performance/baseline/transpose.ll b/tests/4-ir-opt/testcases/GVN/performance/baseline/transpose.ll new file mode 100644 index 0000000..154e7f3 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/baseline/transpose.ll @@ -0,0 +1,192 @@ +; ModuleID = 'cminus' +source_filename = "./test.cminus" + +@matrix = global [20000000 x i32] zeroinitializer +@ad = global [100000 x i32] zeroinitializer +@len = global i32 zeroinitializer +declare i32 @input() + +declare void @output(i32) + +declare void @outputFloat(float) + +declare void @neg_idx_except() + +define void @readarray() { +label_entry: + br label %label0 +label0: ; preds = %label_entry, %label11 + %op1 = phi i32 [ 0, %label_entry ], [ %op13, %label11 ] + %op2 = load i32, i32* @len + %op3 = icmp slt i32 %op1, %op2 + %op4 = zext i1 %op3 to i32 + %op5 = icmp ne i32 %op4, 0 + br i1 %op5, label %label6, label %label9 +label6: ; preds = %label0 + %op7 = call i32 @input() + %op8 = icmp slt i32 %op1, 0 + br i1 %op8, label %label10, label %label11 +label9: ; preds = %label0 + ret void +label10: ; preds = %label6 + call void @neg_idx_except() + ret void +label11: ; preds = %label6 + %op12 = getelementptr [100000 x i32], [100000 x i32]* @ad, i32 0, i32 %op1 + store i32 %op7, i32* %op12 + %op13 = add i32 %op1, 1 + br label %label0 +} +define i32 @transpose(i32 %arg0, i32* %arg1, i32 %arg2) { +label_entry: + %op4 = sdiv i32 %arg0, %arg2 + br label %label5 +label5: ; preds = %label_entry, %label25 + %op8 = phi i32 [ 0, %label_entry ], [ %op26, %label25 ] + %op9 = icmp slt i32 %op8, %op4 + %op10 = zext i1 %op9 to i32 + %op11 = icmp ne i32 %op10, 0 + br i1 %op11, label %label12, label %label13 +label12: ; preds = %label5 + br label %label15 +label13: ; preds = %label5 + ret i32 -1 +label15: ; preds = %label12, %label29 + %op17 = phi i32 [ 0, %label12 ], [ %op31, %label29 ] + %op18 = icmp slt i32 %op17, %arg2 + %op19 = zext i1 %op18 to i32 + %op20 = icmp ne i32 %op19, 0 + br i1 %op20, label %label21, label %label25 +label21: ; preds = %label15 + %op22 = icmp slt i32 %op8, %op17 + %op23 = zext i1 %op22 to i32 + %op24 = icmp ne i32 %op23, 0 + br i1 %op24, label %label27, label %label32 +label25: ; preds = %label15 + %op26 = add i32 %op8, 1 + br label %label5 +label27: ; preds = %label21 + %op28 = add i32 %op17, 1 + br label %label29 +label29: ; preds = %label27, %label57 + %op31 = phi i32 [ %op28, %label27 ], [ %op59, %label57 ] + br label %label15 +label32: ; preds = %label21 + %op33 = mul i32 %op8, %arg2 + %op34 = add i32 %op33, %op17 + %op35 = icmp slt i32 %op34, 0 + br i1 %op35, label %label36, label %label37 +label36: ; preds = %label32 + call void @neg_idx_except() + ret i32 0 +label37: ; preds = %label32 + %op38 = getelementptr i32, i32* %arg1, i32 %op34 + %op39 = load i32, i32* %op38 + br i1 %op35, label %label43, label %label44 +label43: ; preds = %label37 + call void @neg_idx_except() + ret i32 0 +label44: ; preds = %label37 + %op46 = load i32, i32* %op38 + %op47 = mul i32 %op17, %op4 + %op48 = add i32 %op47, %op8 + %op49 = icmp slt i32 %op48, 0 + br i1 %op49, label %label50, label %label51 +label50: ; preds = %label44 + call void @neg_idx_except() + ret i32 0 +label51: ; preds = %label44 + %op52 = getelementptr i32, i32* %arg1, i32 %op48 + store i32 %op46, i32* %op52 + br i1 %op35, label %label56, label %label57 +label56: ; preds = %label51 + call void @neg_idx_except() + ret i32 0 +label57: ; preds = %label51 + store i32 %op39, i32* %op38 + %op59 = add i32 %op17, 1 + br label %label29 +} +define i32 @main() { +label_entry: + %op0 = call i32 @input() + %op1 = call i32 @input() + store i32 %op1, i32* @len + call void @readarray() + br label %label2 +label2: ; preds = %label_entry, %label11 + %op3 = phi i32 [ 0, %label_entry ], [ %op13, %label11 ] + %op4 = icmp slt i32 %op3, %op0 + %op5 = zext i1 %op4 to i32 + %op6 = icmp ne i32 %op5, 0 + br i1 %op6, label %label7, label %label9 +label7: ; preds = %label2 + %op8 = icmp slt i32 %op3, 0 + br i1 %op8, label %label10, label %label11 +label9: ; preds = %label2 + br label %label14 +label10: ; preds = %label7 + call void @neg_idx_except() + ret i32 0 +label11: ; preds = %label7 + %op12 = getelementptr [20000000 x i32], [20000000 x i32]* @matrix, i32 0, i32 %op3 + store i32 %op3, i32* %op12 + %op13 = add i32 %op3, 1 + br label %label2 +label14: ; preds = %label9, %label25 + %op15 = phi i32 [ 0, %label9 ], [ %op29, %label25 ] + %op16 = load i32, i32* @len + %op17 = icmp slt i32 %op15, %op16 + %op18 = zext i1 %op17 to i32 + %op19 = icmp ne i32 %op18, 0 + br i1 %op19, label %label20, label %label23 +label20: ; preds = %label14 + %op21 = getelementptr [20000000 x i32], [20000000 x i32]* @matrix, i32 0, i32 0 + %op22 = icmp slt i32 %op15, 0 + br i1 %op22, label %label24, label %label25 +label23: ; preds = %label14 + br label %label30 +label24: ; preds = %label20 + call void @neg_idx_except() + ret i32 0 +label25: ; preds = %label20 + %op26 = getelementptr [100000 x i32], [100000 x i32]* @ad, i32 0, i32 %op15 + %op27 = load i32, i32* %op26 + %op28 = call i32 @transpose(i32 %op0, i32* %op21, i32 %op27) + %op29 = add i32 %op15, 1 + br label %label14 +label30: ; preds = %label23, %label45 + %op31 = phi i32 [ 0, %label23 ], [ %op49, %label45 ] + %op32 = phi i32 [ 0, %label23 ], [ %op50, %label45 ] + %op33 = load i32, i32* @len + %op34 = icmp slt i32 %op32, %op33 + %op35 = zext i1 %op34 to i32 + %op36 = icmp ne i32 %op35, 0 + br i1 %op36, label %label37, label %label40 +label37: ; preds = %label30 + %op38 = mul i32 %op32, %op32 + %op39 = icmp slt i32 %op32, 0 + br i1 %op39, label %label44, label %label45 +label40: ; preds = %label30 + %op41 = icmp slt i32 %op31, 0 + %op42 = zext i1 %op41 to i32 + %op43 = icmp ne i32 %op42, 0 + br i1 %op43, label %label51, label %label53 +label44: ; preds = %label37 + call void @neg_idx_except() + ret i32 0 +label45: ; preds = %label37 + %op46 = getelementptr [20000000 x i32], [20000000 x i32]* @matrix, i32 0, i32 %op32 + %op47 = load i32, i32* %op46 + %op48 = mul i32 %op38, %op47 + %op49 = add i32 %op31, %op48 + %op50 = add i32 %op32, 1 + br label %label30 +label51: ; preds = %label40 + %op52 = sub i32 0, %op31 + br label %label53 +label53: ; preds = %label40, %label51 + %op54 = phi i32 [ %op31, %label40 ], [ %op52, %label51 ] + call void @output(i32 %op54) + ret i32 0 +} diff --git a/tests/4-ir-opt/testcases/GVN/performance/const-prop.cminus b/tests/4-ir-opt/testcases/GVN/performance/const-prop.cminus new file mode 100644 index 0000000..93d726f --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/const-prop.cminus @@ -0,0 +1,23 @@ +void main(void) { + int c; + int a; + int b; + int d; + int f; + int g; + int loopCnt; + loopCnt = input(); + c = 0; + a = 0; + g = 0; + while (c < loopCnt) { + a = 1.23456 * 5.73478 * 2.3333 * 4.3673 * 6.34636; + b = a * a * a * a * a * a; + d = b * b * b * b * b * b; + f = d * d * d * d * d * d; + g = f * f * f * f * f * f; + c = c + 1; + } + output(g); + return; +} \ No newline at end of file diff --git a/tests/4-ir-opt/testcases/GVN/performance/const-prop.in b/tests/4-ir-opt/testcases/GVN/performance/const-prop.in new file mode 100644 index 0000000..ea600cb --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/const-prop.in @@ -0,0 +1 @@ +100000000 diff --git a/tests/4-ir-opt/testcases/GVN/performance/const-prop.out b/tests/4-ir-opt/testcases/GVN/performance/const-prop.out new file mode 100644 index 0000000..79f74f4 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/const-prop.out @@ -0,0 +1 @@ +711082625 diff --git a/tests/4-ir-opt/testcases/GVN/performance/transpose.cminus b/tests/4-ir-opt/testcases/GVN/performance/transpose.cminus new file mode 100644 index 0000000..0aff64f --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/transpose.cminus @@ -0,0 +1,70 @@ +int matrix[20000000]; +int ad[100000]; + +int len; + +void readarray(void) { + int cnt; + cnt = 0; + while (cnt < len) { + ad[cnt] = input(); + cnt = cnt + 1; + } +} + +int transpose(int n, int matrix[], int rowsize) { + int colsize; + int i; + int j; + int curr; + colsize = n / rowsize; + i = 0; + j = 0; + while (i < colsize) { + j = 0; + while (j < rowsize) { + if (i < j) { + j = j + 1; + } else { + curr = matrix[i * rowsize + j]; + matrix[j * colsize + i] = matrix[i * rowsize + j]; + matrix[i * rowsize + j] = curr; + j = j + 1; + } + } + i = i + 1; + } + return 0 - 1; +} + +int main(void) { + int n; + int i; + int ans; + n = input(); + len = input(); + readarray(); + i = 0; + + while (i < n) { + matrix[i] = i; + i = i + 1; + } + i = 0; + while (i < len) { + transpose(n, matrix, ad[i]); + i = i + 1; + } + + ans = 0; + i = 0; + while (i < len) { + ans = ans + i * i * matrix[i]; + i = i + 1; + } + if (ans < 0) { + ans = 0 - ans; + } + output(ans); + return 0; +} diff --git a/tests/4-ir-opt/testcases/GVN/performance/transpose.in b/tests/4-ir-opt/testcases/GVN/performance/transpose.in new file mode 100644 index 0000000..f37548b --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/transpose.in @@ -0,0 +1,32 @@ +10000000 +30 +2 +5 +4 +25 +8 +125 +16 +625 +32 +3125 +2 +5 +4 +25 +8 +125 +16 +625 +32 +3125 +2 +5 +4 +25 +8 +125 +16 +625 +32 +3125 diff --git a/tests/4-ir-opt/testcases/GVN/performance/transpose.out b/tests/4-ir-opt/testcases/GVN/performance/transpose.out new file mode 100644 index 0000000..006d9b5 --- /dev/null +++ b/tests/4-ir-opt/testcases/GVN/performance/transpose.out @@ -0,0 +1 @@ +1042523985 -- GitLab