forked from OSchip/llvm-project
Fix the name and the type of the argument for intrinisc
_mm256_broadcastsi128_si256 to align with the Intel documentation. This fixes bug PR 16581 and rdar:14747994. llvm-svn: 188609
This commit is contained in:
parent
b4c2fa244a
commit
2c2dbf4542
|
@ -559,7 +559,7 @@ BUILTIN(__builtin_ia32_movntdqa256, "V4LLiV4LLi*", "")
|
|||
BUILTIN(__builtin_ia32_vbroadcastss_ps, "V4fV4f", "")
|
||||
BUILTIN(__builtin_ia32_vbroadcastss_ps256, "V8fV4f", "")
|
||||
BUILTIN(__builtin_ia32_vbroadcastsd_pd256, "V4dV2d", "")
|
||||
BUILTIN(__builtin_ia32_vbroadcastsi256, "V4LLiV2LLiC*", "")
|
||||
BUILTIN(__builtin_ia32_vbroadcastsi256, "V4LLiV2LLi", "")
|
||||
BUILTIN(__builtin_ia32_pblendd128, "V4iV4iV4iIi", "")
|
||||
BUILTIN(__builtin_ia32_pblendd256, "V8iV8iV8iIi", "")
|
||||
BUILTIN(__builtin_ia32_pbroadcastb256, "V32cV16c", "")
|
||||
|
|
|
@ -3129,6 +3129,16 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
|
|||
Builder.CreateStore(Builder.CreateExtractValue(Call, 0), Ops[0]);
|
||||
return Builder.CreateExtractValue(Call, 1);
|
||||
}
|
||||
// AVX2 broadcast
|
||||
case X86::BI__builtin_ia32_vbroadcastsi256: {
|
||||
llvm::Type *VecTy = llvm::VectorType::get(Int64Ty, 2);
|
||||
llvm::Type *PtrTy = Int8PtrTy;
|
||||
Value *One = llvm::ConstantInt::get(Int32Ty, 1);
|
||||
Value *Tmp = Builder.CreateAlloca(VecTy, One);
|
||||
Builder.CreateStore(Ops[0], Tmp);
|
||||
return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_avx2_vbroadcasti128),
|
||||
Builder.CreateBitCast(Tmp, PtrTy));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -753,9 +753,9 @@ _mm256_broadcastsd_pd(__m128d __X)
|
|||
}
|
||||
|
||||
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
|
||||
_mm_broadcastsi128_si256(__m128i const *__a)
|
||||
_mm256_broadcastsi128_si256(__m128i __X)
|
||||
{
|
||||
return (__m256i)__builtin_ia32_vbroadcastsi256(__a);
|
||||
return (__m256i)__builtin_ia32_vbroadcastsi256(__X);
|
||||
}
|
||||
|
||||
#define _mm_blend_epi32(V1, V2, M) __extension__ ({ \
|
||||
|
|
|
@ -606,9 +606,9 @@ __m256d test_mm256_broadcastsd_pd(__m128d a) {
|
|||
return _mm256_broadcastsd_pd(a);
|
||||
}
|
||||
|
||||
__m256i test_mm_broadcastsi128_si256(__m128i *a) {
|
||||
__m256i test_mm256_broadcastsi128_si256(__m128i a) {
|
||||
// CHECK: @llvm.x86.avx2.vbroadcasti128
|
||||
return _mm_broadcastsi128_si256(a);
|
||||
return _mm256_broadcastsi128_si256(a);
|
||||
}
|
||||
|
||||
__m128i test_mm_blend_epi32(__m128i a, __m128i b) {
|
||||
|
|
Loading…
Reference in New Issue