2024-05-30 ARM32编译器编译neon汇编代吗 Error: selected processor does not support `vrshrn.i16 d0,q1,‘ in ARM

一、要编译下面的test.c代码,包含arm 汇编语言。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>

void test_NEON32(uint8_t *dst, uint16_t *src, int a, int b)
{

        asm volatile (
                ".p2align  4                                \n"
                "1:                                         \n"
                "vld1.16         {q1, q2}, [%1]!             \n"
				"vrshrn.i16 d0, q1, #2 							\n"
				"vrshrn.u16     d1, q2, #2                  \n" 
                "subs           %0, %0, #16                 \n"
                "bgt       1b                              \n"
                  "+r"(src),  
                  "+r"(dst) 
                :
                : "cc", "memory", "q0", "q1", "q2");
}

int main()
{
	return 0 ;
}

二、提示下面的ERRO

三、解决方法;增加-mfpu=neon-vfpv4。在Makefile里面可以增加CFLAGS=-c -mfpu=neon-vfpv4 -Wall。

四、在 GCC(GNU Compiler Collection)中,-mfpu 选项用于指定要使用的浮点单元(FPU)类型使用arm-xxxxxx-gcc -Q --help=target 命令查看-mfpu ,发现编译器的默认值不是neon,故先前是编译不过的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值