mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 03:46:53 -05:00
i386.c (ix86_builtins): Add IX86_BUILTIN_VEC_EXT_V16QI.
gcc/ 2007-06-21 H.J. Lu <hongjiu.lu@intel.com> * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_VEC_EXT_V16QI. (ix86_init_mmx_sse_builtins): Add __builtin_ia32_vec_ext_v16qi. (ix86_expand_builtin): Handle IX86_BUILTIN_VEC_EXT_V16QI. gcc/testsuite/ 2007-06-21 H.J. Lu <hongjiu.lu@intel.com> * gcc.target/i386/sse2-vec-5.c: Restored. From-SVN: r125923
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2007-06-21 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_VEC_EXT_V16QI.
|
||||
(ix86_init_mmx_sse_builtins): Add __builtin_ia32_vec_ext_v16qi.
|
||||
(ix86_expand_builtin): Handle IX86_BUILTIN_VEC_EXT_V16QI.
|
||||
|
||||
2007-06-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/32362
|
||||
|
||||
@@ -14570,6 +14570,7 @@ enum ix86_builtins
|
||||
IX86_BUILTIN_VEC_EXT_V4SF,
|
||||
IX86_BUILTIN_VEC_EXT_V4SI,
|
||||
IX86_BUILTIN_VEC_EXT_V8HI,
|
||||
IX86_BUILTIN_VEC_EXT_V16QI,
|
||||
IX86_BUILTIN_VEC_EXT_V2SI,
|
||||
IX86_BUILTIN_VEC_EXT_V4HI,
|
||||
IX86_BUILTIN_VEC_SET_V8HI,
|
||||
@@ -15576,6 +15577,10 @@ ix86_init_mmx_sse_builtins (void)
|
||||
def_builtin (MASK_MMX, "__builtin_ia32_vec_ext_v2si",
|
||||
ftype, IX86_BUILTIN_VEC_EXT_V2SI);
|
||||
|
||||
ftype = build_function_type_list (intQI_type_node, V16QI_type_node,
|
||||
integer_type_node, NULL_TREE);
|
||||
def_builtin (MASK_SSE2, "__builtin_ia32_vec_ext_v16qi", ftype, IX86_BUILTIN_VEC_EXT_V16QI);
|
||||
|
||||
/* Access to the vec_set patterns. */
|
||||
ftype = build_function_type_list (V8HI_type_node, V8HI_type_node,
|
||||
intHI_type_node,
|
||||
@@ -16492,6 +16497,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
|
||||
case IX86_BUILTIN_VEC_EXT_V4SF:
|
||||
case IX86_BUILTIN_VEC_EXT_V4SI:
|
||||
case IX86_BUILTIN_VEC_EXT_V8HI:
|
||||
case IX86_BUILTIN_VEC_EXT_V16QI:
|
||||
case IX86_BUILTIN_VEC_EXT_V2SI:
|
||||
case IX86_BUILTIN_VEC_EXT_V4HI:
|
||||
return ix86_expand_vec_ext_builtin (arglist, target);
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
2007-06-21 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gcc.target/i386/sse2-vec-5.c: Removed.
|
||||
|
||||
2007-06-21 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/32389
|
||||
|
||||
49
gcc/testsuite/gcc.target/i386/sse2-vec-5.c
Normal file
49
gcc/testsuite/gcc.target/i386/sse2-vec-5.c
Normal file
@@ -0,0 +1,49 @@
|
||||
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-O2 -msse2" } */
|
||||
|
||||
#include "sse2-check.h"
|
||||
|
||||
#include <emmintrin.h>
|
||||
|
||||
static void
|
||||
sse2_test (void)
|
||||
{
|
||||
union
|
||||
{
|
||||
__m128i x;
|
||||
char c[16];
|
||||
short s[8];
|
||||
int i[4];
|
||||
long long ll[2];
|
||||
} val1;
|
||||
char res[16];
|
||||
int masks[16];
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
val1.c[i] = i;
|
||||
|
||||
res[0] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 0);
|
||||
res[1] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 1);
|
||||
res[2] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 2);
|
||||
res[3] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 3);
|
||||
res[4] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 4);
|
||||
res[5] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 5);
|
||||
res[6] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 6);
|
||||
res[7] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 7);
|
||||
res[8] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 8);
|
||||
res[9] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 9);
|
||||
res[10] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 10);
|
||||
res[11] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 11);
|
||||
res[12] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 12);
|
||||
res[13] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 13);
|
||||
res[14] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 14);
|
||||
res[15] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 15);
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
masks[i] = i;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
if (res[i] != val1.c [masks[i]])
|
||||
abort ();
|
||||
}
|
||||
Reference in New Issue
Block a user