forked from OSchip/llvm-project
Add AVX2 intrinsics for and, andn, or, and xor.
llvm-svn: 146862
This commit is contained in:
parent
2a8bc15230
commit
a557e1c122
|
@ -123,6 +123,24 @@ _mm256_adds_epu16(__m256i a, __m256i b)
|
|||
__m256i __b = (b); \
|
||||
(__m256i)__builtin_ia32_palignr256((__v32qi)__a, (__v32qi)__b, (n)); })
|
||||
|
||||
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
|
||||
_mm256_and_si256(__m256i a, __m256i b)
|
||||
{
|
||||
return a & b;
|
||||
}
|
||||
|
||||
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
|
||||
_mm256_andnot_si256(__m256i a, __m256i b)
|
||||
{
|
||||
return ~a & b;
|
||||
}
|
||||
|
||||
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
|
||||
_mm256_or_si256(__m256i a, __m256i b)
|
||||
{
|
||||
return a | b;
|
||||
}
|
||||
|
||||
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
|
||||
_mm256_sub_epi8(__m256i a, __m256i b)
|
||||
{
|
||||
|
@ -171,3 +189,8 @@ _mm256_subs_epu16(__m256i a, __m256i b)
|
|||
return (__m256i)__builtin_ia32_psubusw256((__v16hi)a, (__v16hi)b);
|
||||
}
|
||||
|
||||
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
|
||||
_mm256_xor_si256(__m256i a, __m256i b)
|
||||
{
|
||||
return a ^ b;
|
||||
}
|
||||
|
|
|
@ -134,3 +134,24 @@ __m256 test_mm256_subs_epu16(__m256 a, __m256 b) {
|
|||
// CHECK: @llvm.x86.avx2.psubus.w
|
||||
return _mm256_subs_epu16(a, b);
|
||||
}
|
||||
|
||||
__m256 test_mm256_and_si256(__m256 a, __m256 b) {
|
||||
// CHECK: and <4 x i64>
|
||||
return _mm256_and_si256(a, b);
|
||||
}
|
||||
|
||||
__m256 test_mm256_andnot_si256(__m256 a, __m256 b) {
|
||||
// CHECK: xor <4 x i64>
|
||||
// CHECK: and <4 x i64>
|
||||
return _mm256_andnot_si256(a, b);
|
||||
}
|
||||
|
||||
__m256 test_mm256_or_si256(__m256 a, __m256 b) {
|
||||
// CHECK: or <4 x i64>
|
||||
return _mm256_or_si256(a, b);
|
||||
}
|
||||
|
||||
__m256 test_mm256_xor_si256(__m256 a, __m256 b) {
|
||||
// CHECK: xor <4 x i64>
|
||||
return _mm256_xor_si256(a, b);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue