llvm-llc生成riscv64文件并测试的流程

环境:

  • Ubuntu 18.04、Qemu 5.4、LLVM 11.0、GNU交叉编译工具链
  • Benchmark:Mibench:http://vhosts.eecs.umich.edu/mibench/
  • 配置过程见https://blog.csdn.net/qq_40037872/article/details/114667480

在上述环境下,修改LLVM中Codegen面相RISC-V的源码,并测试的流程如下:

  • 在Clion下修改LLVM源码并build

  • 找到测试文件——这里用Mibbench中的basicmath作为例子

    • cd  ~/llvmwd/Mibench/automotive/basicmath
      
  • 使用clang生成LLVM IR(.ll文件)

    • clang -O3 -emit-llvm --target=riscv64-unknown-linux-gnu --gcc-toolchain=/opt/riscv64 --sysroot=/opt/riscv64/sysroot/  -S *.c
      
  • 使用llc命令生成汇编文件

    • llc -O3 --march=riscv64 --enable-machine-outliner=always basicmath_small.ll
      llc -O3 --march=riscv64 --enable-machine-outliner=always basicmath_large.ll
      llc -O3 --march=riscv64 --enable-machine-outliner=always cubic.ll
      llc -O3 --march=riscv64 --enable-machine-outliner=always rad2deg.ll
      llc -O3 --march=riscv64 --enable-machine-outliner=always isqrt.ll
      
  • 使用clang命令进行汇编和链接

    • clang -O3 --target=riscv64-unknown-linux-gnu --gcc-toolchain=/opt/riscv64 --sysroot=/opt/riscv64/sysroot/ --static basicmath_large.s cubic.s isqrt.s rad2deg.s -lm
      
  • 打开risc64-linux文件夹并挂载文件系统到rootfs

    • sudo mount -o loop rootfs.img  ~/riscv64-linux/rootfs
      
  • 将生成的可执行文件复制到文件系统中

    • sudo cp ~/llvmwd/Mibench/automotive/basicmath/basicmath rootfs/root/
      
  • 取消挂载

    • sudo umount rootfs
      
  • 启动qemu-riscv64并执行

  • qemu-system-riscv64 -M virt -m 256M -nographic -kernel linux/arch/riscv/boot/Image -drive file=rootfs.img,format=raw,id=hd0  -device v    irtio-blk-device,drive=hd0 -append "root=/dev/vda rw console=ttyS0"./root/basicmath
    
  • 关闭qemu

  • poweroff
    

llvm-llc生成riscv64文件并测试的流程相关推荐

  1. aidl生成java文件_Android AIDL自动生成Java文件测试

    /******************************************************************************** * Android AIDL自动生成 ...

  2. STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)

    本文也适合STM32CubeMX 支持的所有芯片的设置 ..调整文章结构,添加图文说明 2022.2 ..增加其他应用章节,增加 ADC 设置说明 2023.3 CubeMX生成工程步骤 前言 一.时 ...

  3. NDK JNI Android Studio开发与调试DEMO(三)(生成 .so 文件)

    Android Studio NDK 开发与调试(生成 .so 文件) 温馨提示:如果你的 Android Studio 版本在 3.0以上 , 建议你用 cMake /ndk-build 的新姿势进 ...

  4. python excel web_使用python在WEB页面上生成EXCEL文件

    近日写的一个程序需要在WEB服务器上生成EXCEL文件供用户下载,研究了一下找到了以下比较可行的实现方案,下面以web.py为例,把相关代码贴出来供大家参考: 首先需要下载生成EXCEL的模块,推荐使 ...

  5. 数据库抽取,生成CSV文件导出,CSVUtils工具类

    2019独角兽企业重金招聘Python工程师标准>>> 开发背景: 最近一直在忙一个任务调度系统,需求一直没定下来,需求一直变更,调度一直改,往往复复... 等这波忙完了可以写一下关 ...

  6. JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  7. gsoap 学习 1-自己定义接口生成头文件

    接口头文件的格式在向导中没有看到明确的说明性的内容,但通过看开发包中示例程序中头文件定义和通过wsdl生成的头文件的内容,可以发现,头文件中都会出现以下几行信息  //gsoap ns service ...

  8. 这是预编译工具生成的文件_组件化架构 10.编译优化

    软件研发中,耗费最多时间的并不是编写代码,而是代码编译和代码不断调试的过程 软件试错时间 Android基础编译流程 编译构建的四个步骤: 代码编译:将源代码,R文件,AIDL生成的文件等 编译成.c ...

  9. 超详细的java生成excel文件并下载

    在网上随手一搜,可以搜到很多java生成excel文件相关的博客,但每个都有不同,核心点说清楚了,但具体运用的时候,相信大家或多或少都没法一次直接运用,这样每次去找并且运用的时候很费时间,所以这也是我 ...

最新文章

  1. VUE还没生效,页面闪屏的问题解决办法 v-cloak
  2. c语言退出程序命令_C语言#error命令,阻止程序编译
  3. SQL 盲注GET /POST、布尔型,延时型Python脚本
  4. CCIE-LAB-第二篇-端口聚合LACP+RSTP
  5. 【sql绕过】Bypass waf notepad of def
  6. java 中class相关的问题
  7. Unity使用自定义资源(.asset)配置数据
  8. 如何自学python-如何自学python语言
  9. Navicat for Mysql安装及破解教程
  10. python编程音乐播放器_python 开发在线音乐播放器-简易版
  11. 计算机创业计划书800字大全,2017创业计划书范文800字
  12. Tor去匿名化?俄罗斯联邦安全局秘密项目因承包商被入侵遭曝光
  13. 手把手 | 用Python语言模型和LSTM做一个Drake饶舌歌词生成器
  14. 安装 kafka 配置 sasl 认证
  15. shell - 在文本中的前一行或后一行添加一行内容,指定行前后增加一行内容
  16. 【计算机网络】知识点整理 第四章 网络层(王道考研视频学习记录)
  17. EDM营销存在的六大问题
  18. cocos2d-x 使用位图工具BMFont自定义字体 fnt
  19. wps模板服务器无响应,WPS表格无响应
  20. <论文阅读>LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry via Smoothing and Mapping

热门文章

  1. 六大设计原则 ——迪米特法则
  2. 校园创业项目金点子,学校创业做什么好?
  3. 程浩[迅雷网创始人]
  4. 在线查询交通卡公交卡余额
  5. YOLOV:图像对象检测器在视频对象检测方面表现也很不错
  6. PHP祛斑,美图秀秀帮你完美祛斑打造均匀嫩滑肤质
  7. Arcgis分割栅格结果为空
  8. 数字电路:奎因-麦克拉斯基算法
  9. php 外汇实时更新接口,利用yahoo汇率接口实现实时汇率转换示例
  10. traceroute追踪路由命令