14. SIMD 内部函数

本节介绍仅在设备代码中支持的SIMD内置函数。

要使用这些函数,您无需在程序中包含任何额外的头文件。

Functions

__device__ unsigned int __vabs2(unsigned int a)

计算每个半字的绝对值:|a|。

__device__ unsigned int __vabs4(unsigned int a)

计算每个字节的绝对值:|a|。

__device__ unsigned int __vabsdiffs2(unsigned int a, unsigned int b)

计算每个半字的带符号整数绝对差值:|a - b|。

__device__ unsigned int __vabsdiffs4(unsigned int a, unsigned int b)

计算有符号整数的逐字节绝对差值:|a - b|。

__device__ unsigned int __vabsdiffu2(unsigned int a, unsigned int b)

计算无符号整数的每半字绝对差值:|a - b|。

__device__ unsigned int __vabsdiffu4(unsigned int a, unsigned int b)

计算无符号整数的逐字节绝对差值:|a - b|。

__device__ unsigned int __vabsss2(unsigned int a)

计算每个半字的绝对值,带符号饱和:|a|。

__device__ unsigned int __vabsss4(unsigned int a)

计算每个字节的绝对值,带符号饱和处理:|a|。

__device__ unsigned int __vadd2(unsigned int a, unsigned int b)

执行每半字(无)符号加法,带环绕:a + b。

__device__ unsigned int __vadd4(unsigned int a, unsigned int b)

执行逐字节(无)符号加法:a + b。

__device__ unsigned int __vaddss2(unsigned int a, unsigned int b)

执行带符号饱和的半字加法运算:a + b。

__device__ unsigned int __vaddss4(unsigned int a, unsigned int b)

执行带符号饱和的逐字节加法运算:a + b。

__device__ unsigned int __vaddus2(unsigned int a, unsigned int b)

执行带无符号饱和的半字加法:a + b。

__device__ unsigned int __vaddus4(unsigned int a, unsigned int b)

执行带无符号饱和的逐字节加法运算:a + b。

__device__ unsigned int __vavgs2(unsigned int a, unsigned int b)

执行每半字有符号舍入平均计算。

__device__ unsigned int __vavgs4(unsigned int a, unsigned int b)

计算每字节的有符号四舍五入平均值。

__device__ unsigned int __vavgu2(unsigned int a, unsigned int b)

执行每半字无符号舍入平均计算。

__device__ unsigned int __vavgu4(unsigned int a, unsigned int b)

执行逐字节无符号舍入平均值计算。

__device__ unsigned int __vcmpeq2(unsigned int a, unsigned int b)

执行每半字(无)符号比较:a == b ? 0xffff : 0。

__device__ unsigned int __vcmpeq4(unsigned int a, unsigned int b)

执行逐字节(无)符号比较:a == b ? 0xff : 0。

__device__ unsigned int __vcmpges2(unsigned int a, unsigned int b)

执行半字有符号比较:a >= b ? 0xffff : 0。

__device__ unsigned int __vcmpges4(unsigned int a, unsigned int b)

执行逐字节有符号比较:a >= b ? 0xff : 0。

__device__ unsigned int __vcmpgeu2(unsigned int a, unsigned int b)

执行每半字无符号比较:a >= b ? 0xffff : 0。

__device__ unsigned int __vcmpgeu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:a >= b ? 0xff : 0。

__device__ unsigned int __vcmpgts2(unsigned int a, unsigned int b)

执行每半字有符号比较:a > b ? 0xffff : 0。

__device__ unsigned int __vcmpgts4(unsigned int a, unsigned int b)

执行逐字节有符号比较:a > b ? 0xff : 0。

__device__ unsigned int __vcmpgtu2(unsigned int a, unsigned int b)

执行每半字无符号比较:a > b ? 0xffff : 0。

__device__ unsigned int __vcmpgtu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:a > b ? 0xff : 0。

__device__ unsigned int __vcmples2(unsigned int a, unsigned int b)

执行每半字有符号比较:a <= b ? 0xffff : 0。

__device__ unsigned int __vcmples4(unsigned int a, unsigned int b)

执行逐字节有符号比较:a <= b ? 0xff : 0。

__device__ unsigned int __vcmpleu2(unsigned int a, unsigned int b)

执行每半字无符号比较:a <= b ? 0xffff : 0。

__device__ unsigned int __vcmpleu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:a <= b ? 0xff : 0。

__device__ unsigned int __vcmplts2(unsigned int a, unsigned int b)

执行每半字有符号比较:a < b ? 0xffff : 0。

__device__ unsigned int __vcmplts4(unsigned int a, unsigned int b)

执行逐字节有符号比较:a < b ? 0xff : 0。

__device__ unsigned int __vcmpltu2(unsigned int a, unsigned int b)

执行每半字无符号比较:a < b ? 0xffff : 0。

__device__ unsigned int __vcmpltu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:a < b ? 0xff : 0。

__device__ unsigned int __vcmpne2(unsigned int a, unsigned int b)

执行每半字(无)符号比较:a != b ? 0xffff : 0。

__device__ unsigned int __vcmpne4(unsigned int a, unsigned int b)

执行逐字节(无)符号比较:a != b ? 0xff : 0。

__device__ unsigned int __vhaddu2(unsigned int a, unsigned int b)

执行每半字无符号平均计算。

__device__ unsigned int __vhaddu4(unsigned int a, unsigned int b)

计算每字节的无符号平均值。

__host__ __device__ unsigned int __viaddmax_s16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的 max(a + b, c) 运算

__host__ __device__ unsigned int __viaddmax_s16x2_relu(const unsigned int a, const unsigned int b, const unsigned int c)

对每个半字执行 max(max(a + b, c), 0)

__host__ __device__ int __viaddmax_s32(const int a, const int b, const int c)

计算 max(a + b, c)

__host__ __device__ int __viaddmax_s32_relu(const int a, const int b, const int c)

计算 max(max(a + b, c), 0)

__host__ __device__ unsigned int __viaddmax_u16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的 max(a + b, c) 运算

__host__ __device__ unsigned int __viaddmax_u32(const unsigned int a, const unsigned int b, const unsigned int c)

计算 max(a + b, c)

__host__ __device__ unsigned int __viaddmin_s16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每半字 min(a + b, c)

__host__ __device__ unsigned int __viaddmin_s16x2_relu(const unsigned int a, const unsigned int b, const unsigned int c)

执行每半字最大值(最小值(a + b, c), 0)

__host__ __device__ int __viaddmin_s32(const int a, const int b, const int c)

计算 min(a + b, c)

__host__ __device__ int __viaddmin_s32_relu(const int a, const int b, const int c)

计算 max(min(a + b, c), 0)

__host__ __device__ unsigned int __viaddmin_u16x2(const unsigned int a, const unsigned int b, const unsigned int c)

对每个半字执行 min(a + b, c) 运算

__host__ __device__ unsigned int __viaddmin_u32(const unsigned int a, const unsigned int b, const unsigned int c)

计算 min(a + b, c)

__host__ __device__ unsigned int __vibmax_s16x2(const unsigned int a, const unsigned int b, bool *const pred_hi, bool *const pred_lo)

执行每个半字的最大值(a, b),同时将pred_hi和pred_lo指针指向的值设置为每个半字的(a >= b)比较结果。

__host__ __device__ int __vibmax_s32(const int a, const int b, bool *const pred)

计算max(a, b),同时将pred指向的值设置为(a >= b)。

__host__ __device__ unsigned int __vibmax_u16x2(const unsigned int a, const unsigned int b, bool *const pred_hi, bool *const pred_lo)

执行每个半字的最大值(a, b),同时将pred_hi和pred_lo指针指向的值设置为每个半字的(a >= b)比较结果。

__host__ __device__ unsigned int __vibmax_u32(const unsigned int a, const unsigned int b, bool *const pred)

计算max(a, b),同时将pred指针指向的值设为(a >= b)。

__host__ __device__ unsigned int __vibmin_s16x2(const unsigned int a, const unsigned int b, bool *const pred_hi, bool *const pred_lo)

执行每个半字的最小值(a, b),同时将pred_hi和pred_lo指针指向的值设置为每个半字的(a <= b)比较结果。

__host__ __device__ int __vibmin_s32(const int a, const int b, bool *const pred)

计算min(a, b),同时将pred指向的值设置为(a <= b)。

__host__ __device__ unsigned int __vibmin_u16x2(const unsigned int a, const unsigned int b, bool *const pred_hi, bool *const pred_lo)

执行每个半字的最小值(a, b),同时将pred_hi和pred_lo指针指向的值设置为(a <= b)的每个半字结果。

__host__ __device__ unsigned int __vibmin_u32(const unsigned int a, const unsigned int b, bool *const pred)

计算min(a, b),同时将pred指针指向的值设为(a <= b)。

__host__ __device__ unsigned int __vimax3_s16x2(const unsigned int a, const unsigned int b, const unsigned int c)

对每个半字执行 max(max(a, b), c) 运算

__host__ __device__ unsigned int __vimax3_s16x2_relu(const unsigned int a, const unsigned int b, const unsigned int c)

对每个半字执行 max(max(max(a, b), c), 0)

__host__ __device__ int __vimax3_s32(const int a, const int b, const int c)

计算 max(max(a, b), c)

__host__ __device__ int __vimax3_s32_relu(const int a, const int b, const int c)

计算 max(max(max(a, b), c), 0)

__host__ __device__ unsigned int __vimax3_u16x2(const unsigned int a, const unsigned int b, const unsigned int c)

对每个半字执行 max(max(a, b), c) 运算

__host__ __device__ unsigned int __vimax3_u32(const unsigned int a, const unsigned int b, const unsigned int c)

计算 max(max(a, b), c)

__host__ __device__ unsigned int __vimax_s16x2_relu(const unsigned int a, const unsigned int b)

对每个半字执行 max(max(a, b), 0)

__host__ __device__ int __vimax_s32_relu(const int a, const int b)

计算 max(max(a, b), 0)

__host__ __device__ unsigned int __vimin3_s16x2(const unsigned int a, const unsigned int b, const unsigned int c)

对每个半字执行 min(min(a, b), c) 运算

__host__ __device__ unsigned int __vimin3_s16x2_relu(const unsigned int a, const unsigned int b, const unsigned int c)

对每个半字执行 max(min(min(a, b), c), 0)

__host__ __device__ int __vimin3_s32(const int a, const int b, const int c)

计算 min(min(a, b), c)

__host__ __device__ int __vimin3_s32_relu(const int a, const int b, const int c)

计算 max(min(min(a, b), c), 0)

__host__ __device__ unsigned int __vimin3_u16x2(const unsigned int a, const unsigned int b, const unsigned int c)

对每个半字执行 min(min(a, b), c) 运算

__host__ __device__ unsigned int __vimin3_u32(const unsigned int a, const unsigned int b, const unsigned int c)

计算 min(min(a, b), c)

__host__ __device__ unsigned int __vimin_s16x2_relu(const unsigned int a, const unsigned int b)

对每个半字执行 max(min(a, b), 0)

__host__ __device__ int __vimin_s32_relu(const int a, const int b)

计算 max(min(a, b), 0)

__device__ unsigned int __vmaxs2(unsigned int a, unsigned int b)

执行每半字有符号最大值计算。

__device__ unsigned int __vmaxs4(unsigned int a, unsigned int b)

计算每字节的有符号最大值。

__device__ unsigned int __vmaxu2(unsigned int a, unsigned int b)

执行每半字无符号最大值计算。

__device__ unsigned int __vmaxu4(unsigned int a, unsigned int b)

计算每字节的无符号最大值。

__device__ unsigned int __vmins2(unsigned int a, unsigned int b)

执行每半字有符号最小值计算。

__device__ unsigned int __vmins4(unsigned int a, unsigned int b)

计算每字节的有符号最小值。

__device__ unsigned int __vminu2(unsigned int a, unsigned int b)

执行每半字无符号最小值计算。

__device__ unsigned int __vminu4(unsigned int a, unsigned int b)

计算每字节的无符号最小值。

__device__ unsigned int __vneg2(unsigned int a)

计算每个半字的取反。

__device__ unsigned int __vneg4(unsigned int a)

执行逐字节取反操作。

__device__ unsigned int __vnegss2(unsigned int a)

计算带符号饱和的每半字取反。

__device__ unsigned int __vnegss4(unsigned int a)

执行带符号饱和的逐字节取反操作。

__device__ unsigned int __vsads2(unsigned int a, unsigned int b)

执行有符号半字绝对差值的求和。

__device__ unsigned int __vsads4(unsigned int a, unsigned int b)

计算有符号数的逐字节绝对差之和。

__device__ unsigned int __vsadu2(unsigned int a, unsigned int b)

计算无符号半字绝对差之和。

__device__ unsigned int __vsadu4(unsigned int a, unsigned int b)

计算无符号字节的绝对差值的逐字节总和。

__device__ unsigned int __vseteq2(unsigned int a, unsigned int b)

执行每半字(无)符号比较:如果两部分比较相等则返回1。

__device__ unsigned int __vseteq4(unsigned int a, unsigned int b)

执行逐字节(无)符号比较:如果所有4对比较结果相等,则返回1。

__device__ unsigned int __vsetges2(unsigned int a, unsigned int b)

执行每半字有符号比较:如果两部分比较结果均大于或等于,则返回1。

__device__ unsigned int __vsetges4(unsigned int a, unsigned int b)

执行逐字节有符号比较:如果所有4对比较结果均大于或等于,则返回1。

__device__ unsigned int __vsetgeu2(unsigned int a, unsigned int b)

执行每半字无符号比较:如果两部分比较结果均大于或等于,则返回1。

__device__ unsigned int __vsetgeu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:如果所有4对比较结果均大于或等于,则返回1。

__device__ unsigned int __vsetgts2(unsigned int a, unsigned int b)

执行每半字有符号比较:如果两部分比较结果都大于,则返回1。

__device__ unsigned int __vsetgts4(unsigned int a, unsigned int b)

执行逐字节有符号比较:如果所有4对比较结果都大于,则返回1。

__device__ unsigned int __vsetgtu2(unsigned int a, unsigned int b)

执行每半字无符号比较:如果两部分比较结果都大于,则返回1。

__device__ unsigned int __vsetgtu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:如果所有4对比较结果都大于,则返回1。

__device__ unsigned int __vsetles2(unsigned int a, unsigned int b)

执行每半字无符号比较:如果两部分比较结果均小于或等于,则返回1。

__device__ unsigned int __vsetles4(unsigned int a, unsigned int b)

执行逐字节有符号比较:如果所有4对比较结果均小于或等于,则返回1。

__device__ unsigned int __vsetleu2(unsigned int a, unsigned int b)

执行每半字有符号比较:如果两部分比较结果均小于或等于,则返回1。

__device__ unsigned int __vsetleu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:如果所有4对比较结果均小于或等于,则返回1。

__device__ unsigned int __vsetlts2(unsigned int a, unsigned int b)

执行每半字有符号比较:如果两部分都小于比较值,则返回1。

__device__ unsigned int __vsetlts4(unsigned int a, unsigned int b)

执行逐字节有符号比较:如果所有4对比较结果都小于,则返回1。

__device__ unsigned int __vsetltu2(unsigned int a, unsigned int b)

执行每半字无符号比较:如果两部分比较结果均小于,则返回1。

__device__ unsigned int __vsetltu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:如果所有4对比较结果都小于,则返回1。

__device__ unsigned int __vsetne2(unsigned int a, unsigned int b)

执行每半字(无)符号比较:如果两部分比较不相等,则返回1。

__device__ unsigned int __vsetne4(unsigned int a, unsigned int b)

执行逐字节(无)符号比较:如果所有4对比较结果都不相等,则返回1。

__device__ unsigned int __vsub2(unsigned int a, unsigned int b)

执行每半字(无)符号减法,带环绕:a - b。

__device__ unsigned int __vsub4(unsigned int a, unsigned int b)

执行逐字节减法运算:a - b。

__device__ unsigned int __vsubss2(unsigned int a, unsigned int b)

执行每半字(无)符号减法,带符号饱和:a - b。

__device__ unsigned int __vsubss4(unsigned int a, unsigned int b)

执行带符号饱和的逐字节减法运算:a - b。

__device__ unsigned int __vsubus2(unsigned int a, unsigned int b)

执行带无符号饱和度的半字减法运算:a - b。

__device__ unsigned int __vsubus4(unsigned int a, unsigned int b)

执行带无符号饱和的逐字节减法运算:a - b。

14.1. 函数

__device__ unsigned int __vabs2(unsigned int a)

计算每个半字的绝对值:|a|。

将4字节的参数分成两部分,每部分包含2字节,然后计算每部分的绝对值。部分结果重新组合并以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vabs4(unsigned int a)

计算每个字节的绝对值:|a|。

按字节分割参数。计算每个字节的绝对值。部分结果重新组合并以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vabsdiffs2(unsigned int a, unsigned int b)

计算每个半字的带符号整数绝对差值:|a - b|。

将每个4字节数据分割为2部分,每部分包含2字节。函数计算对应部分的绝对差值。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vabsdiffs4(unsigned int a, unsigned int b)

计算有符号整数的逐字节绝对差值:|a - b|。

将每个4字节分割为4部分,每部分包含1字节。函数计算对应部分的绝对差值。部分结果重新组合并以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vabsdiffu2(unsigned int a, unsigned int b)

计算无符号整数的每半字绝对差值:|a - b|。

将每个参数的4个字节分割为2部分,每部分包含2个字节。函数计算对应部分的绝对差值。部分结果会被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vabsdiffu4(unsigned int a, unsigned int b)

计算无符号整数的逐字节绝对差值:|a - b|。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数计算对应部分的绝对差值。部分结果会被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vabsss2(unsigned int a)

计算每个半字的绝对值,带符号饱和:|a|。

将4字节参数分割为2部分,每部分包含2字节,然后对每个部分计算带符号饱和的绝对值。部分结果重新组合并以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vabsss4(unsigned int a)

计算每个字节的绝对值,带符号饱和处理:|a|。

将4字节的参数分割为4个部分,每个部分包含1字节,然后对每个部分计算带符号饱和的绝对值。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vadd2(unsigned int a, unsigned int b)

执行每半字(无)符号加法,带环绕:a + b。

将每个参数的4字节拆分为2部分,每部分由2字节组成,然后对相应部分执行无符号加法运算。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vadd4(unsigned int a, unsigned int b)

执行逐字节(无)符号加法:a + b。

将‘a’拆分为4个字节,然后对每个字节与‘b’中对应的字节执行无符号加法运算(忽略溢出)。部分结果会被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vaddss2(unsigned int a, unsigned int b)

执行带符号饱和的半字加法运算:a + b。

将每个参数的4字节拆分为2部分,每部分由2字节组成,然后对相应部分执行带符号饱和加法。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vaddss4(unsigned int a, unsigned int b)

执行带符号饱和的逐字节加法运算:a + b。

将每个参数的4字节分割为4部分,每部分1字节,然后对相应部分执行带符号饱和加法。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vaddus2(unsigned int a, unsigned int b)

执行带无符号饱和度的半字加法:a + b。

将每个参数的4字节分成2部分,每部分由2字节组成,然后对相应部分执行无符号饱和加法。

Returns

返回计算后的值。

__device__ unsigned int __vaddus4(unsigned int a, unsigned int b)

执行带无符号饱和的逐字节加法运算:a + b。

将每个参数的4字节分割为4部分,每部分包含1字节,然后对相应部分执行无符号饱和加法。

Returns

返回计算后的值。

__device__ unsigned int __vavgs2(unsigned int a, unsigned int b)

执行每半字有符号舍入平均计算。

将每个参数的4字节分割为2部分,每部分由2字节组成,然后计算对应部分的有符号舍入平均值。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vavgs4(unsigned int a, unsigned int b)

计算每字节的有符号四舍五入平均值。

将每个参数的4个字节分割成4部分,每部分包含1个字节。然后计算对应部分的有符号舍入平均值。部分结果会被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vavgu2(unsigned int a, unsigned int b)

执行每半字无符号舍入平均计算。

将每个参数的4字节分割为2部分,每部分由2字节组成,然后计算对应部分的无符号舍入平均值。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vavgu4(unsigned int a, unsigned int b)

执行逐字节无符号舍入平均值计算。

将每个参数的4个字节分割为4部分,每部分包含1个字节。然后计算对应部分的无符号舍入平均值。部分结果会被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vcmpeq2(unsigned int a, unsigned int b)

执行每半字(无)符号比较:a == b ? 0xffff : 0。

将每个参数的4字节分割为2部分,每部分包含2字节。如果对应部分相等则结果为ffff,否则为0000。例如__vcmpeq2(0x1234aba5, 0x1234aba6)返回0xffff0000。

Returns

返回0xffff计算值。

__device__ unsigned int __vcmpeq4(unsigned int a, unsigned int b)

执行逐字节(无)符号比较:a == b ? 0xff : 0。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,如果它们相等则结果为ff,否则为00。例如__vcmpeq4(0x1234aba5, 0x1234aba6)返回0xffffff00。

Returns

如果a等于b则返回0xff,否则返回0。

__device__ unsigned int __vcmpges2(unsigned int a, unsigned int b)

执行每半字有符号比较:a >= b ? 0xffff : 0。

将每个参数的4字节分割为2部分,每部分包含2字节。对于对应部分,如果'a'部分大于等于'b'部分则结果为ffff,否则为0000。例如__vcmpges2(0x1234aba5, 0x1234aba6)返回0xffff0000。

Returns

如果a >= b则返回0xffff,否则返回0。

__device__ unsigned int __vcmpges4(unsigned int a, unsigned int b)

执行逐字节有符号比较:a >= b ? 0xff : 0。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,如果'a'部分大于等于'b'部分则结果为ff,否则为00。例如__vcmpges4(0x1234aba5, 0x1234aba6)返回0xffffff00。

Returns

如果a >= b则返回0xff,否则返回0。

__device__ unsigned int __vcmpgeu2(unsigned int a, unsigned int b)

执行每半字无符号比较:a >= b ? 0xffff : 0。

将每个参数的4个字节分成2部分,每部分由2个字节组成。对于对应的部分,如果'a'部分 >= 'b'部分则结果为ffff,否则为0000。例如__vcmpgeu2(0x1234aba5, 0x1234aba6)返回0xffff0000。

Returns

如果a >= b则返回0xffff,否则返回0。

__device__ unsigned int __vcmpgeu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:a >= b ? 0xff : 0。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,如果'a'部分大于等于'b'部分,则结果为ff,否则为00。例如__vcmpgeu4(0x1234aba5, 0x1234aba6)返回0xffffff00。

Returns

如果a >= b则返回0xff,否则返回0。

__device__ unsigned int __vcmpgts2(unsigned int a, unsigned int b)

执行每半字有符号比较:a > b ? 0xffff : 0。

将每个参数的4个字节分成2部分,每部分由2个字节组成。对于对应的部分,如果'a'部分大于'b'部分,则结果为ffff,否则为0000。例如__vcmpgts2(0x1234aba5, 0x1234aba6)返回0x00000000。

Returns

如果a大于b则返回0xffff,否则返回0。

__device__ unsigned int __vcmpgts4(unsigned int a, unsigned int b)

执行逐字节有符号比较:a > b ? 0xff : 0。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,如果'a'部分大于'b'部分则结果为ff,否则为00。例如__vcmpgts4(0x1234aba5, 0x1234aba6)返回0x00000000。

Returns

如果a大于b则返回0xff,否则返回0。

__device__ unsigned int __vcmpgtu2(unsigned int a, unsigned int b)

执行每半字无符号比较:a > b ? 0xffff : 0。

将每个参数的4字节分割为2部分,每部分包含2字节。对于对应部分,如果'a'部分大于'b'部分则结果为ffff,否则为0000。例如__vcmpgtu2(0x1234aba5, 0x1234aba6)返回0x00000000。

Returns

如果a大于b则返回0xffff,否则返回0。

__device__ unsigned int __vcmpgtu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:a > b ? 0xff : 0。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,如果'a'部分大于'b'部分,则结果为ff,否则为00。例如__vcmpgtu4(0x1234aba5, 0x1234aba6)返回0x00000000。

Returns

如果a大于b则返回0xff,否则返回0。

__device__ unsigned int __vcmples2(unsigned int a, unsigned int b)

执行每半字有符号比较:a <= b ? 0xffff : 0。

将每个参数的4字节分割为2部分,每部分包含2字节。对于对应部分,如果'a'部分小于等于'b'部分则结果为ffff,否则为0000。例如__vcmples2(0x1234aba5, 0x1234aba6)返回0xffffffff。

Returns

如果a <= b则返回0xffff,否则返回0。

__device__ unsigned int __vcmples4(unsigned int a, unsigned int b)

执行逐字节有符号比较:a <= b ? 0xff : 0。

将每个参数的4字节分割为4部分,每部分包含1字节。对于对应的部分,如果'a'部分 ≤ 'b'部分则结果为ff,否则为00。例如__vcmples4(0x1234aba5, 0x1234aba6)返回0xffffffff。

Returns

如果a <= b则返回0xff,否则返回0。

__device__ unsigned int __vcmpleu2(unsigned int a, unsigned int b)

执行每半字无符号比较:a <= b ? 0xffff : 0。

将每个参数的4字节分割为2部分,每部分包含2字节。对于对应部分,如果'a'部分小于等于'b'部分则结果为ffff,否则为0000。例如__vcmpleu2(0x1234aba5, 0x1234aba6)返回0xffffffff。

Returns

如果a <= b则返回0xffff,否则返回0。

__device__ unsigned int __vcmpleu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:a <= b ? 0xff : 0。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,如果'a'部分小于等于'b'部分,则结果为ff,否则为00。例如__vcmpleu4(0x1234aba5, 0x1234aba6)返回0xffffffff。

Returns

如果a <= b则返回0xff,否则返回0。

__device__ unsigned int __vcmplts2(unsigned int a, unsigned int b)

执行半字有符号比较:若 a < b 则返回 0xffff,否则返回 0。

将每个参数的4字节分割为2部分,每部分包含2字节。对于对应部分,如果'a'部分小于'b'部分则结果为ffff,否则为0000。例如__vcmplts2(0x1234aba5, 0x1234aba6)返回0x0000ffff。

Returns

如果a小于b则返回0xffff,否则返回0。

__device__ unsigned int __vcmplts4(unsigned int a, unsigned int b)

执行逐字节有符号比较:a < b ? 0xff : 0。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,如果'a'部分小于'b'部分则结果为ff,否则为00。例如__vcmplts4(0x1234aba5, 0x1234aba6)返回0x000000ff。

Returns

如果a小于b则返回0xff,否则返回0。

__device__ unsigned int __vcmpltu2(unsigned int a, unsigned int b)

执行每半字无符号比较:a < b ? 0xffff : 0。

将每个参数的4字节分割为2部分,每部分包含2字节。对于对应部分,如果'a'部分小于'b'部分则结果为ffff,否则为0000。例如__vcmpltu2(0x1234aba5, 0x1234aba6)返回0x0000ffff。

Returns

如果a小于b则返回0xffff,否则返回0。

__device__ unsigned int __vcmpltu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:如果a小于b则返回0xff,否则返回0。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,如果'a'部分小于'b'部分则结果为ff,否则为00。例如__vcmpltu4(0x1234aba5, 0x1234aba6)返回0x000000ff。

Returns

如果a小于b则返回0xff,否则返回0。

__device__ unsigned int __vcmpne2(unsigned int a, unsigned int b)

执行每半字(无)符号比较:a != b ? 0xffff : 0。

将每个参数的4字节分割为2部分,每部分包含2字节。对于对应部分,如果'a'部分不等于'b'部分则结果为ffff,否则为0000。例如__vcmplts2(0x1234aba5, 0x1234aba6)返回0x0000ffff。

Returns

如果a不等于b则返回0xffff,否则返回0。

__device__ unsigned int __vcmpne4(unsigned int a, unsigned int b)

执行逐字节(无)符号比较:a != b ? 0xff : 0。

将每个参数的4字节分割为4部分,每部分1字节。对于对应部分,如果'a'部分不等于'b'部分则结果为ff,否则为00。例如__vcmplts4(0x1234aba5, 0x1234aba6)返回0x000000ff。

Returns

如果a不等于b则返回0xff,否则返回0。

__device__ unsigned int __vhaddu2(unsigned int a, unsigned int b)

执行每半字无符号平均计算。

将每个参数的4字节分割为2部分,每部分由2字节组成,然后计算对应部分的无符号平均值。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vhaddu4(unsigned int a, unsigned int b)

计算每字节的无符号平均值。

将每个参数的4字节分割为4部分,每部分包含1字节。然后计算对应部分的无符号平均值。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__host__ __device__ unsigned int __viaddmax_s16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的 max(a + b, c) 运算

将每个参数的4字节分割为2部分,每部分由2字节组成。这2字节部分被解释为有符号短整型。对于对应的部分,函数执行加法并比较:max(a_part + b_part, c_part)。部分结果重新组合后作为无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ unsigned int __viaddmax_s16x2_relu(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的最大值计算:max(max(a + b, c), 0)

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为有符号短整型。对于对应的部分,函数执行加法运算,然后进行带relu的最大值运算:max(max(a_part + b_part), c_part), 0)。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ int __viaddmax_s32(const int a, const int b, const int c)

计算 max(a + b, c)

计算有符号整数 ab 的和,并与 c 取最大值。

Returns

返回计算后的值。

__host__ __device__ int __viaddmax_s32_relu(const int a, const int b, const int c)

计算 max(max(a + b, c), 0)

计算有符号整数ab的和并与c取最大值。如果结果小于0则返回0

Returns

返回计算后的值。

__host__ __device__ unsigned int __viaddmax_u16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的 max(a + b, c) 运算

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为无符号短整型。函数对相应部分执行加法并比较:max(a部分 + b部分, c部分)。部分结果会被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ unsigned int __viaddmax_u32(const unsigned int a, const unsigned int b, const unsigned int c)

计算 max(a + b, c)

计算无符号整数 ab 的和,并与 c 取最大值。

Returns

返回计算后的值。

__host__ __device__ unsigned int __viaddmin_s16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的 min(a + b, c) 运算

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为有符号短整型。函数对相应部分执行加法比较操作:min(a_part + b_part, c_part)。部分结果会被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ unsigned int __viaddmin_s16x2_relu(const unsigned int a, const unsigned int b, const unsigned int c)

执行每半字最大值计算:max(min(a + b, c), 0)

将每个参数的4字节分割为2部分,每部分由2字节组成。这2字节部分被解释为有符号短整型。对于对应的部分,函数执行加法运算,然后进行带ReLU的最小值运算:max(min(a_part + b_part, c_part), 0)。部分结果被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ int __viaddmin_s32(const int a, const int b, const int c)

计算 min(a + b, c)

计算有符号整数 ab 的和,并与 c 取最小值。

Returns

返回计算后的值。

__host__ __device__ int __viaddmin_s32_relu(const int a, const int b, const int c)

计算 max(min(a + b, c), 0)

计算有符号整数ab的和并与c取最小值。如果结果小于0则返回0

Returns

返回计算后的值。

__host__ __device__ unsigned int __viaddmin_u16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的最小值计算 min(a + b, c)

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为无符号短整型。函数对相应部分执行加法并比较:min(a_part + b_part, c_part)。部分结果会被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ unsigned int __viaddmin_u32(const unsigned int a, const unsigned int b, const unsigned int c)

计算 min(a + b, c)

计算无符号整数 ab 的和,并与 c 取最小值。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vibmax_s16x2(const unsigned int a, const unsigned int b, bool *const pred_hi, bool *const pred_lo)

执行每个半字的最大值(a, b)操作,同时将pred_hi和pred_lo指针指向的值设置为每个半字的(a >= b)比较结果。

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为有符号短整型。函数对相应部分执行最大值运算(= max(a_part, b_part))。部分结果重新组合后作为无符号整型返回。将pred_hi指向的值设置为(a_high_part >= b_high_part)。将pred_lo指向的值设置为(a_low_part >= b_low_part)。

Returns

返回计算后的值。

__host__ __device__ int __vibmax_s32(const int a, const int b, bool *const pred)

计算max(a, b),同时将pred指针指向的值设为(a >= b)。

计算两个有符号整数ab的最大值。同时将pred指针指向的值设置为(a >= b)的结果。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vibmax_u16x2(const unsigned int a, const unsigned int b, bool *const pred_hi, bool *const pred_lo)

执行每个半字的最大值比较(a, b),同时将pred_hi和pred_lo指针指向的值设置为每个半字的(a >= b)比较结果。

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为无符号短整型。函数对相应部分执行最大值运算(= max(a_part, b_part))。部分结果重新组合后作为无符号整型返回。将pred_hi指向的值设置为(a_high_part >= b_high_part)。将pred_lo指向的值设置为(a_low_part >= b_low_part)。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vibmax_u32(const unsigned int a, const unsigned int b, bool *const pred)

计算max(a, b),同时将pred指针指向的值设为(a >= b)。

计算两个无符号整数ab的最大值。同时将pred指向的值设置为(a >= b)的结果。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vibmin_s16x2(const unsigned int a, const unsigned int b, bool *const pred_hi, bool *const pred_lo)

执行每个半字的最小值(a, b),同时将pred_hi和pred_lo指针指向的值设置为每个半字的(a <= b)比较结果。

将每个参数的4字节分割为2部分,每部分由2字节组成。这2字节部分被解释为有符号短整型。函数对相应部分执行最大值运算(= max(a_part, b_part))。部分结果重新组合后作为无符号整型返回。将pred_hi指向的值设为(a_high_part <= b_high_part)的结果。将pred_lo指向的值设为(a_low_part <= b_low_part)的结果。

Returns

返回计算后的值。

__host__ __device__ int __vibmin_s32(const int a, const int b, bool *const pred)

计算min(a, b),同时将pred指针指向的值设为(a <= b)。

计算两个有符号整数ab中的最小值。同时将pred指向的值设置为(a <= b)的结果。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vibmin_u16x2(const unsigned int a, const unsigned int b, bool *const pred_hi, bool *const pred_lo)

执行每个半字的最小值(a, b),同时将pred_hi和pred_lo指针指向的值设置为(a <= b)的每个半字比较结果。

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为无符号短整型。函数对相应部分执行最大值运算(= max(a_part, b_part))。部分结果重新组合后作为无符号整型返回。将pred_hi指向的值设置为(a_high_part <= b_high_part)。将pred_lo指向的值设置为(a_low_part <= b_low_part)。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vibmin_u32(const unsigned int a, const unsigned int b, bool *const pred)

计算min(a, b),同时将pred指向的值设置为(a <= b)。

计算两个无符号整数ab的最小值。同时将pred指向的值设置为(a <= b)的结果。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimax3_s16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的max(max(a, b), c)运算

将每个参数的4字节拆分为2部分,每部分由2字节组成。这2字节部分被解释为有符号短整型。函数对相应部分执行三路最大值计算(= max(max(a_part, b_part), c_part))。部分结果重新组合后作为无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimax3_s16x2_relu(const unsigned int a, const unsigned int b, const unsigned int c)

执行每半字最大值计算:max(max(max(a, b), c), 0)

将每个参数的4字节分割为2部分,每部分由2字节组成。这2字节部分被解释为有符号短整型。对于对应的部分,函数执行带relu的三向最大值运算(= max(a_part, b_part, c_part, 0))。部分结果重新组合后作为无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ int __vimax3_s32(const int a, const int b, const int c)

计算 max(max(a, b), c)

计算有符号整数 abc 的三元最大值。

Returns

返回计算后的值。

__host__ __device__ int __vimax3_s32_relu(const int a, const int b, const int c)

计算 max(max(max(a, b), c), 0)

计算三个有符号整数的最大值,如果结果小于0则返回0

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimax3_u16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的最大值计算:max(max(a, b), c)

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为无符号短整型。对于对应的部分,函数执行3路最大值计算(= max(max(a_part, b_part), c_part))。部分结果重新组合后作为无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimax3_u32(const unsigned int a, const unsigned int b, const unsigned int c)

计算 max(max(a, b), c)

计算无符号整数 abc 的三元最大值。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimax_s16x2_relu(const unsigned int a, const unsigned int b)

执行每个半字的max(max(a, b), 0)运算

将每个参数的4字节分割为2部分,每部分由2字节组成。这2字节部分被解释为有符号短整型。函数对相应部分执行带ReLU的最大值运算(= max(a_part, b_part, 0))。部分结果重新组合后作为无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ int __vimax_s32_relu(const int a, const int b)

计算 max(max(a, b), 0)

计算两个有符号整数ab的最大值,如果结果小于0则返回0

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimin3_s16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的最小值计算:min(min(a, b), c)

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为有符号短整型。函数对对应部分执行三路最小值运算(= min(min(a_part, b_part), c_part))。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimin3_s16x2_relu(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的最大(最小(最小(a, b), c), 0)运算

将每个参数的4字节分割为2部分,每部分由2字节组成。这2字节部分被解释为有符号短整型。对于对应的部分,函数执行带ReLU的三向最小值运算(= max(min(a_part, b_part, c_part), 0))。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ int __vimin3_s32(const int a, const int b, const int c)

计算 min(min(a, b), c)

计算有符号整数 abc 的三者最小值。

Returns

返回计算后的值。

__host__ __device__ int __vimin3_s32_relu(const int a, const int b, const int c)

计算 max(min(min(a, b), c), 0)

计算三个有符号整数的最小值,如果结果小于0则返回0

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimin3_u16x2(const unsigned int a, const unsigned int b, const unsigned int c)

执行每个半字的最小值计算 min(min(a, b), c)

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为无符号短整型。函数对对应部分执行三路最小值运算(= min(min(a_part, b_part), c_part))。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimin3_u32(const unsigned int a, const unsigned int b, const unsigned int c)

计算 min(min(a, b), c)

计算无符号整数 abc 的三者最小值。

Returns

返回计算后的值。

__host__ __device__ unsigned int __vimin_s16x2_relu(const unsigned int a, const unsigned int b)

对每个半字执行 max(min(a, b), 0) 运算

将每个参数的4字节分割为2部分,每部分包含2字节。这2字节部分被解释为有符号短整型。函数对对应部分执行带ReLU的最小值运算(即 max(min(a_part, b_part), 0))。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__host__ __device__ int __vimin_s32_relu(const int a, const int b)

计算 max(min(a, b), 0)

计算两个有符号整数ab中的最小值,如果结果小于0则返回0

Returns

返回计算后的值。

__device__ unsigned int __vmaxs2(unsigned int a, unsigned int b)

执行每半字有符号最大值计算。

将每个参数的4字节分割为2部分,每部分包含2字节。函数计算对应部分的有符号最大值。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vmaxs4(unsigned int a, unsigned int b)

计算每字节的有符号最大值。

将每个参数的4字节分割为4部分,每部分1字节。函数计算对应部分的有符号最大值。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vmaxu2(unsigned int a, unsigned int b)

执行每半字无符号最大值计算。

将每个参数的4字节分割为2部分,每部分包含2字节。函数计算对应部分的无符号最大值。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vmaxu4(unsigned int a, unsigned int b)

计算每字节的无符号最大值。

将每个参数的4字节分割为4部分,每部分包含1字节。函数计算对应部分的无符号最大值。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vmins2(unsigned int a, unsigned int b)

执行每半字有符号最小值计算。

将每个参数的4字节分割为2部分,每部分由2字节组成。函数计算对应部分的有符号最小值。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vmins4(unsigned int a, unsigned int b)

计算每字节的有符号最小值。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数计算对应部分的有符号最小值。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vminu2(unsigned int a, unsigned int b)

执行每半字无符号最小值计算。

将每个参数的4字节分割为2部分,每部分包含2字节。函数计算对应部分的无符号最小值。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vminu4(unsigned int a, unsigned int b)

计算每字节的无符号最小值。

将每个参数的4字节分割为4部分,每部分包含1字节。函数计算对应部分的无符号最小值。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vneg2(unsigned int a)

计算每个半字的取反。

将4字节的参数分成2部分,每部分包含2字节。函数对每个部分计算取反。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vneg4(unsigned int a)

执行逐字节取反操作。

将4字节的参数分割为4部分,每部分1字节。对每个部分计算其否定值。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vnegss2(unsigned int a)

计算带符号饱和的每半字取反。

将4字节的参数分成2部分,每部分包含2字节。对每个部分计算取反操作。部分结果重新组合后作为无符号整数返回。

Returns

返回计算后的值。

__device__ unsigned int __vnegss4(unsigned int a)

执行带符号饱和的逐字节取反操作。

将4字节的参数分割为4部分,每部分1字节。对每个部分计算取反操作。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vsads2(unsigned int a, unsigned int b)

执行有符号半字绝对差值的求和运算。

将每个参数的4字节分割为2部分,每部分包含2字节。函数计算对应部分的绝对差值并求和。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vsads4(unsigned int a, unsigned int b)

计算有符号数每字节绝对差之和。

将每个参数的4字节分割为4部分,每部分包含1字节。函数计算对应部分的绝对差值并求和。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vsadu2(unsigned int a, unsigned int b)

计算无符号半字绝对差之和。

将每个参数的4个字节分成2部分,每部分由2个字节组成。函数计算对应部分的绝对差值并返回这些差值的总和。

Returns

返回计算后的值。

__device__ unsigned int __vsadu4(unsigned int a, unsigned int b)

计算无符号字节的绝对差值的逐字节总和。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数计算对应部分的绝对差值,并返回这些差值的总和。

Returns

返回计算后的值。

__device__ unsigned int __vseteq2(unsigned int a, unsigned int b)

执行每半字(无)符号比较:如果两部分比较相等则返回1。

将每个参数的4个字节分成2部分,每部分由2个字节组成。对于对应的部分,函数执行比较‘a’部分 == ‘b’部分。如果两个等式都满足,函数返回1。

Returns

如果a等于b则返回1,否则返回0。

__device__ unsigned int __vseteq4(unsigned int a, unsigned int b)

执行逐字节(无)符号比较:如果所有4对比较结果相等,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,函数执行比较'a'部分 == 'b'部分。如果两个等式都满足,函数返回1。

Returns

如果a等于b则返回1,否则返回0。

__device__ unsigned int __vsetges2(unsigned int a, unsigned int b)

执行每半字有符号比较:如果两部分比较结果均大于或等于则返回1。

将每个参数的4个字节分成2部分,每部分由2个字节组成。对于对应的部分,函数执行比较'a'部分 >= 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a大于等于b则返回1,否则返回0。

__device__ unsigned int __vsetges4(unsigned int a, unsigned int b)

执行逐字节有符号比较:如果所有4对比较结果均大于或等于,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数对相应部分执行比较,判断'a'部分是否大于等于'b'部分。如果两个不等式都成立,则函数返回1。

Returns

如果a >= b则返回1,否则返回0。

__device__ unsigned int __vsetgeu2(unsigned int a, unsigned int b)

执行每半字无符号比较:如果两部分比较结果均大于或等于,则返回1。

将每个参数的4个字节分成2部分,每部分包含2个字节。对于对应的部分,函数执行比较'a'部分 >= 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a >= b则返回1,否则返回0。

__device__ unsigned int __vsetgeu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:如果所有4对比较结果均大于或等于,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数对相应部分执行比较'a'部分 >= 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a >= b则返回1,否则返回0。

__device__ unsigned int __vsetgts2(unsigned int a, unsigned int b)

执行每半字有符号比较:如果两部分比较结果均大于,则返回1。

将每个参数的4个字节分成2部分,每部分由2个字节组成。对于对应的部分,函数执行比较'a'部分 > 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a大于b则返回1,否则返回0。

__device__ unsigned int __vsetgts4(unsigned int a, unsigned int b)

执行逐字节有符号比较:如果所有4对比较结果都大于,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数对相应部分执行比较 'a'部分 > 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a大于b则返回1,否则返回0。

__device__ unsigned int __vsetgtu2(unsigned int a, unsigned int b)

执行每半字无符号比较:如果两部分比较结果都大于,则返回1。

将每个参数的4个字节分成2部分,每部分包含2个字节。对于对应的部分,函数执行比较'a'部分是否大于'b'部分。如果两个不等式都成立,函数返回1。

Returns

如果a大于b则返回1,否则返回0。

__device__ unsigned int __vsetgtu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:如果所有4对比较结果都大于,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数对对应部分执行比较 'a' 部分 > 'b' 部分。如果两个不等式都满足,函数返回1。

Returns

如果a大于b则返回1,否则返回0。

__device__ unsigned int __vsetles2(unsigned int a, unsigned int b)

执行每半字无符号比较:如果两部分比较结果均小于或等于,则返回1。

将每个参数的4个字节分成2部分,每部分由2个字节组成。对于对应的部分,函数执行比较'a'部分 <= 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a <= b则返回1,否则返回0。

__device__ unsigned int __vsetles4(unsigned int a, unsigned int b)

执行逐字节有符号比较:如果所有4对比较结果均小于或等于,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数对相应部分执行比较'a'部分 <= 'b'部分。如果两个不等式都成立,函数返回1。

Returns

如果a <= b则返回1,否则返回0。

__device__ unsigned int __vsetleu2(unsigned int a, unsigned int b)

执行每半字有符号比较:如果两部分比较结果均小于或等于,则返回1。

将每个参数的4个字节分成2部分,每部分包含2个字节。对于对应的部分,函数执行比较'a'部分 <= 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a <= b则返回1,否则返回0。

__device__ unsigned int __vsetleu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:如果所有4对比较结果均小于或等于,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数对相应部分执行比较 'a'部分 <= 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a <= b则返回1,否则返回0。

__device__ unsigned int __vsetlts2(unsigned int a, unsigned int b)

执行每半字有符号比较:如果两部分都小于比较值,则返回1。

将每个参数的4个字节分成2部分,每部分由2个字节组成。对于对应的部分,函数执行比较'a'部分 <= 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a小于b则返回1,否则返回0。

__device__ unsigned int __vsetlts4(unsigned int a, unsigned int b)

执行逐字节有符号比较:如果所有4对比较结果都小于,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。对于对应的部分,函数执行比较'a'部分 <= 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a小于b则返回1,否则返回0。

__device__ unsigned int __vsetltu2(unsigned int a, unsigned int b)

执行每半字无符号比较:如果两部分比较结果均小于,则返回1。

将每个参数的4个字节分成2部分,每部分由2个字节组成。对于对应的部分,函数执行比较'a'部分 <= 'b'部分。如果两个不等式都满足,函数返回1。

Returns

如果a小于b则返回1,否则返回0。

__device__ unsigned int __vsetltu4(unsigned int a, unsigned int b)

执行逐字节无符号比较:如果所有4对比较结果都小于,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数对相应部分执行比较'a'部分 <= 'b'部分。如果两个不等式都成立,函数返回1。

Returns

如果a小于b则返回1,否则返回0。

__device__ unsigned int __vsetne2(unsigned int a, unsigned int b)

执行每半字(无)符号比较:如果两部分比较结果不相等,则返回1。

将每个参数的4个字节分成2部分,每部分由2个字节组成。对于对应的部分,函数执行比较'a'部分 != 'b'部分。如果两个条件都满足,函数返回1。

Returns

如果a不等于b则返回1,否则返回0。

__device__ unsigned int __vsetne4(unsigned int a, unsigned int b)

执行逐字节(无)符号比较:如果所有4对比较结果都不相等,则返回1。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数对相应部分执行比较'a'部分 != 'b'部分。如果两个条件都满足,函数返回1。

Returns

如果a不等于b则返回1,否则返回0。

__device__ unsigned int __vsub2(unsigned int a, unsigned int b)

执行每半字(无)符号减法,带环绕:a - b。

将每个参数的4个字节分割为2部分,每部分包含2个字节。函数对相应部分执行减法运算。部分结果会被重新组合并以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vsub4(unsigned int a, unsigned int b)

执行逐字节减法运算:a - b。

将每个参数的4字节分割为4部分,每部分包含1字节。函数对相应部分执行减法运算。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vsubss2(unsigned int a, unsigned int b)

执行每半字(无)符号减法,带符号饱和:a - b。

将每个参数的4字节分割为2部分,每部分包含2字节。函数对相应部分执行带符号饱和减法运算。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vsubss4(unsigned int a, unsigned int b)

执行带符号饱和的逐字节减法运算:a - b。

将每个参数的4字节拆分为4部分,每部分包含1字节。函数对相应部分执行带符号饱和减法运算。部分结果重新组合后以无符号整数形式返回。

Returns

返回计算后的值。

__device__ unsigned int __vsubus2(unsigned int a, unsigned int b)

执行带无符号饱和度的半字减法运算:a - b。

将每个参数的4字节分割为2部分,每部分包含2字节。函数对相应部分执行无符号饱和减法运算。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。

__device__ unsigned int __vsubus4(unsigned int a, unsigned int b)

执行逐字节无符号饱和减法运算:a - b。

将每个参数的4个字节分割为4部分,每部分包含1个字节。函数对相应部分执行无符号饱和减法运算。部分结果重新组合后以无符号整型返回。

Returns

返回计算后的值。