首页 > 其他分享 >CPU指令集——获取数组的所有奇数位、所有偶数位

CPU指令集——获取数组的所有奇数位、所有偶数位

时间:2024-06-13 23:11:31浏览次数:23  
标签:__ 13 15 14 uint8 偶数 m128i 指令集 CPU

为抽取bayer格式图像的r\g\b做准备

#include <iostream>
#include <intrin.h>

int main()
{
    uint8_t uint8_array[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; //内存顺序0 1 2
    __m128i a = _mm_load_si128((__m128i*)uint8_array);                                  //内存顺序0 1 2
    __m128i b = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);     //内存顺序15 14 13,注意此函数是反序
    __m128i c = _mm_shuffle_epi8(a, b);     //按b索引对a重排,b第一个索引15对应a的15
    uint8_t* uint8_result = (uint8_t*)&c;   //15 14 13
    for (int i = 0; i < 16; i++)
    {
        std::cout << (int)uint8_result[i] << "\n";
    }

    //对a重排,前一半是所有奇数位,后一半是所有偶数位
    __m128i oe = _mm_set_epi8(15, 13, 11, 9, 7, 5, 3, 1, 14, 12, 10, 8, 6, 4, 2, 0);
    __m128i oe_result = _mm_shuffle_epi8(a, oe);
    uint8_t* uint8_oe_result = (uint8_t*)&oe_result;
    for (int i = 0; i < 16; i++)
    {
        std::cout << (int)uint8_oe_result[i] << "\n";
    }
    uint8_t o_result[8], e_result[8];
    memcpy(o_result, uint8_oe_result, 8 * sizeof(uint8_t));     //所有奇数位的元素
    memcpy(e_result, uint8_oe_result+8, 8 * sizeof(uint8_t));   //所有偶数位的元素
}

 

标签:__,13,15,14,uint8,偶数,m128i,指令集,CPU
From: https://www.cnblogs.com/xixixing/p/18246942

相关文章

  • 排查Java进程CPU占用高之三板斧
    写在前面线上环境突然出现Java进程CPU占用率持续超过100%的问题,该如何排查并定位呢?问题一:我们如何知道线上环境的那个服务器(或者哪个Docker容器)出现了CPU持续高的故障了呢?如果是有比较完善的监控设施,当出现CPU持续高时可以通过发送报警通知的方式告知开发人员,如果没有监控通知,......
  • zabbix 监控客户端进程Cpu && Mem
    目录zabbix监控客户端进程Cpu&&Mem进程Cpulinux环境下win10windows环境下zabbix监控客户端进程Cpu&&Mem有几台win10的机器,经常cpu过高导致服务不可用,但是不知道是哪个进程导致的。特地加个cpu监控进程的脚本,此外也会加linux系统的,详情请参考下面进程Cpulinux环境下对......
  • 对于一个数字串,如何确定某段区间出现的数字是否都是偶数次
    本章对标:D-ThreeDaysAgo问题非常简单,也就是求出所有连续区间且这个区间内的数字都出现了偶数次的总合法区间数那么很明显有中\(O(n^2)\)的算法,但复杂度不够,那么枚举区间不行,从别的方面入手,考虑到每个字符只能是数字,那么我们此时可以将其转化为一个二进制串,表示的含义就是......
  • CPU指令集学习——gather
    每次偏移int索引*scale个字节,每次取4字节。注意int索引是倒序的,如__m128i vindex有4个int索引,先取最后一个索引。举例:__m128i _mm_i32gather_epi32 (intconst* base_addr, __m128i vindex, constint scale)intint_array[8]={100,200,300,400,500,600,700,......
  • OceanBase主机CPU超过85% SQL性能急剧下降案例
    之前在培训的时候,OceanBase的老师就说过,当主机CPU使用率超过85%之后,SQL的就会急剧下降。最近分析问题的时候刚好碰到相关案例,简单记录下ocp记录的主机CPU相关信息如下问题SQL的执行情况:从下面的SQL执行情况可以看到,在6-1号的时候问题SQL在下午六点半开始执行,平均执行时间为21m......
  • k8s_示例_根据CPU使用率自动扩展Pod数量并使Pod分布在不同节点
    我们从制作测试用镜像开始,后续一步一步实现在k8s中使pod根据cpu用量自动扩展pod个数。知识准备在做这个示例之前,需要了解k8s(也叫kubernetes)基本原理,了解k8s是用来干嘛的即可,以及deployment、service、hpa、镜像、docker等概念。不然会有些晕的,不知道这些配置和这些操作......
  • Objection 常用指令集
    ===========附加包名启动============objection-gcom.tigerbrokers.stockexplore===========启动某个activity===========androidintentlaunch_activitycom.xxx===========所有已经加载的类===========androidhookinglistactivities===========查看所有指定类中所有方法......
  • 【平头哥开源CPU——玄铁C910】开源项目库配置和前仿真记录
    C910开源项目库配置C910开源项目库中有很多问题,比如我做到makecompile的时候一直在报错无法找到工程下的某个文件,主要原因是平头哥官方提供的环境变量配置文件类型是.csh的,而我的linux工作站里没有csh而且没有联网。所以把csh文件内容做了修改也成功跑通了,现在分享一下。......
  • IC693CPU331S CPU 331 Module
    IC693CPU331S  CPU 331 Module板卡控制通常具有较高的实时性能,可以在短的响应时间内进行控制和监测。这是因为板卡控制直接与硬件设备连接,并通过硬件接口进行数据采集和输出控制。它不依赖于外部的通信和传输过程,因此可以实时地对设备进行控制和反馈。PLC控制的实时性能相......
  • 《Optimizing the LINPACK Algorithm for Large-Scale PCIe-Based CPU-GPU Heterogene
    论文标题《OptimizingtheLINPACKAlgorithmforLarge-ScalePCIe-BasedCPU-GPUHeterogeneousSystems》为基于PCIe的大规模CPU-GPU异构系统优化LINPACK算法作者GuangmingTan、ChaoyangShui、YinshanWang、XianzhiYu和YujinYan来自中科院计算所初读摘要......