有关编译c内联矢量指令时,unknown register name ‘v1’ in ‘asm’的问题
-
系统是D1-H上搭载的Ubuntu系统,用的gcc编译器是apt install上的,目前编译出现了问题,
其中testv.c文件的内容如下#include <unistd.h> #include <stdio.h> //#include <riscv-vector.h> void test_v(void) { float a[]={1.0,2.0,3.0,4.0}; float b[]={1.0,2.0,3.0,4.0}; float c[]={0.0,0.0,0.0,0.0}; int len=4; int i=0; //inline assembly for RVV 0.7.1 //for(i=0; i<len; i++){c[i]=a[i]+b[i];} asm volatile( "mv t4, %[LEN] \n\t" "mv t1, %[PA] \n\t" "mv t2, %[PB] \n\t" "mv t3, %[PC] \n\t" "LOOP1: \n\t" "vsetvli t0, t4, e32,m1 \n\t" "sub t4, t4, t0 \n\t" "slli t0, t0, 2 \n\t" //Multiply number done by 4 bytes "vle.v v0, (t1) \n\t" "add t1, t1, t0 \n\t" "vle.v v1, (t2) \n\t" "add t2, t2, t0 \n\t" "vfadd.vv v2, v0, v1 \n\t" "vse.v v2, (t3) \n\t" "add t3, t3, t0 \n\t" "bnez t4, LOOP1 \n\t" : :[LEN]"r"(len), [PA]"r"(a),[PB]"r"(b),[PC]"r"(c) :"cc","memory", "t0", "t1", "t2", "t3", "t4", "v0", "v1", "v2" ); for(i=0; i<len; i++){ printf("\n"); printf("%f\n",c[i]); printf("\n"); } } int main(){ test_v(); return 0; }
请问各位大大这是出现了什么问题,谢谢!
-
刚刚使用了tina的交叉编译器,能够成功编译出可执行文件tmp3,但是在板子上无法执行,
-
刚刚又尝试了在tinalinux上跑交叉编译出的文件,结果如下
还是无法正常运行,现在在tina和ubuntu上都无法运行,请大佬帮忙,如果过于麻烦,可以有偿 -
-
@zny666 在 有关编译c内联矢量指令时,unknown register name ‘v1’ in ‘asm’的问题 中说:
目前编译出现了问题
可能gcc功能不全,或者这个版本不支持这个语法。
-
@zny666
first try
chmod a+x ./tmp3
then run
sudo ./tmp3 -
@whycan
目前是这样的 -
@kunyi
thank you,but now it still cannot run. -
-
@zny666
Which filesystem fat or ext4 on SDCARD?
maybe try copy ./tmp3 on ext4 filesystem to verify again,cp -vf tmp3 /tmp && chmod a+x /tmp/tmp3 && /tmp/tmp3
-
@whycan
添加过了,但是还是报错 -
@zny666
不应该是 riscv64***-gcc 命令吗? -
@whycan
刚刚的截图是我在D1上运行的ubuntu系统,系统中带有riscv版本的gcc编译器,所以我直接在板子的ubuntu系统上运行了gcc。
下面我又使用了tina的交叉编译工具链,不管加不加static都能够编译成功,
之后我将生成的tmp5传到板子上运行,出现了以下问题
这个问题是因为编译出的指令集不支持吗 -
@whycan
刚刚我又使用了官网上提供的其他工具链,如果使用官网最新的下图中工具链,
会出现以下问题,
然后如果按照原教程提供的2021年的工具链,能够编译成功,如下图
但是在板子上运行时,会出现下面的报错(是在板子的ubuntu上运行)
-
@whycan 所以是不是我的板子没有开启rvv指令的支持?如果是这个原因的话,请问应该怎么打开呢
-
-
@whycan 后面用的交叉编译工具都是使用的官方工具,但是没办法在Ubuntu上正常执行,如果在tina linux上运行,则如下图
在板载的ubuntu上运行则是报illegal instruction的错误。 -
@zny666
可能里面有不支持的指令。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号