一个简单的vector叠加示例

GCC version 4.7.0

#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <x86intrin.h>typedef union i4factor{__v4si v;int u4[4];
}
__attribute__((aligned(16)))
i4factor_t;
//typedef int v4sf __attribute__ ((mode(V4SF))); // vector of four single floats
#if 0
int a[4] = {1, 2, 3, 4};
int b[4] = {4, 3, 2, 1};void vectorAdd(void)
{int i = 0;for (i = 0; i < 4; i++) {a[i] = a[i] + b[i];}
}
#else
i4factor_t a, b, c;void vectorAdd(void)
{//c = __builtin_addv4si(a, b);c.v = a.v + b.v;
}
#endif
int main(int argc, char **argv)
{a.u4[0] = 1;a.u4[1] = 2;a.u4[2] = 3;a.u4[3] = 4;b.u4[0] = 4;b.u4[1] = 3;b.u4[2] = 2;b.u4[3] = 1;vectorAdd();//printf("%d, %d, %d, %d\n", a[0], a[1], a[2], a[3]);printf("%d, %d, %d, %d\n", c.u4[0], c.u4[1], c.u4[2], c.u4[3]);return 0;
}

编译

# gcc -march=core2 -O2 -pipe -ggdb -c v4si.c -o v4si.o
# gcc v4si.o  -o v4si

执行

# ./v4si
5, 5, 5, 5

objdump 查看是使用了SIMD指令

# objdump -dS v4si.o |grep -22 c.v |tail -25void vectorAdd(void)
{//c = __builtin_addv4si(a, b);c.v = a.v + b.v;63:   66 0f fe 05 00 00 00    paddd  0x0(%rip),%xmm0        # 6b <main+0x6b>6a:   006b:   66 0f 7f 05 00 00 00    movdqa %xmm0,0x0(%rip)        # 73 <main+0x73>72:   00

GCC vector 叠加示例相关推荐

  1. boost::geometry模块Linestring多边形叠加示例

    boost::geometry模块Linestring多边形叠加示例 实现功能 C++实现代码 实现功能 boost::geometry模块Linestring多边形叠加示例 C++实现代码 #inc ...

  2. boost::geometry模块多边形叠加示例

    boost::geometry模块多边形叠加示例 实现功能 C++实现代码 实现功能 boost::geometry模块多边形叠加示例 C++实现代码 #include <boost/forea ...

  3. C++ vector使用示例

    C++ vector使用示例 一.不含指针,不含new 示例1 示例2 加入push.back() 示例3 加入pop.back() 二.含有指针,不含new 示例1 示例2 三.含有指针,含有new ...

  4. echarts地图文字重叠解决方案_ECharts 和百度地图的叠加示例(下)

    前言 汇总了几个 ECharts 地图和百度地图在可视化展示时的综合示例. 主要是在 ECharts 地图和百度地图上叠加展示一些数字.图片.其它图表和轨迹动画. 另外因为每个示例的代码配置项比较繁琐 ...

  5. Android 中 vector 反汇编示例

    前言 最近遇到一个 native crash 问题,如下所示:(Android 8.1) Revision: '0' ABI: 'arm64' pid: 1863, tid: 3348, name: ...

  6. 《OpenCV3编程入门》学习笔记5 Core组件进阶(二) ROI区域图像叠加图像混合

    第5章 Core组件进阶 5.2 ROI区域图像叠加&图像混合 5.2.1 感兴趣区域ROI(region of interest) 1.定义ROI区域两种方法: (1)定义矩形区域Rect: ...

  7. c++ vector查找_C++ vector内存分配策略浅析

    (给CPP开发者加星标,提升C/C++技能) 来源:邱国禄https://blog.csdn.net/qiuguolu1108/article/details/107146184 vector是一个封 ...

  8. 快速失败Vs安全失败(Java迭代器附示例)

    译者:java达人-卍极客 英文出处:Java Concept Of The Day 英文链接:http://javaconceptoftheday.com/(点击文末阅读原文前往) 转载请标注以上声 ...

  9. 转载:【OpenCV入门教程之四】 ROI区域图像叠加初级图像混合 全剖析

    [OpenCV入门教程之四] ROI区域图像叠加&初级图像混合 全剖析 浅墨_毛星云 2014-03-10 12:48:05 157425 收藏 19 最后发布:2014-03-10 12:4 ...

  10. linux开发工具之gcc

    首先gcc编译链接的一个实例如下所示: 接下来看一下gcc的常见选项: gcc的使用示例: 转载于:https://www.cnblogs.com/wsw-seu/p/10826124.html

最新文章

  1. linux 自定义外壳,管道在自定义的linux外壳
  2. 微软开放 AI 系统工具 Counterfit 源代码
  3. 安卓之上传文件,即HTTP提交表单
  4. JAVA程序设计----多线程(上)
  5. IDEA开启Run Dashboard窗口
  6. 鸿蒙3部曲先看哪部,讨论雪鹰与鸿蒙三部曲的关系
  7. for in / for of 要会用
  8. H.264/AVC 标准中CAVLC 和CABAC 熵编码算法研究
  9. php中队列控制的方法,学习猿地-php 队列的实现方法
  10. 收集SQLite中的时间日期函数[ZT]
  11. 李宏毅机器学习——集成学习
  12. 调用vba_VBA代码解决方案的第86讲内容:VBA代码的优化篇
  13. idea 搜索快捷键
  14. GBASE 8s DB-Access入门
  15. 手机b站封面提取网站_【软件分享】B站视频提取器
  16. Codeforces Round #393 Frodo and pillows
  17. python获取当前星期几
  18. sina.cn邮箱邀请
  19. 7 125 kHz RFID技术
  20. 编写程序实现以下功能:计算1~n之间的素数并输出

热门文章

  1. 教你手写Java层handler机制
  2. js基础-21-事件委托
  3. Express框架学习笔记-app.locals对象
  4. oracle的监听服务详解
  5. C语言学生管理程序输入错误,c语言编程,关于学生管理的程序(急急急)
  6. hashmap value占用空间大小_性能优化:为什么要使用SparseArray和ArrayMap替代HashMap?...
  7. url后面的参数是什么_揭秘亚马逊黑科技之超级URL原理
  8. 同济大学c语言程序设计答案,2020年同济大学道路与铁道工程考研真题试卷及试题答案,汽车理论及设计考研试题下载...
  9. python的flask实现接口_python+flask:实现POST接口功能
  10. 设置y轴刻度_Origin中如何设置坐标轴单位长度相等? axisisometric