中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

AVX重载运算类

计算AVX指令向量同数据类型间的加、减、乘、除以及自加、自减、自乘和自除的重载运算。

接口定义

加法运算:

__m128i operator + (const __m128i &a, const __m128i &b);

__m256i operator + (const __m256i &a, const __m256i &b);

__m256 operator + (const __m256 &a, const __m256 &b);

__m256d operator + (const __m256d &a, const __m256d &b);

__m512i operator + (const __m512i &a, const __m512i &b);

__m512 operator + (const __m512 &a, const __m512 &b);

__m512d operator + (const __m512d &a, const __m512d &b);

减法运算:

__m128i operator - (const __m128i &a, const __m128i &b);

__m256i operator - (const __m256i &a, const __m256i &b);

__m256 operator - (const __m256 &a, const __m256 &b);

__m256d operator - (const __m256d &a, const __m256d &b);

__m512i operator - (const __m512i &a, const __m512i &b);

__m512 operator - (const __m512 &a, const __m512 &b);

__m512d operator - (const __m512d &a, const __m512d &b);

乘法运算:

__m128i operator*(const __m128i &a, const __m128i &b);

__m256i operator*(const __m256i &a, const __m256i &b);

__m256 operator*(const __m256 &a, const __m256 &b);

__m256d operator*(const __m256d &a, const __m256d &b);

__m512i operator*(const __m512i &a, const __m512i &b);

__m512 operator*(const __m512 &a, const __m512 &b);

__m512d operator*(const __m512d &a, const __m512d &b);

除法运算:

__m128i operator / (const __m128i &a, const __m128i &b);

__m256i operator / (const __m256i &a, const __m256i &b);

__m256 operator / (const __m256 &a, const __m256 &b);

__m256d operator / (const __m256d &a, const __m256d &b);

__m512i operator / (const __m512i &a, const __m512i &b);

__m512 operator / (const __m512 &a, const __m512 &b);

__m512d operator / (const __m512d &a, const __m512d &b);

自加运算:

__m128i &operator += (__m128i &a, const __m128i &b);

__m256i &operator += (__m256i &a, const __m256i &b);

__m256 &operator += (__m256 &a, const __m256 &b);

__m256d &operator += (__m256d &a, const __m256d &b);

__m512i &operator += (__m512i &a, const __m512i &b);

__m512 &operator += (__m512 &a, const __m512 &b);

__m512d &operator += (__m512d &a, const __m512d &b);

自减运算:

__m128i &operator -= (__m128i &a, const __m128i &b);

__m256i &operator -= (__m256i &a, const __m256i &b);

__m256 &operator -= (__m256 &a, const __m256 &b);

__m256d &operator -= (__m256d &a, const __m256d &b);

__m512i &operator -= (__m512i &a, const __m512i &b);

__m512 &operator -= (__m512 &a, const __m512 &b);

__m512d &operator -= (__m512d &a, const __m512d &b);

自乘运算:

__m128i &operator *= (__m128i &a, const __m128i &b);

__m256i &operator *= (__m256i &a, const __m256i &b);

__m256 &operator *= (__m256 &a, const __m256 &b);

__m256d &operator *= (__m256d &a, const __m256d &b);

__m512i &operator *= (__m512i &a, const __m512i &b);

__m512 &operator *= (__m512 &a, const __m512 &b);

__m512d &operator *= (__m512d &a, const __m512d &b);

自除运算:

__m128i &operator /= (__m128i &a, const __m128i &b);

__m256i &operator /= (__m256i &a, const __m256i &b);

__m256 &operator /= (__m256 &a, const __m256 &b);

__m256d &operator /= (__m256d &a, const __m256d &b);

__m512i &operator /= (__m512i &a, const __m512i &b);

__m512 &operator /= (__m512 &a, const __m512 &b);

__m512d &operator /= (__m512d &a, const __m512d &b);

参数

参数名

描述

取值范围

输入/输出

a

指令向量数据类型的引用。

不限

输入

b

指令向量数据类型的引用。

不限

输入

输出结果

与入参同类型的指令向量数据。

  • 重载运算类函数使用需单独包含头文件“operatoroverload.h”
  • 重载运算类函数的使用语言为C++,指令类函数的使用函数语言为C/C++。

示例

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "avx2ki.h"
#include "operatoroverload.h"

void OperatorExample()
{
    int64_t a[2] = {-5, 13};
    int64_t b[2] = {12, 3};
    int64_t c[2] = {0};
    __m128i t1 = _mm_load_epi64(a);
    __m128i t2 = _mm_load_epi64(b);
    __m128i dst = t1 + t2;
    _mm_store_epi64(c, dst);
    printf("dst: %ld %ld\n", c[0], c[1]);
}

int main(void) {
    OperatorExample();
    return 0;
}

运行结果:

dst: 7 16
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词