mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-05-17 19:36:48 +00:00

Both the (V)CVTDQ2PD(Y) (i32 to f64) and (V)CVTPS2PD(Y) (f32 to f64) conversion instructions are lossless and can be safely represented as generic __builtin_convertvector calls instead of x86 intrinsics without affecting final codegen. This patch removes the clang builtins and their use in the sse2/avx headers - a future patch will deal with removing the llvm intrinsics, but that will require a bit more work. Differential Revision: http://reviews.llvm.org/D20528 llvm-svn: 270499
14 lines
499 B
C
14 lines
499 B
C
// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o -
|
|
#define __MM_MALLOC_H
|
|
|
|
#include <x86intrin.h>
|
|
|
|
// Since we do code generation on a function level this needs to error out since
|
|
// the subtarget feature won't be available.
|
|
__m128 wombat(__m128i a) {
|
|
if (__builtin_cpu_supports("avx"))
|
|
return __builtin_ia32_vpermilvarps((__v4sf) {0.0f, 1.0f, 2.0f, 3.0f}, (__v4si)a); // expected-error {{'__builtin_ia32_vpermilvarps' needs target feature avx}}
|
|
else
|
|
return (__m128){0, 0};
|
|
}
|