本指南旨在帮助任何将使用霓虹灯内部函数的现有矢量处理代码迁移到氦内部函数的人。我们将研究不同复杂度的霓虹灯代码示例,并研究如何将该霓虹灯代码迁移到氦。通过研究这些示例,您将了解一些通用的迁移原则,这些原则可用于将您自己的Neon代码迁移到氦。迁移是必要的,因为尽管氖和氦之间有相似之处,但它们基于不同的架构。因此,软件不能在两者之间直接移植。 氖和氦的相似之处包括: •矢量寄存器为128位宽。 •浮点单元(FPU)中的寄存器被重新用作矢量寄存器。 •一些矢量指令在氦和氖之间很常见。 然而,氖和氦之间也存在差异,包括以下方面: •矢量寄存器的数量。氦支持8个矢量寄存器,而霓虹灯支持16或32个矢量寄存器。•许多氦指令同时使用矢量寄存器和通用寄存器。在霓虹灯中,只有少数指令以这种方式混合使用寄存器。然而,一些Neon指令通过立即值或使用单个矢量元素作为标量来混合矢量和标量值。•氦支持较新的数据类型,如fp16,而旧架构的霓虹灯扩展不支持这种数据类型。•氦的一些特性,如低开销分支和预测,是氦特有的。•Neon为缩小和扩大操作提供了64位半矢量大小。氦气不支持此功能。 •霓虹灯提供交错的三路加载和存储。氦气不支持此功能。•Neon和Helium提供了不同的数据扩展和缩小方案。由于这些差异,没有简单的方法可以自动将Neon内部代码直接转换为Helium。然而,这并不一定意味着您必须从头开始重新设计代码。以下策略可以帮助迁移: •如果Neon代码已经矢量化,软件中的算法结构可以重复使用,并对氦进行调整。•如果Neon代码使用内部函数,编译器会隐藏所有寄存器差异。•如果Neon代码使用内部函数,那么一些内部函数在Neon和Helium之间是通用的。 本指南提供了示例来说明迁移过程,每个示例都包括以下内容: •原始霓虹灯代码,以及对霓虹灯内部函数执行功能的高级解释
2023-08-02 07:39
stm32f4xx.h默认25M外部晶振(HSE):而我们正常情况是接8M晶振,所以要做修改,否则将会出现串口乱码等奇怪问题#if !defined(HSE_VALUE) //#define
2021-08-10 07:20
有时候需要在Layout中显示元件的Value值,比如需要显示矩阵式键盘中每个按键的名称,这些名称在orcad中是保存在元件属性(Edit properties...)中的Value项。我在本站
2011-06-23 15:08
stm32f4xx.h默认25M外部晶振(HSE):#if !defined(HSE_VALUE)#define HSE_VALUE ((uint32_t)25000000) /*!<
2021-08-10 06:06
ORCAD传递分立器件Value值到PowerPCB的方法
2012-08-20 14:48
Stm32f429串口通信乱码问题:HSE_VALUE设置在调试Stm32f429串口通信时,串口调试助手出现如图所示乱码。由于需要用到的串口是UART7,而正点原子阿波罗开发板提供的例程
2021-08-10 06:25
本指南向您展示了如何在C或C++代码中使用Neon内部函数来利用Armv8体系结构中的高级SIMD技术。简单的例子展示了如何使用这些本质并提供了解释其目的的机会。 想要使用高级SIMD的低级软件工程师、库编写人员和其他开发人员技术人员会发现本指南非常有用。 在本指南的末尾,有一个“检查你的知识”部分来测试你是否理解以下关键概念: •了解霓虹灯是什么,并了解使用霓虹灯的不同方式 •了解在C语言中使用Neon内部函数的基本知识 •了解在哪里可以找到Neon内部引用和Neon指令集
2023-08-02 10:32
调试发现,程序卡在if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)处,不往下进行。原因:重复使能时钟。
2022-02-16 06:14
`这篇应用报告描述了一种低成本,基于MSP430 LaunchPad Value Line开发工具包(MSP-EXP430G2)的监测心率解决方案,此开发工具包使用MSP430G2xx微控制器
2014-05-31 03:45
简介——Intrinsic functions for C51函数原型:#ifndef __INTRINS_H__#define __INTRINS_H__#pragma SAVE#if
2021-11-30 06:16