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相关推荐

  1. MPB:山大倪金凤组-培菌白蚁肠道簇虫分离与分子鉴定的方法

    为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...

  2. 图表控件AnyChart如何创建JavaScript角度规

    AnyChart是基于JavaScript (HTML5) 的图表控件.使用AnyChart控件,可创建跨浏览器和跨平台的交互式图表和仪表.AnyChart 图表目前已被很多知名大公司所使用,可用于仪 ...

  3. 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库学习笔记 ...

  4. 2021年大数据Kafka(五):❤️Kafka的java API编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的java API编写 一.生产者代码 第一步: ...

  5. 2021年大数据Hive(九):Hive的数据压缩

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive的数据压缩 一.MR支持的压缩编码 二.压缩配置 ...

  6. 独家 | 2021年打破了零日黑客攻击的记录

    作者:Patrick Howell O'Neill翻译:欧阳锦校对:王可汗本文约2000字,建议阅读6分钟 本文为大家介绍了2021年发现的零日漏洞以及零日攻击,对零日漏洞的现状进行了简单分析,并给出 ...

  7. 图上的对抗与攻击精选论文列表(​2021相关论文一览)

    来源:深度学习与图网络本文约1400字,建议阅读5分钟本文为你分享图上的对抗与攻击精选论文. 2021相关论文一览 大规模攻击图神经网络 图神经网络的黑盒梯度攻击: 更深入洞察图的攻击和防御 增强多路 ...

  8. [译] Cilium:BPF 和 XDP 参考指南(2021)

    Cilium:BPF和XDP参考指南_RToax-CSDN博客Table of ContentsBPF体系结构指令系统辅助功能地图对象固定尾叫BPF到BPF呼叫准时制硬化减负工具链开发环境虚拟机本文档 ...

  9. 【财经期刊FM-Radio|2021年03月01日】

    title: [财经期刊FM-Radio|2021年03月01日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 2月份中国制造业PMI季节性回落,经济仍保持稳定恢复势头 茅台集团去 ...

  10. NFT 是如何在 2021 年造就 400 亿美元市场的?

    来源/ft.com 翻译/章鱼哥 在2021年初,还只有一部分加密爱好者知道什么是NFT. 但根据最新数据显示,到2021年底已有近410亿美元被花在NFT上,这使得数字艺术收藏品市场的价值几乎与全球 ...

最新文章

  1. mysql的altertable_mysql 的 alter table 操作性能小提示
  2. unity meta文件
  3. 敏捷开发思想及Scrum实践
  4. android多功能计算器 源码,Android计算器源码
  5. 基于LSTM的序列预测: 飞机月流量预测
  6. 玻璃体浑浊的分子原理
  7. php mysql需要服务器配置_php服务器配置(php+mysql+iis)步骤
  8. 创建支持依赖注入、Serilog 日志和 AppSettings 的 .NET 5 控制台应用
  9. ABP入门系列(8)——Json格式化
  10. Android应用程序创建桌面快捷方式
  11. Abseil之Copies, Abbrv
  12. binary 和 varbinary 用法全解
  13. [Matlab]绘图颜色
  14. 4399ATAPI讲解操作事件篇
  15. Django 之 Views
  16. java导出dbf文件_Java 导出dbf文件
  17. AUI 滚动视图使用
  18. windows系统的定时任务
  19. 分享一个全站繁体转换
  20. 1代iPhone 3.0 OS 刷机+破解+使用技巧

热门文章

  1. VS.NET(C#)-3.13_Panel控件
  2. linux添加变色龙引导,变色龙Chameleon Install 2281引导工具 windows电脑安装黑苹果
  3. u盘文件夹被隐藏怎么恢复正常?
  4. js面试题(2019最新)
  5. 谷歌地球 最新hosts_给我一个Google地球app,可以领略全球3D风情
  6. ps2手柄linux,索尼为PS5 DualSense手柄推出官方Linux驱动程序
  7. 毒鸡汤|心情不好的时候,看一看。你会发现心情会很不好。
  8. ContextCapture、EPS、CASS3D房地一体详细操作流程
  9. 我看了java_我看java没有那么难(转载)
  10. 手机上万里挑一的CAD看图软件,好用到颠覆你的世界观!