2021-5-record everthing
Data
- 5.25:
- 5-18:
- 5-14:
- 5-13
- 5-10
- 5-8
- 5-6问题:
5.25:
instruction scheduling algorithm
.so .a
libLLVMCodeGen.a
libLLVMXtensaCodeGen.a
* DTUGen.py DTUInst.py : add sip20 header and builtinsSIP20.h (python DTUGen.py sip20_header 用来生成)
* IntrinsicsDTU.td : add sip20 intrinsics def
* DTUIntrinsicsS20.td : add intrinsics to instructions
* modity testcases intrinsics names
1\clang/Basic/DTUGen.py generate inline static void fake_halt()
2\DTUSelLowering call fake_halt
1、将halt函数在头文件中替换为inline static void fake_halt()
2、DTUSelLowering中将调用fake_halt
Q:
add “__dtu_halt_wr” into sip20intrin.h to workaround
• “Debug需求:关于该问题引申出来的使用halt指令做debug用,场景是往往需要使用halt用来停住第一现场,为了支持这种debug需求,建议在intrinsic上做halt指令的封装,把halt指令直接封装成这个指令片段,避免引入意外。
l.ldi_hi r26, 0x4000 #extra credit number register
l.ldi_lo r26, 0x0f70
wait_extra_num:
l.ld.w r21, [r26]
l.bne r0,r21, wait_extra_num
halt
5-18:
clang --target=dtu -mcpu=x -w a.c -S -emit-llvm
llc a.ll --march=dtu -mcpu=x -print-after-all > a.log 2>&1
-pavortl-253=0
gdb:#6 0x00007ffff3be3b77 in ExpandPostRAPseudos.cpp:195
f 6
b 195
p MF.dump()
p MI->dump()
p MI->getOperand (1).dump()
DTUGenInstrInfo.inc MCInst 787
v32f16
jenkin rebuild
5-14:
-mllvm -print-after-all
which
Machine Instruction Bundle
adding machine instruction bundle to support VLIW targets.
http://gerrit.enflame.cn/c/llvm-project/+/25847/8/llvm/include/llvm/IR/IntrinsicsXtensa.td
汇报:先描述问题的背景
目前解决的方案:
clang execute_sip20/pr65369.c --target=dtu -mcpu=x -ldturt2 -o a.out
llvm-objdump a.out -mcpu=x -dz > a.dump
./bin/pavomodel-dbg
l.bne r0,r21, wait_extra_num
Branch Instruction
Assembler syntax:
B{EQ|NE|GE|LT}{.U|.S} Rs1, Rs2, Imm12;
B: Jump to PC+immediate(S11<<3) if the condition comparing result of
Rs1/Rs2 is True.
NE means if(Rs1 != Rs2)
Imm12 is any value in the range -2048~2047.
HALT
N/A 2 N/A 5’b10110 Lnk HALT
Assembler syntax:
HALT;
Where:
HALT: Set SIP to HALT status.
Examples:
HALT
5-13
gdb --args llvm-objdump -arch=xtensa -mcpu=esp32-s2 -drz aa.o
…/xt_bin/xt-run --xtensa-core=Xtensa_Core_Xproj --xtensa-system=./xtensa_lib/config …/binary_for_vdk/debug/cqm.out
/home/cpan/workspace/llvm-project-dev/llvm-project/llvm/lib/Target/DTU/DTUInstrInfoS20.td
/home/cpan/workspace/xtensa/XtDevTools/install/tools/RI-2020.4-linux/XtensaTools/bin/xt-objdump -dr cpan_packet_executable_clang_O3.o
strace /home/cpan/workspace/xtensa/XtDevTools/install/tools/RI-2020.4-linux/XtensaTools/bin/xt-objdump a.o
Strace 是 Unix平台上的实用工具,它允许用户直接从终端跟踪系统调用和信号。程序员可以使用它堆栈跟踪、过滤系统调用、修改返回码、提取文件描述符等等。
{ # format xt_format96_1
l8ui a8, a4, 16
l8ui a9, a4, 17
slli a9, a9, 8
or a8, a9, a8
}
{ # format xt_format96_1
slli a8,a8,8 # [14]
l8ui a13,a6,4 # [14] id:206
slli a12,a12,8 # [14]
movi.n a3,1 # [14]
}
{ # format xt_format56
l8ui a10, a10, 0
movi a11, 301
}
5-10
/home/cpan/workspace/xtensa-llvm/build/bin/clang --target=xtensa -mcpu=esp32-s2 -Wall -Wl -c -I/home/cpan/workspace/xtensa/XtDevTools/install/builds/RI-2020.4-linux/Xtensa_Core_Xproj//include -I/home/cpan/workspace/xtensa/XtDevTools/install/builds/RI-2020.4-linux/Xtensa_Core_Xproj/arch/include -D__XTENSA__ -D__XCC__ -O2 -ffunction-sections -DRTL_DEBUG -DCQM_FM_COMPILE_DATE="0x03251630" -D_SOC_DORADO_ ../amos_prefetch.c -mllvm -debug -mllvm -print-after-all -c > aa.log 2>&1grep "\(volatile\|After\|MEMW\)" aa.log -Hn > search_vol.log(search multiple keywords)grep -v "\(load volatile\|store volatile\)" search_vol.log -Hn > reduce.log(delete multiple keywords)fg (进程提至前台)
ctrl+z(进程退到后台)
jobs(后台的进程查看)
5-8
HBM->ldma
TS on function
packet
xt-xcc ../cpan_packer.c -D __XTENSA__ -D __XCC__ -D _SOC_DORADO_ -D RTL_DEBUG -D DEBUG -D CDE_PRINT_OPT -D CQM_FM_COMPILE_DATE=0x04281805 -w -S -o a.svoid __attribute__((optimize("O0"))) blabla(void)对比add “__attribute__” or not汇编结果-mno-serialize-volatile: Do not generate MEMW instructions in between volatile memory referencesxt-xcc ../amos_packet.c -D __XTENSA__ -D __XCC__ -D _SOC_DORADO_ -D RTL_DEBUG -D DEBUG -D CDE_PRINT_OPT -D CQM_FM_COMPILE_DATE=0x04281805 -w -O0 -S -o amos_packet.s | cat amos_packet.s | grep memw | wc -lclang --target=xtensa -mcpu=esp32-s2 -E volatile.c -o volatile.ised -i 's/ volatile / /g' volatile.iclang --target=xtensa -mcpu=esp32-s2 -S volatile.i -o volatile.s
1、xtensa 通过-mno-serialize-volatile可实现do not generate memw instructions in between volatile memory references,我们通过sed -i ‘s/ volatile /asm volatile(“nop”:::“memory”);/g’ $@对volatile进行replace,但在处理typedef volatile int替换出错。
2、volatile定义:
(1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。(实现可见性)
(2)禁止进行指令重排序。(实现有序性)
(3)volatile 只能保证对单次读/写的原子性
1、查询volatile在IR中的功能:
IR对应C程序把type类型加上volatile:数组prefetch_vc store为volatile
到assembly时先是memw,再是store和load
2-mllvm -print-after-all打印所有的编译过程 > log 2>&1
add an option to kill all the memw before load & store
readelf -S /home/cpan/workspace/xtensa-llvm/build/bin/clang 查看clang编译信息
grep “(volatile|After|MEMW)” cpan.log -Hn >bb.log
5-6问题:
1、将多个.o文件反汇编为一个.s文件
2、xtensa编译到llvm tops_dev,能否集成cqm的代码,生成一个helloworld的binary
sequential
lexical、Syntax analysis(Parser)
2021-5-record everthing相关推荐
- MPB:山大倪金凤组-培菌白蚁肠道簇虫分离与分子鉴定的方法
为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...
- 图表控件AnyChart如何创建JavaScript角度规
AnyChart是基于JavaScript (HTML5) 的图表控件.使用AnyChart控件,可创建跨浏览器和跨平台的交互式图表和仪表.AnyChart 图表目前已被很多知名大公司所使用,可用于仪 ...
- Unsupported format, or corrupt file: Expected BOF record; found b‘2021\xc4\xea\xca\xfd‘
Unsupported format, or corrupt file: Expected BOF record; found b'2021\xc4\xea\xca\xfd'@pandas库学习笔记 ...
- 2021年大数据Kafka(五):❤️Kafka的java API编写❤️
全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的java API编写 一.生产者代码 第一步: ...
- 2021年大数据Hive(九):Hive的数据压缩
全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive的数据压缩 一.MR支持的压缩编码 二.压缩配置 ...
- 独家 | 2021年打破了零日黑客攻击的记录
作者:Patrick Howell O'Neill翻译:欧阳锦校对:王可汗本文约2000字,建议阅读6分钟 本文为大家介绍了2021年发现的零日漏洞以及零日攻击,对零日漏洞的现状进行了简单分析,并给出 ...
- 图上的对抗与攻击精选论文列表(2021相关论文一览)
来源:深度学习与图网络本文约1400字,建议阅读5分钟本文为你分享图上的对抗与攻击精选论文. 2021相关论文一览 大规模攻击图神经网络 图神经网络的黑盒梯度攻击: 更深入洞察图的攻击和防御 增强多路 ...
- [译] Cilium:BPF 和 XDP 参考指南(2021)
Cilium:BPF和XDP参考指南_RToax-CSDN博客Table of ContentsBPF体系结构指令系统辅助功能地图对象固定尾叫BPF到BPF呼叫准时制硬化减负工具链开发环境虚拟机本文档 ...
- 【财经期刊FM-Radio|2021年03月01日】
title: [财经期刊FM-Radio|2021年03月01日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 2月份中国制造业PMI季节性回落,经济仍保持稳定恢复势头 茅台集团去 ...
- NFT 是如何在 2021 年造就 400 亿美元市场的?
来源/ft.com 翻译/章鱼哥 在2021年初,还只有一部分加密爱好者知道什么是NFT. 但根据最新数据显示,到2021年底已有近410亿美元被花在NFT上,这使得数字艺术收藏品市场的价值几乎与全球 ...
最新文章
- mysql的altertable_mysql 的 alter table 操作性能小提示
- unity meta文件
- 敏捷开发思想及Scrum实践
- android多功能计算器 源码,Android计算器源码
- 基于LSTM的序列预测: 飞机月流量预测
- 玻璃体浑浊的分子原理
- php mysql需要服务器配置_php服务器配置(php+mysql+iis)步骤
- 创建支持依赖注入、Serilog 日志和 AppSettings 的 .NET 5 控制台应用
- ABP入门系列(8)——Json格式化
- Android应用程序创建桌面快捷方式
- Abseil之Copies, Abbrv
- binary 和 varbinary 用法全解
- [Matlab]绘图颜色
- 4399ATAPI讲解操作事件篇
- Django 之 Views
- java导出dbf文件_Java 导出dbf文件
- AUI 滚动视图使用
- windows系统的定时任务
- 分享一个全站繁体转换
- 1代iPhone 3.0 OS 刷机+破解+使用技巧
热门文章
- VS.NET(C#)-3.13_Panel控件
- linux添加变色龙引导,变色龙Chameleon Install 2281引导工具 windows电脑安装黑苹果
- u盘文件夹被隐藏怎么恢复正常?
- js面试题(2019最新)
- 谷歌地球 最新hosts_给我一个Google地球app,可以领略全球3D风情
- ps2手柄linux,索尼为PS5 DualSense手柄推出官方Linux驱动程序
- 毒鸡汤|心情不好的时候,看一看。你会发现心情会很不好。
- ContextCapture、EPS、CASS3D房地一体详细操作流程
- 我看了java_我看java没有那么难(转载)
- 手机上万里挑一的CAD看图软件,好用到颠覆你的世界观!