ThreeWayBranch 优化阅读笔记

news2024/11/15 21:26:08

1. 优化目的

通过重排三分支的 BB 块减少比较指令的执行次数

代码路径:

bolt/lib/Passes/ThreeWayBranch.cpp

2. 效果

优化前:
注: 黄色数字表示BB块编号, 紫色表示该分支跳转的次数,绿色是代码里BB块的变量名
在这里插入图片描述

ThreeWayBranch 优化后:
在这里插入图片描述


注: BB块1.5 会在后面的优化删除
ThreeWayBranch + reorder-block 优化后:
在这里插入图片描述

测试用例:
bolt/test/runtime/X86/three-way-branch-pass.s

    .text
    .globl main
    .type main, %function
    .size main, .Lend-main
main:
    mov $0x0, %eax
    cmp $0x1, %eax
    jge .BB1
    mov $0xf, %eax
    xor %eax, %eax
    retq
.BB1:
    jg .BB2
    retq
.BB2:
    mov $0x7, %eax
    retq
.Lend:

遗留问题:
优化后的 BB 5 跳转变成 fallthrough 性能会更好吗 ?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1510642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

P6327 区间加区间 sin 和 (线段树+数学)

传送门https://www.luogu.com.cn/problem/P6327 比较板子的一题,主要考察公式 //sin(ax)sinxcosasinacosx //cos(ax)cosacosx-sinasinx 直接贴代码吧 // Problem: // P6327 区间加区间 sin 和 // // Contest: Luogu // URL: https://www.luogu.com.cn/pr…

@Conditional注解详解

目录 一、Conditional注解作用 二、Conditional源码解析 2.1 Conditional源码 2.2 Condition源码 三、Conditional案例 3.1 Conditional作用在类上案例 3.1.1 配置文件 3.1.2 Condition实现类 3.1.3 Bean内容类 3.1.4 Config类 3.1.5 Controller类 3.1.6 测试结果 3…

ChatGPT GPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术

原文链接:ChatGPT GPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247596849&idx3&sn111d68286f9752008bca95a5ec575bb3&chksmfa823ad6cdf5b3c0c446eceb5cf29cccc3161d746bdd9f2…

Lim接口测试平台开展自动化的优势

一、数据对比 使用Lim接口测试平台后,相比以往采用Postman或excel关键字驱动带来的效率提升: 编写效率提升300%,原来10个步骤的用例,一个工作日调试编写只能输出6条,现在一天能输出18条。维护成本复杂度降低100%&…

Vue3.0里为什么要用 Proxy API 替代 defineProperty API

一、Object.defineProperty 定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象 为什么能实现响应式 通过defineProperty 两个属性,get及set get 属性的 getter 函…

北斗卫星助力海上风电厂:打造海上绿色能源新时代

北斗卫星助力海上风电厂:打造海上绿色能源新时代 近日,东海航海保障中心温州航标处在华能苍南海上风电场完成首套北斗水上智能感知综合预警系统现场安装调试工作,经现场效能测定,能有效保障海上风电场运行安全和海域船舶通航安全…

华为OD机试 - 模拟数据序列化传输(Java JS Python C C++)

题目描述 模拟一套简化的序列化传输方式,请实现下面的数据编码与解码过程 编码前数据格式为 [位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer / String / Compose(Compose的数据类型表示该存储的数据也需要编码)编码后数…

光电容积脉搏波PPG信号分析笔记

1.脉搏波信号的PRV分析 各类分析参数记参数 意义 公式 参数意义 线性分析 时域分析 均值MEAN 反应RR间期的平均水平 总体标准差SDNN 评估24小时长程HRV的总体变化, SDNN < 50ms 为异常,SDNN>100ms 为正常;…

如何解决爬虫程序访问速度受限问题

目录 前言 一、代理IP的获取 1. 自建代理IP池 2. 购买付费代理IP 3. 使用免费代理IP网站 二、代理IP的验证 三、使用代理IP进行爬取 四、常见问题和解决方法 1. 代理IP不可用 2. 代理IP速度慢 3. 代理IP被封禁 总结 前言 解决爬虫程序访问速度受限问题的一种常用方…

群晖部署私人聊天服务器Vocechat并结合内网穿透实现公网远程访问

文章目录 1. 拉取Vocechat2. 运行Vocechat3. 本地局域网访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问小结 7. 固定公网地址 如何拥有自己的一个聊天软件服务? 本例介绍一个自己本地即可搭建的聊天工具,不仅轻量,占用小,且功能也停强大,它就是Vocechat. Vocechat是一套支持…

怎么把视频变成gif动图?一招在线生成gif动画

MP4是一种常见的视频文件格式,它是一种数字多媒体容器格式,可以用于存储视频、音频和字幕等多种媒体数据。MP4格式通常用于在计算机、移动设备和互联网上播放和共享视频内容。要将MP4视频转换为GIF格式,您可以使用专门的视频转gif工具。这个工…

中科数安|——如何防止别人复制文档内容?

#如何防止别人复制文档内容# 中科数安所提供的防止别人复制文档内容的措施主要包括但不限于以下几个方面: www.weaem.com 1. **文档加密与权限控制**: - 对关键文档进行加密处理,确保只有获得授权的人员才能解密并查看文档内容。 - 实施精…

Java项目:基于Springboot+vue实现的付费自习室系统设计与实现(源码+数据库+毕业论文)附含微信小程序端代码

一、项目简介 本项目是一套基于Springbootvue实现的付费自习室系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

即时设计是什么?设计大佬在线讲解

即时设计是一种互联网产品设计工具。产品原型设计软件由以下四个部分介绍: 1、什么是即时设计? 2、即时设计产品和服务怎么样? 3、即时设计的优点是什么?优点是什么? 4、即时设计的客户是什么?哪些公司…

windows的vmdk文件转qcow2运行蓝屏

背景 使用qemu-img将做好的vmware虚拟机转为qcow2到gns3中运行,Linux、Win7、Win10都没出现蓝屏,但Win XP却在开机时蓝屏了,错误代码:0x0000007B 解决方案 最终在proxmox上找到方案:https://pve.proxmox.com/wiki/Ad…

(一区)基于模型的连续和离散全局优化方法

Model-based methods for continuous and discrete global optimization 1.摘要 本文综述了下基于模型的连续和离散全局优化方法,并提出了一种叠加替代信息的新方法。 2.介绍 比较水。。作者说,本文是首次尝试提供对连续和离散建模方法的可理解的调查…

微信自动回复的优势及设置方法

自动回复功能的优势: 1、可设置不重复触发时间和生效时间段,回复效果更智能,提升联系人体验; 2、可以多微信同时设置,可直接导入素材库内容,提高工作效率; 3、多个关键词、多条回复内容&…

可视化表单流程编辑器为啥好用?

想要提升办公率、提高数据资源的利用率,可以采用可视化表单流程编辑器的优势特点,实现心中愿望。伴随着社会的进步和发展,提质增效的办公效果一直都是很多职场办公团队的发展需求,作为低代码技术平台服务商,流辰信息团…

FreeRTOS操作系统学习——事件组

事件组介绍 一个事件组就是一组的事件位,事件组中的事件位通过位编号来访问。事件位用来表明某个事件是否发生,事件位通常用作事件标志。 事件组用一个整数来表示,其中的高8位留给内核使用,只能用其他的位来表示事件。那么这个整…

Liinux——(网络)socket编程

预备知识 源IP地址和目的IP地址 在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址 认识端口号 端口号(port)是传输层协议的内容. 端口号是一个2字节16位的整数;端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪个进程来处理;IP地址 端口号能…