当前位置: 首页 > news >正文

做期货的一般看什么网站太原网站定制

做期货的一般看什么网站,太原网站定制,哪里能借到钱,微信广告平台Basic TableGen 系统可以帮助记录领域特定的信息。它也可以认为是一种小型的编译系统。 TableGen 责负分析文件, 分析结果交给领域特定的后端进行处理。 重要的概念 records 一个 record 有一个独立的名称,一系列值和一系列父类。 它保存了特定领域…

Basic

TableGen 系统可以帮助记录领域特定的信息。它也可以认为是一种小型的编译系统。

TableGen 责负分析文件, 分析结果交给领域特定的后端进行处理。

重要的概念

records

一个 record 有一个独立的名称,一系列值和一系列父类。 它保存了特定领域的知识。

可以认为 tablegen 前端生成 recode 流, 对于其中 record 的解释由具体的后端执行。

definitions

record的具体形式, 按数据结构看是 key-value 字典, 它的具体含义与作用由特定的后端后决定。可以有名,也可以无名。

def

例子:

def HelloWorld { 

string msg = "Hello world!";

}

classes

表示抽象的 record, 用于构造和描述其它的 record。类方便于定义目标领域的抽象。

class

class ProcNoItin<string Name, list<SubtargetFeature> Features>: Processor<Name, NoItineraries, Features>;

multiclasses

表示一组抽象的 record, 一次实例化可以产生多个 definations。

可以看到在 multiclasses 内部 def 了多个 defination。 使用 defm 调用 muliclasses 的构造。

multiclass ro_signed_pats<string T, string Rm, dag Base, dag Offset, dag Extend, dag address, ValueType sty> {
def : Pat<(i32 (!cast<SDNode>("sextload" # sty) address)),(!cast<Instruction>("LDRS" # T # "w_" # Rm # "_RegOffset")Base, Offset, Extend)>;def : Pat<(i64 (!cast<SDNode>("sextload" # sty) address)),(!cast<Instruction>("LDRS" # T # "x_" # Rm # "_RegOffset")Base, Offset, Extend)>;
}defm : ro_signed_pats<"B", Rm, Base, Offset, Extend,!foreach(decls.pattern, address,!subst(SHIFT, imm_eq0, decls.pattern)),i8>;

TableGen 的后端

clang-tblgen [options] [filename]

lldb-tblgen [options] [filename]

llvm-tblgen [options] [filename]

mlir-tblgen [options] [filename]

大体上是这几个, 但是每个命令指令不同的选项生成的效果也不同。

比如 clang 有这几个和 riscv 相关的指令:

-gen-riscv-vector-header

Generate riscv_vector.h for Clang.

-gen-riscv-vector-builtins

Generate riscv_vector_builtins.inc for Clang.

-gen-riscv-vector-builtin-codegen

Generate riscv_vector_builtin_cg.inc for Clang.

-gen-riscv-sifive-vector-builtins¶

Generate riscv_sifive_vector_builtins.inc for Clang.

-gen-riscv-sifive-vector-builtin-codegen

Generate riscv_sifive_vector_builtin_cg.inc for Clang.

类型系统

  1. bit, bits<N>, int
  2. string, code
  3. list<T>
  4. unset
  5. dag
  6. 自定义的 class

部分类型举例

  1. bit 0或1
  2. bits: { 1, 0, 1, 0, 1, 0 }
  3. string: “this is a string”
  4. code: [{ this_is_code(); }]

list:

  1.  [ “this”, “is”, “a”, “list” ]
  2.  [ “explicitly”, “typed”, “list”, “literal” ]
  3.  Indexing a list: foo[4]

Unset value

表现在打印输出上是一个 ?, 它可以是任意类型

dag

类似于 S-expression, S表达式。 典型的应用场景是 ISel 即指令选择。

(op arg0:$name0, arg1:$name1, ...)

code

获取 defination 信息

我们可以使用 llvm-tblgen 或在线网站 Compiler Explorer  来查看一个tablegen 文件对应的 class 和 defination 流,这有利于我们了解现有的 tablegen 文件描述了什么东西。

tablegen 例子

def

def HelloWorld {

string msg = "Hello world!";

}

def {     // 匿名

string msg = "Hello world!";

}

class

class C {

int c = 7;

int d = 7;

}

class D<int a> : C{ // 继承, 模板 , unset

int e=a;

}

def X: C {}

def Y: D<1>{} // 模板传参

let

class C {
    int a;
    int b;
}
let a=5, b=6 in {
    def X: C {}
}

multiclass & defm

class C {

int c = 7;

int d = 7;

}

class D<int a>{

int e=a;

}

multiclass E<int num>{

let c=num in def _c:C;// 在 muliclass 中使用 let 的语法

def _d : D<num>;

}

defm INST: E<9>; // 一次定义2个 defination

foreach

class C {

int c = 7;

int d = 7;

}

foreach i = [0, 1, 2, 3] in {

def R#i : C; // #i 会替换成对应的值

def F#i : C;

}

!cast<>

根据名称(字符串)获取类

class B{

string b="isb";

}

class C <string name> {

B b_of_c = !cast<B>(name);

}

def firstB: B;

def c:C<"firstB">;

拼接字符串

class Hello <string _msg> {

string msg = "Hello " # _msg;

}

def HelloWorld: Hello<"world!"> {}

参考

1 TableGen Programmer’s Reference — LLVM 19.0.0git documentation

https://github.com/llvm/llvm-project/blob/main/llvm/utils/TableGen/jupyter/tablegen_tutorial_part_1.ipynb

https://archive.fosdem.org/2019/schedule/event/llvm_tablegen/attachments/slides/3304/export/events/attachments/llvm_tablegen/slides/3304/tablegen.pdf

http://www.yayakq.cn/news/785093/

相关文章:

  • 网站建设主要工作由哪些河南建一个网站大概要多少钱
  • 芜湖哪家公司做网站不错自己怎么建设一个网站
  • 做相册视频的网站重庆市建设工程安全网站
  • 官方网站建设账务处理济南好的网站建设公司排名
  • 诺盾网站建设做网站那种语言好
  • 郴州做网站潍坊网站制作保定公司电话
  • 网页设计与制作代做百度关键词排名优化
  • 南京网站开发招聘做一个自己的网站要多少钱
  • 哪个做网站比较好化妆品网站建设网站
  • 功能型网站建设需要多少钱网站建设的费用计什么科目
  • 怎么制作二维码并自己编辑内容seo基础教程
  • 视频网站代言人英德市建设局网站
  • 儿童教育类网站模板下载wordpress 多重
  • 网站免费建站众享星球网站建设服务杭州
  • ps制作个性字网站seo能从搜索引擎中获得更多的
  • 网站 配色方案做网站需要提供什么
  • 查询建设用地规划许可证在哪个网站学会wordpress后万能
  • 百度seo霸屏软件做网站需要知道优化吗
  • 专门做库存的网站东莞市锂电池网站建设
  • 山西网站制作公司天津市北辰区建设与管理局网站
  • 洛阳网站制作公司wordpress模板服务器
  • 哪些属于功能型网站深圳 网站建设设计
  • 景泰县做网站濮阳新闻直播
  • 做网站与全网营销搜索推广排名优化网站建设需求说明
  • 广州网站建设大公司排名php网站开发手机绑定
  • 深圳网络专科网站建设广西大兴建设有限公司网站
  • 主流的网站开发框架网站权重高 做别的关键词
  • 网站程序怎么做门户网站具有什么特点
  • 黄石公司做网站有没有专门做尾料回收的网站
  • 职业学校网站模板2015个人网站如何去工信部备案