@@ -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<(add GPR:$rs1, GPR:$rs2), (ADD $rs1, $rs2)>;</ 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<XLenVT, [{ return isInt<5>(Imm); }]>;</ 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 = [HasVInstructions] in {< br > def VLM_V : VUnitStrideLoadMask<”vlm.v”>,< br > Sched<[WriteVLDM, ReadVLDX]>;< br > def VSM_V : VUnitStrideStoreMask<”vsm.v”>,< br > Sched<[WriteVSTM, ReadVSTM, ReadVSTX]>;< br > def : InstAlias<”vle1.v $vd, (${rs1})”,< br > (VLM_V VR:$vd, GPR:$rs1), 0>;< br > def : InstAlias<”vse1.v $vs3, (${rs1})”,< br > (VSM_V VR:$vs3, GPR:$rs1), 0>;</ 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