neon

Replacing memcpy with neon intrinsics

北战南征 提交于 2021-02-20 04:26:28
问题 I am trying to beat the "memcpy" function by writing the neon intrinsics for the same . Below is my logic : uint8_t* m_input; //Size as 400 x300 uint8_t* m_output; //Size as 400 x300 //not mentioning the complete code base for memory creat memcpy(m_output, m_input, sizeof(m_output[0]) * 300* 400); Neon: int32_t ht_index,wd_index; uint8x16_t vector8x16_image; for(int32_t htI =0;htI < m_roiHeight;htI++){ ht_index = htI * m_roiWidth ; for(int32_t wdI = 0;wdI < m_roiWidth;wdI+=16){ wd_index = ht

Optimizing horizontal boolean reduction in ARM NEON

时光总嘲笑我的痴心妄想 提交于 2021-02-18 10:59:09
问题 I'm experimenting with a cross-platform SIMD library ala ecmascript_simd aka SIMD.js, and part of this is providing a few "horizontal" SIMD operations. In particular, the API that library offers includes any(<boolN x M>) -> bool and all(<boolN x M>) -> bool functions, where <T x K> is a vector of K elements of type T and boolN is an N -bit boolean, i.e. all ones or all zeros, as SSE and NEON return for their comparison operations. For example, let v be a <bool32 x 4> (a 128-bit vector), it

What is the most efficient way to support CMGT with 64bit signed comparisons on ARMv7a with Neon?

对着背影说爱祢 提交于 2020-12-12 05:39:34
问题 This question was originally posed for SSE2 here. Since every single algorithm overlapped with ARMv7a+NEON's support for the same operations, the question was updated to include the ARMv7+NEON versions. At the request of a commenter, this question is asked here to show that it is indeed a separate topic and to provide alternative solutions that might be more practical for ARMv7+NEON. The net purpose of these questions is to find ideal implementations for consideration into WebAssembly SIMD.

CSS八种让人眼前一亮的HOVER效果

做~自己de王妃 提交于 2020-12-05 20:54:37
来源: https://juejin.im/post/6861501624993447950 译自: https://www.blog.duomly.com/html-button-hover-effects/ 一.发送效果 HTML < div id = "send-btn" > < button > // 这里是一个svg的占位 Send </ button > </ div > CSS #send-btn { display : flex; align-items : center; justify-content : center; height : 100vh ; } button { background : #5f55af ; border : 0 ; border-radius : 5px ; padding : 10px 30px 10px 20px ; color : white; text-transform : uppercase; font-weight : bold; } button svg { display : inline-block; vertical-align : middle; padding-right : 5px ; } button :hover svg { animation : fly 2s ease 1 ; } @

cortex—A7 cortex—A9 cortex—A53

ε祈祈猫儿з 提交于 2020-11-27 09:57:06
晕了,不去了解就敷衍回答是不负责任的!这里回答的人居然都想当然的回答A9比A7新,A7是刚刚才推出的最新架构,比神马A8,A9,A15,A5都要新,28mm制程,高性能,低功耗。 Cortex-A7 处理器是一种高能效应用处理器,除了其他低功耗应用外,还支持低成本、全功能入门级智能手机。 该处理器与其他 Cortex-A 系列处理器完全兼容并整合了高性能 Cortex-A15 处理器的所有功能,包括虚拟化、大物理地址扩展 (LPAE) NEON 高级 SIMD 和 AMBA 4 ACE 一致性。 单个 Cortex-A7 处理器的能源效率是 ARM Cortex-A8 处理器(支持如今的许多最流行智能手机)的 5 倍,性能提升 50%,而尺寸仅为后者的五分之一。 2, cortex 1、Cortex-A53不仅是功耗效率最高的ARM应用处理器,也是全球最小的64位处理器。可独立运作或整合为ARM big.LITTLE处理器架构。 2、该处理器系列的可扩展性使ARM的合作伙伴能够针对智能手机、高性能服务器等各类不同市场需求开发系统级芯片(SoC)。 Cortex系列属于ARMv7架构,这是到2010年为止ARM公司最新的指令集架构。(2011年,ARMv8 架构在 TechCon 上推出)ARMv7架构定义了三大分工明确的系列:"A"系列面向尖端的基于虚拟内存的操作系统和用户应用;

YUV转RGB(NV21-ARGB)的Neon优化代码

柔情痞子 提交于 2020-11-27 02:42:24
说明 此代码仅限于 NV21 格式转 ARGB 格式。 NV21 格式中,Y 单独存储,UV分量交错存储。 使用如下公式: R = Y + 1.402*(V-128); G = Y - 0.34414*(U-128) - 0.71414*(V-128); B = Y + 1.772*(U-128); 浮点乘法用 6位精度处理(即a*b = ((a << 6)*b )>>6) 代码 #ifdef HAS_NEON #include <arm_neon.h> #endif void convertToRGBA( unsigned char * yuv, int w, int h, int * rgba) { for ( int i= 0 ; i<h; ++i) { unsigned char * dst = ( unsigned char *)(rgba + w*i); unsigned char * y = yuv + w*i; unsigned char * uv = yuv + w*h + w*(i/ 2 ); int count = w; #ifdef HAS_NEON /*一次处理16个像素*/ int c = count/ 16 ; asm volatile ( "mov r4, %[c]\t\n" "beq 2f\t\n" "vmov.u8 d7, #255\t\n" /

华为鲲鹏产业生态加速算力升级,企业数字化转型在山西吹响号角

非 Y 不嫁゛ 提交于 2020-11-01 00:28:24
2020年,新基建风口已至,建设数字基础设施,打造数字产业生态是其关键与核心,而算力底座将成为其重要的运行支撑。数字化浪潮大背景下,鲲鹏计算产业生态,充满巨大的想象与发展空间。 从企业数字化转型角度来看,IT不再是企业内部系统支撑的组织,可能是对企业发展驱动的核心的竞争力。其中,基于云计算的虚拟化技术必将成为企业核心的竞争力。 近日,由山西省工业和信息化厅、山西转型综改示范区管委会、华为技术有限公司、山西云时代技术有限公司和山西鲲鹏生态创新中心共同举办了1024鲲鹏展翅“员来有你”鲲鹏程序员节系列活动-DevRun开发者沙龙,来自华为的技术专家从DevCloud、鲲鹏软件迁移实战、鲲鹏计算云平台解决方案等维度介绍了鲲鹏计算产业。 据山西云时代鲲鹏生态创新中心有限公司副总经理张骅介绍,此次开展基于鲲鹏创新体系的活动,是为了向参加鲲鹏生态的企业、人员和学生提供专业化的服务,包括鲲鹏计算资源、软件产品适配构建和应用代码迁移等公共服务,共同推进基于鲲鹏生态研发的企业应有创新及软件项目孵化活动。 目前,山西云时代鲲鹏生态创新中心正在建立鲲鹏适配区域和认证实验室,以及一体化培训创新中心,预计在下个月就可以投入使用。 做自主可控的中国版Devcloud软件生态 软件定义一切,所有的公司和企业、组织都必将面临数字化转化之路。 当然,数字化时代最典型的一个技术特征就是云计算

评测丨飞凌i.MX6ULL与iMX6UL开发板性能评测对比

自作多情 提交于 2020-10-29 10:55:48
OKMX6UL L-S开发板采用NXP的高性能、超高效、低成本 处理器MCIMX6Y2 开发设计,采用先进的ARM Cortex - A7 内核。开发板采用 Linux 4.1.15+QT5.6操作系统,支持工业级和商业级两种配置:256MB DDR3L/512MB DDR3L,256MB NandFlash/4GB eMM C ,支持OTG、SD/TF卡批量烧写方式,支持单步更新内核。 ▲OKMX6ULL-S开发板 FETMX6ULL -S与 FETMX6UL -C并无太大区别,堪称双胞胎。 FETMX6ULL-S将CPU更换为NXP的 i.MX6ULL ,主频提升到800MHz;成为FETMX6UL-C核心板的互补产品,而且在功能和FETMX6UL-C完全兼容。 FETMX6ULL-S相比于FETMX6UL-C最大的提升就是它的主频由528MHz提升到了800MHz。 主频高了,意味着CPU单位时间内可执行的 时钟 周期多了。可执行时钟周期多了,意味着CPU在单位时间能执行的指令数量就比较多。可用的系统资源相应就比较多。 一句话,主频高了,系统速度相应提高。 通过查看/proc/cpuinfo文件,可以获得CPU等信息: i.MX6UL 的CPU信息如下: root@imx6ulevk:~# cat /proc/cpuinfo Processor : 0 model name

用NEON intrinsic实现RGB转YUV420SP(NV12)

馋奶兔 提交于 2020-10-27 03:30:04
如题,现在要把RGB的格式转成YUV格式。 1. 数据的排列方式   先来看看两种数据在内存里是按什么方式排列的 1.1 RGB的排列   如图所示,1组RGB表示1个像素的颜色,每个像素依次排列。图中有8组RGB数据,即8个像素点。 1.2 YUV的排列   如图所示,这里是 YUV420SP(NV12) 的排列方式,YUV的比例为 Y:U:V=4:1:1 。Y代表像素点的明亮度(灰阶),图中有48个Y,即48个像素点。UV代表像素点的色度,1个U和1个V组合到一起能表示一种颜色,在YUV420格式里,1组UV决定了4个像素点的颜色,其对应关系如图所示。U和V加起来的数据量是Y的一半。   YUV的图片还有许多种格式,请参考其它资料。   实际上它在内存里面是按照 Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7 Y 8 U 1 V 1 U 2 V 2 Y_1Y_2Y_3Y_4Y_5Y_6Y_7Y_8U_1V_1U_2V_2 Y 1 ​ Y 2 ​ Y 3 ​ Y 4 ​ Y 5 ​ Y 6 ​ Y 7 ​ Y 8 ​ U 1 ​ V 1 ​ U 2 ​ V 2 ​ 的顺序排列的,如下图所示。存储的时候数据是连续排列的,解析的时候加上宽和高的信息才成为了一张矩形图片。写代码计算地址偏移的时候要注意行和列的关系。 2. RGB与YUV的转换公式 不知道哪里来的公式

MT8768芯片资料技术详细解析,MT8768核心板简介

不打扰是莪最后的温柔 提交于 2020-10-26 23:21:20
MT8768芯片资料技术详细解析,MT8768核心板简介 MT8768核心板简介: MTK8768安卓核心板是联发科推出的 一款高性能八核应用处理器,这一款核心板功能相当不错,结合 4G LTE Cat-7 数据机并且支持强大的相机功能。联发科 MTK8768芯片是 一款专门为了需要高移动性和高性能的平板设备而设计的芯片,它拥有着全球移动网络连接功能。这一款芯片结合有八核 Arm-Cortex A53 MPCoreTM 中央处理器、速度高达 2.3GHz 的 Arm NEON 引擎,还拥有功能强大的 IMG PowerVR GE8320 等级绘图处理器,同时还支持最新的 OpenOS 及高需求的应用程式所必需的处理能力。 MTK8768处理器: CPU类型1:Arm Cortex-A53 @ Up to 2.3GHz CPU 类型2:Arm Cortex-A53 @ Up to 1.8GHz CPU核心:八核64位 内存:LPDDR3,LPDDR4x MTK8768图像处理: GPU类型:IMG PowerVR GE8320 显示分辨率:2400 x 1080 影片编码:H.264 视频解码:H.264,H.265/HEVC MTK8768相机参数: 相机ISP:13MP + 13MP,最高25MP 录制FPS:30帧 MTK8768连接参数: WiFi(IEEE 802.11)