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

wordpress 下载列表插件济南网站优化公司排名

wordpress 下载列表插件,济南网站优化公司排名,西安北郊网络公司,怎么样在虚拟机做web网站llvm后端之DAG设计 引言1 核心类设计2 类型系统2.1 MVT::SimpleValueType2.2 MVT2.3 EVT 3 节点类型 引言 llvm后端将中端的IR转为有向无环图,即DAG。如下图: 图中黑色箭头为数据依赖;蓝色线和红色线为控制依赖。蓝色表示指令序列化时两个节…

llvm后端之DAG设计

  • 引言
  • 1 核心类设计
  • 2 类型系统
    • 2.1 MVT::SimpleValueType
    • 2.2 MVT
    • 2.3 EVT
  • 3 节点类型

引言

llvm后端将中端的IR转为有向无环图,即DAG。如下图:
在这里插入图片描述
图中黑色箭头为数据依赖;蓝色线和红色线为控制依赖。蓝色表示指令序列化时两个节点中间可以插入其他节点对应的指令,而红色节点表示两个节点生成的指令中间不能插入其他节点的指令。

注:本文参考源码路径为 https://github.com/llvm/llvm-project/tree/release/10.x

1 核心类设计

DAG图是围绕SDNode、SDUse、SDValue组织,如下图:
在这里插入图片描述

  • DAG图中每个节点,用SDNode表示。节点有依赖节点,用OperandList表示;节点可以有多个输出值,其输出值类型用ValueList表示;
  • 用SDValue表示每个节点的输出值,其中记录了SDNode和输出值序号ResNo;
  • SDUse表示DAG图的依赖箭头。用Val表示箭头指向的节点,即被依赖的节点输出值;用User表示箭头起点的节点,即使用节点;
  • 每个SDUse设置Val时,会将自己添加到SDNode的UseList链表中。这样每个Node就可以遍历到使用自己的其他节点。

2 类型系统

llvm后端DAG的类型系统分为三个层级,从外到内为:EVT、MVT、SimpleValueType。如下图:
在这里插入图片描述

2.1 MVT::SimpleValueType

SimpleValueType是基本数据类型的枚举定义,其中包括:

  • 整数类型
  • 浮点类型
  • 向量类型:其中包括按类型分类有整数向量和浮点向量,按长度分类有固定长度向量和变长向量
  • 其他类型

2.2 MVT

MVT是对SimpleValueType值的封装。并提供常规的方法:

  • isValid : 为整数类型、浮点类、向量类型以及x86mmx、Glue、isVoid、Untyped、exnref,则为true;
  • isFloatingPoint / isInteger : 整数/浮点及其相应类型的向量为true;
  • isScalarInteger : 非向量的整数类型则为true;
  • isScalableVector : 变长向量则为true;
  • isFixedLengthVector :定长向量则为true;
  • isOverloaded : 可重载类型,就是由内置函数可以解释的任意长度类型。有Any、iAny、vAny、fAny、iPTRAny;
  • isPow2VectorType :向量元素个数为2的N次方,则为true;
  • getPow2VectorType : 返回元素个数扩展为2的N次方的新向量类型,例如16个不扩展,5个则扩展为8个;
  • getHalfNumVectorElementsVT : 将向量元素个数截断为原来的一半并返回其类型;
  • getScalarType : 为向量则返回元素类型,否则返回自身相同类型;
  • getVectorNumElements : 返回向量元素个数,变长向量则返回最小向量元素个数;
  • getSizeInBits : 返回类型的bit位数,变长向量则返回最小元素个数乘以元素类型的bit数。
  • getScalarSizeInBits : 返回getScalarType类型的bit位数;
  • getStoreSize : 返回类型从存储长度,即扩展为字节长度。例如1位int扩展为8位int;
  • bitsGT / bitsGE / bitsLT / bitsLE : 比较MVT的getSizeInBits值;

此外,还提供了根据bit位返回类型的系列静态方法。

2.3 EVT

EVT是对MVT的封装,此外还提供了对MVT类型的扩展。当表示MVT之外的类型时,其V.SimpleTy为INVALID_SIMPLE_VALUE_TYPE。例如,当定义一个1024位的int,此时就是一个扩展类型。

3 节点类型

DAG节点的类型(也就是操作类型,对应于指令类型)是定义在llvm::ISD::NodeType枚举类型中;此外,可以基于BUILTIN_OP_END往后自定义目标的操作类型。llvm::ISD::NodeType的节点类型包括:

http://www.shuangfujiaoyu.com/news/29496.html

相关文章:

  • 网站有没有做网站地图怎么看上海快速排名优化
  • wordpress force ssl网站优化策略分析论文
  • vue做网站如何优化seoh5网站制作平台
  • 河南做网站 河南网站建设网络广告策划流程有哪些?
  • 电子商务网站建设与管理B卷长春建站服务
  • 湛江网站开发鹤壁seo公司
  • 网站免费做app免费b站推广网站详情
  • 网站开发常用的开发工具网站快速优化排名推荐
  • wordpress next主题长沙靠谱的关键词优化
  • 大学生网站建设规划书网站内容编辑
  • 兰州市住房和城乡建设局网站香港疫情最新情况
  • 制作网站的公司不干了seo关键词排行优化教程
  • 网站建设制作小程序开发seo技术自学
  • 论文引用网站数据 如何做注释网络营销的重要性
  • hbuilder怎么做网站优化网站内容
  • 响应式网站建设需要注意什么搜索引擎优化是什么意思啊
  • wordpress段间距seo 网站排名
  • 莒县网站制作网络营销常用的工具有哪些
  • 如何建设网站pdfdw网页制作教程
  • 网站建设业务好做吗下列关于友情链接说法正确的是
  • 发布html wordpress安卓优化大师手机版
  • 做商城网站那个好站长工具查询域名
  • 做网站需要哪些人手搭建网站费用是多少
  • 瑞幸咖啡网站建设方案化妆品网络营销策划方案
  • 网络网站建设价格百度资源搜索引擎
  • 卢松松网站怎么做关键词竞价排名名词解释
  • 网页设计代码居中温州seo排名优化
  • wordpress 注册 登陆不了关键词优化排名seo
  • 网站开发软件、36优化大师下载安装
  • 网站开发的技术有网络推广电话销售技巧和话术