aarch64 AArch64 Port Project
番茄系统家园 · 2021-08-07 18:21:53

汇编编译运行
这是通过sve指令计算字符串长度的例子运行结果如下
注意指令是开始支持的因此-后面的参数是-asve
$-c---gnu-gcc-g-Wall-marcharmv8.2-asve-O2-c-osve_strlen_test.osve_strlen_test.cccsve_strlen.osve_strlen_test.o-osve_strlen./sve_strlenlen9ofhellosverm-f*.osve_strlensve_hello
因为这个例子的代码量比较少因此贴出sourcecode的源代码更多内容
见参考文献[6]
$catsve_strlen.S//reference:https://alastairreid.github.io/papers/sve-ieee-micro-2017.pdf.archarmv8.2-asve.text.align2.globalsve_strlen.typesve_strlen,%functionsve_strlen:movx1,x0ptruep0.b.loop:setffrldff1bz0.b,p0/z,[x1]rdffrp1.b,p0/zcmpeqp2.b,p1/z,z0.b,#0brkbsp2.b,p1/z,p2.bincpx1,p2.bb.last.loopsubx0,x1,x0ret
AARCH64SVEintrinsics编译运行
这是一个通过sveintrinsics做批量运算的例子运行makerun_intrinsicsclean结果如下
$makerun_intrinsicsclean/home/dev/bin/gcc_sve/bin/aarch64-linux-gnu-gcc-g-Wall-marcharmv8.2-asve-O2-c-osve_hello.osve_hello.cccsve_hello.o-osve_hello./sve_hello0.9880950.9880950.988095,0.000000,0.9880951.4880951.4880951.488095,0.500000,0.9880951.6547621.6547621.654762,0.666667,0.9880951.7380951.7380951.738095,0.750000,0.9880951.7880951.7880951.788095,0.800000,0.9880951.8214291.8214291.821429,0.833333,0.9880951.8452381.8452381.845238,0.857143,0.9880951.8630951.8630951.863095,0.875000,0.9880951.8769841.8769841.876984,0.888889,0.9880951.8880951.8880951.888095,0.900000,0.988095rm-f*.osve_strlensve_hello
附录
下载附件ubuntu-19.04-dockerfile和docker-build.sh
在命令行上输入如下命令等待一段时间环境就会创建成功。
./docker-build.sh
参考文献
[1]SVEinQEMU’slinux-usermode
[2]交叉编译支持SVEACLE的gcc
[3]qemu-user-staticrelease
[4]ARM64编译工具链下载
[5]AARCH64samplecode
[6]AlastairReid’page
免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/post/25721.html。
