forked from OSchip/llvm-project
Fix return type of _mm_extract_epi8 etc.
PR17300. llvm-svn: 191120
This commit is contained in:
parent
9cd26af8b6
commit
9b04f41899
|
@ -230,9 +230,10 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
||||||
* as a zero extended value, so it is unsigned.
|
* as a zero extended value, so it is unsigned.
|
||||||
*/
|
*/
|
||||||
#define _mm_extract_epi8(X, N) (__extension__ ({ __v16qi __a = (__v16qi)(X); \
|
#define _mm_extract_epi8(X, N) (__extension__ ({ __v16qi __a = (__v16qi)(X); \
|
||||||
(unsigned char)__a[(N)];}))
|
(int)(unsigned char) \
|
||||||
|
__a[(N)];}))
|
||||||
#define _mm_extract_epi32(X, N) (__extension__ ({ __v4si __a = (__v4si)(X); \
|
#define _mm_extract_epi32(X, N) (__extension__ ({ __v4si __a = (__v4si)(X); \
|
||||||
(unsigned)__a[(N)];}))
|
__a[(N)];}))
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
#define _mm_extract_epi64(X, N) (__extension__ ({ __v2di __a = (__v2di)(X); \
|
#define _mm_extract_epi64(X, N) (__extension__ ({ __v2di __a = (__v2di)(X); \
|
||||||
__a[(N)];}))
|
__a[(N)];}))
|
||||||
|
|
|
@ -55,3 +55,10 @@ unsigned long test_epi16(__m128i x) { return _mm_extract_epi16(x, 3); }
|
||||||
// CHECK: @test_epi16
|
// CHECK: @test_epi16
|
||||||
// CHECK: extractelement <8 x i16> {{.*}}, i32 3
|
// CHECK: extractelement <8 x i16> {{.*}}, i32 3
|
||||||
// CHECK: zext i16 {{.*}} to i32
|
// CHECK: zext i16 {{.*}} to i32
|
||||||
|
|
||||||
|
void extractinttypes() {
|
||||||
|
extern int check_extract_result_int;
|
||||||
|
extern __typeof(_mm_extract_epi8(_mm_setzero_si128(), 3)) check_result_int;
|
||||||
|
extern __typeof(_mm_extract_epi16(_mm_setzero_si128(), 3)) check_result_int;
|
||||||
|
extern __typeof(_mm_extract_epi32(_mm_setzero_si128(), 3)) check_result_int;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue