Skip to content

Commit a7ea066

Browse files
committed
2 parents b18f146 + 90c9120 commit a7ea066

File tree

6 files changed

+21
-41
lines changed

6 files changed

+21
-41
lines changed

2025/05/19/first-post/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ <h1 class="p-name article-title" itemprop="headline name">
103103

104104
</div>
105105
<footer class="article-footer">
106-
<a data-url="https://sabyic.github.io/2025/05/19/first-post/" data-id="cmb96ods5000165gw8oca0g27" data-title="first-post" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
106+
<a data-url="https://sabyic.github.io/2025/05/19/first-post/" data-id="cmb97rft20001jsgwb8qiav3y" data-title="first-post" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
107107

108108

109109

2025/05/19/hello-world/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ <h3 id="4-官方-LLVM-向量-half-测试"><a href="#4-官方-LLVM-向量-half-
136136

137137
</div>
138138
<footer class="article-footer">
139-
<a data-url="https://sabyic.github.io/2025/05/19/hello-world/" data-id="cmb96ods7000365gw6zho0y0w" data-title="ventus LLVM 初步 调研" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
139+
<a data-url="https://sabyic.github.io/2025/05/19/hello-world/" data-id="cmb97rft30002jsgw1bhvdlwp" data-title="ventus LLVM 初步 调研" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
140140

141141

142142

2025/05/20/report-fix/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ <h1 class="p-name article-title" itemprop="headline name">
110110

111111
</div>
112112
<footer class="article-footer">
113-
<a data-url="https://sabyic.github.io/2025/05/20/report-fix/" data-id="cmb96ods7000465gw09lzdc6r" data-title="ventus LLVM 初步 调研 report-fix" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
113+
<a data-url="https://sabyic.github.io/2025/05/20/report-fix/" data-id="cmb97rft50004jsgw3xdqfp1o" data-title="ventus LLVM 初步 调研 report-fix" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
114114

115115

116116

2025/05/21/2020.5.21/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ <h1 class="p-name article-title" itemprop="headline name">
108108

109109
</div>
110110
<footer class="article-footer">
111-
<a data-url="https://sabyic.github.io/2025/05/21/2020.5.21/" data-id="cmb96ods2000065gwbkzk51bq" data-title="2025-5-21-为什么官方LLVM会报错的思考" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
111+
<a data-url="https://sabyic.github.io/2025/05/21/2020.5.21/" data-id="cmb97rft00000jsgw69nf3z5y" data-title="2025-5-21-为什么官方LLVM会报错的思考" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
112112

113113

114114

2025/05/29/readtarget/index.html

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<meta property="og:description" content="target 目录内容大致解析ASMparserRISCVAsmParser.cpp - Parse RISCV assembly to MCInst instructionsMCInst 是machine code instruction的意思,它是在汇编和机器码之间的等级。 问题:为什么要有这个MCInst,为什么不直接汇编到机器码就好了? A: 整个后端流水线用到了四种不同层次的指令表示:内">
1515
<meta property="og:locale">
1616
<meta property="article:published_time" content="2025-05-28T16:55:12.491Z">
17-
<meta property="article:modified_time" content="2025-05-29T09:39:42.520Z">
17+
<meta property="article:modified_time" content="2025-05-29T10:10:29.150Z">
1818
<meta property="article:author" content="wjsun">
1919
<meta name="twitter:card" content="summary">
2020

@@ -126,21 +126,11 @@ <h3 id="RISCVInstrInfoV-td"><a href="#RISCVInstrInfoV-td" class="headerlink" tit
126126
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"> def : Pat&lt;(add GPR:$rs1, GPR:$rs2), (ADD $rs1, $rs2)&gt;;</span><br><span class="line">这段表示:当看到 DAG 中的 add 节点,其操作数来自寄存器时,用目标机器指令 ADD 替换。</span><br><span class="line"></span><br><span class="line">使用 Operand 规则解析寄存器、立即数、内存操作数等:</span><br><span class="line"></span><br><span class="line">tablegen</span><br></pre></td></tr></table></figure></li>
127127
</ol>
128128
<p>def simm5 : Operand<XLenVT>, ImmLeaf&lt;XLenVT, [{ return isInt&lt;5&gt;(Imm); }]&gt;;</p>
129-
<pre><code>
130-
3. 它告诉编译器,某个操作数是一个 5 位有符号立即数,编码时要验证这个约束。
131-
132-
4. 生成机器指令(MachineInstr):
133-
DAG 经过 ISelDAGToDAG 的匹配和替换后,会转为 MachineInstr,并使用 Operand 信息生成二进制编码。
134-
135-
Scheduling definitions.
136-
这一部分是干嘛
137-
Instruction class templates
138-
比如:
139-
// strided segment load vd, (rs1), rs2, vm
140-
成段的load,store。
141-
以及向量和标量的结合计算啥的
142-
Combination of instruction classes.
143-
### RISCVRegisterInfo.td
129+
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">3. 它告诉编译器,某个操作数是一个 5 位有符号立即数,编码时要验证这个约束。</span><br><span class="line"></span><br><span class="line">4. 生成机器指令(MachineInstr):</span><br><span class="line">DAG 经过 ISelDAGToDAG 的匹配和替换后,会转为 MachineInstr,并使用 Operand 信息生成二进制编码。</span><br><span class="line"></span><br><span class="line">Scheduling definitions.</span><br><span class="line">这一部分是干嘛</span><br><span class="line">Instruction class templates</span><br><span class="line">比如:</span><br><span class="line">// strided segment load vd, (rs1), rs2, vm</span><br><span class="line">成段的load,store。</span><br><span class="line">以及向量和标量的结合计算啥的</span><br><span class="line">Combination of instruction classes.</span><br><span class="line">这里是一些指令子集啥的,比如VF,F就是两个不同的子集,同时根据不同的predict实例化不同子集</span><br><span class="line">tablegen</span><br></pre></td></tr></table></figure>
130+
<p>let Predicates &#x3D; [HasVInstructions] in {<br>def VLM_V : VUnitStrideLoadMask&lt;”vlm.v”&gt;,<br> Sched&lt;[WriteVLDM, ReadVLDX]&gt;;<br>def VSM_V : VUnitStrideStoreMask&lt;”vsm.v”&gt;,<br> Sched&lt;[WriteVSTM, ReadVSTM, ReadVSTX]&gt;;<br>def : InstAlias&lt;”vle1.v $vd, (${rs1})”,<br> (VLM_V VR:$vd, GPR:$rs1), 0&gt;;<br>def : InstAlias&lt;”vse1.v $vs3, (${rs1})”,<br> (VSM_V VR:$vs3, GPR:$rs1), 0&gt;;</p>
131+
<pre><code>RISCVInstrInfoVPseudos.td
132+
### RISCVRegisterInfo.td
133+
111
144134
### VentusInstrFormatsV.td
145135
### RISCVCallingConv.td
146136
中断恢复
@@ -178,7 +168,7 @@ <h3 id="RISCVInstrInfoV-td"><a href="#RISCVInstrInfoV-td" class="headerlink" tit
178168

179169
</div>
180170
<footer class="article-footer">
181-
<a data-url="https://sabyic.github.io/2025/05/29/readtarget/" data-id="cmb96ods6000265gw002378ee" data-title="读target目录" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
171+
<a data-url="https://sabyic.github.io/2025/05/29/readtarget/" data-id="cmb97rft40003jsgw26opcb9z" data-title="读target目录" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
182172

183173

184174

index.html

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -126,21 +126,11 @@ <h3 id="RISCVInstrInfoV-td"><a href="#RISCVInstrInfoV-td" class="headerlink" tit
126126
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"> def : Pat&lt;(add GPR:$rs1, GPR:$rs2), (ADD $rs1, $rs2)&gt;;</span><br><span class="line">这段表示:当看到 DAG 中的 add 节点,其操作数来自寄存器时,用目标机器指令 ADD 替换。</span><br><span class="line"></span><br><span class="line">使用 Operand 规则解析寄存器、立即数、内存操作数等:</span><br><span class="line"></span><br><span class="line">tablegen</span><br></pre></td></tr></table></figure></li>
127127
</ol>
128128
<p>def simm5 : Operand<XLenVT>, ImmLeaf&lt;XLenVT, [{ return isInt&lt;5&gt;(Imm); }]&gt;;</p>
129-
<pre><code>
130-
3. 它告诉编译器,某个操作数是一个 5 位有符号立即数,编码时要验证这个约束。
131-
132-
4. 生成机器指令(MachineInstr):
133-
DAG 经过 ISelDAGToDAG 的匹配和替换后,会转为 MachineInstr,并使用 Operand 信息生成二进制编码。
134-
135-
Scheduling definitions.
136-
这一部分是干嘛
137-
Instruction class templates
138-
比如:
139-
// strided segment load vd, (rs1), rs2, vm
140-
成段的load,store。
141-
以及向量和标量的结合计算啥的
142-
Combination of instruction classes.
143-
### RISCVRegisterInfo.td
129+
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">3. 它告诉编译器,某个操作数是一个 5 位有符号立即数,编码时要验证这个约束。</span><br><span class="line"></span><br><span class="line">4. 生成机器指令(MachineInstr):</span><br><span class="line">DAG 经过 ISelDAGToDAG 的匹配和替换后,会转为 MachineInstr,并使用 Operand 信息生成二进制编码。</span><br><span class="line"></span><br><span class="line">Scheduling definitions.</span><br><span class="line">这一部分是干嘛</span><br><span class="line">Instruction class templates</span><br><span class="line">比如:</span><br><span class="line">// strided segment load vd, (rs1), rs2, vm</span><br><span class="line">成段的load,store。</span><br><span class="line">以及向量和标量的结合计算啥的</span><br><span class="line">Combination of instruction classes.</span><br><span class="line">这里是一些指令子集啥的,比如VF,F就是两个不同的子集,同时根据不同的predict实例化不同子集</span><br><span class="line">tablegen</span><br></pre></td></tr></table></figure>
130+
<p>let Predicates &#x3D; [HasVInstructions] in {<br>def VLM_V : VUnitStrideLoadMask&lt;”vlm.v”&gt;,<br> Sched&lt;[WriteVLDM, ReadVLDX]&gt;;<br>def VSM_V : VUnitStrideStoreMask&lt;”vsm.v”&gt;,<br> Sched&lt;[WriteVSTM, ReadVSTM, ReadVSTX]&gt;;<br>def : InstAlias&lt;”vle1.v $vd, (${rs1})”,<br> (VLM_V VR:$vd, GPR:$rs1), 0&gt;;<br>def : InstAlias&lt;”vse1.v $vs3, (${rs1})”,<br> (VSM_V VR:$vs3, GPR:$rs1), 0&gt;;</p>
131+
<pre><code>RISCVInstrInfoVPseudos.td
132+
### RISCVRegisterInfo.td
133+
111
144134
### VentusInstrFormatsV.td
145135
### RISCVCallingConv.td
146136
中断恢复
@@ -178,7 +168,7 @@ <h3 id="RISCVInstrInfoV-td"><a href="#RISCVInstrInfoV-td" class="headerlink" tit
178168

179169
</div>
180170
<footer class="article-footer">
181-
<a data-url="https://sabyic.github.io/2025/05/29/readtarget/" data-id="cmb96ods6000265gw002378ee" data-title="读target目录" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
171+
<a data-url="https://sabyic.github.io/2025/05/29/readtarget/" data-id="cmb97rft40003jsgw26opcb9z" data-title="读target目录" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
182172

183173

184174

@@ -221,7 +211,7 @@ <h1 itemprop="name">
221211

222212
</div>
223213
<footer class="article-footer">
224-
<a data-url="https://sabyic.github.io/2025/05/21/2020.5.21/" data-id="cmb96ods2000065gwbkzk51bq" data-title="2025-5-21-为什么官方LLVM会报错的思考" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
214+
<a data-url="https://sabyic.github.io/2025/05/21/2020.5.21/" data-id="cmb97rft00000jsgw69nf3z5y" data-title="2025-5-21-为什么官方LLVM会报错的思考" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
225215

226216

227217

@@ -266,7 +256,7 @@ <h1 itemprop="name">
266256

267257
</div>
268258
<footer class="article-footer">
269-
<a data-url="https://sabyic.github.io/2025/05/20/report-fix/" data-id="cmb96ods7000465gw09lzdc6r" data-title="ventus LLVM 初步 调研 report-fix" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
259+
<a data-url="https://sabyic.github.io/2025/05/20/report-fix/" data-id="cmb97rft50004jsgw3xdqfp1o" data-title="ventus LLVM 初步 调研 report-fix" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
270260

271261

272262

@@ -304,7 +294,7 @@ <h1 itemprop="name">
304294

305295
</div>
306296
<footer class="article-footer">
307-
<a data-url="https://sabyic.github.io/2025/05/19/first-post/" data-id="cmb96ods5000165gw8oca0g27" data-title="first-post" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
297+
<a data-url="https://sabyic.github.io/2025/05/19/first-post/" data-id="cmb97rft20001jsgwb8qiav3y" data-title="first-post" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
308298

309299

310300

@@ -375,7 +365,7 @@ <h3 id="4-官方-LLVM-向量-half-测试"><a href="#4-官方-LLVM-向量-half-
375365

376366
</div>
377367
<footer class="article-footer">
378-
<a data-url="https://sabyic.github.io/2025/05/19/hello-world/" data-id="cmb96ods7000365gw6zho0y0w" data-title="ventus LLVM 初步 调研" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
368+
<a data-url="https://sabyic.github.io/2025/05/19/hello-world/" data-id="cmb97rft30002jsgw1bhvdlwp" data-title="ventus LLVM 初步 调研" class="article-share-link"><span class="fa fa-share">Teilen</span></a>
379369

380370

381371

0 commit comments

Comments
 (0)