在Spike模拟器运行FP16向量加法时触发非法指令问题求助
问题分析与解决方案
核心原因
你遇到的非法指令错误,是因为vfadd.vv属于RISC-V向量半精度浮点扩展(Zvfh),而当前Spike配置仅启用了标量半精度浮点扩展(ZFH),并未开启向量半精度指令的支持,导致Spike无法识别这条向量浮点加法指令。
具体修复步骤
重新编译Spike,添加Zvfh扩展支持
修改Spike的配置命令,在ISA中加入Zvfh扩展:../configure --prefix=$RISCV --with-isa=RV64IMAFDCVZFH_Zvfh --with-varch=vlen:256,elen:64执行配置后重新编译安装Spike:
make && make install更新编译命令,确保指令兼容性
编译时显式指定包含Zvfh扩展的架构,避免编译器生成Spike不支持的指令:riscv64-unknown-elf-gcc test_fp16.c -o test_fp16 -march=rv64gcv_zfh_zvfh -mabi=lp64修复代码冗余项
你的汇编代码输入列表里包含未定义的[PK] "r"(K),会导致编译警告,建议删除该冗余项,修改后的输入段应为:: [LEN] "r"(len), [PA] "r"(A), [PB] "r"(B), [PC] "r"(C)
验证
完成上述步骤后,重新运行spike pk test_fp16,程序即可正常执行vfadd.vv指令并输出结果。
内容的提问来源于stack exchange,提问作者J.Lu
相关产品推荐
相关产品推荐

