diff options
Diffstat (limited to 'gcc/config/i386/i386.c')
-rw-r--r-- | gcc/config/i386/i386.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 99491b29029..ca5df2dea4d 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1571,25 +1571,28 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) if (!value) { target_flags &= ~(MASK_SSE2 | MASK_SSE3 | MASK_SSSE3 - | MASK_SSE4A); + | MASK_SSE4_1 | MASK_SSE4A); target_flags_explicit |= (MASK_SSE2 | MASK_SSE3 | MASK_SSSE3 - | MASK_SSE4A); + | MASK_SSE4_1 | MASK_SSE4A); } return true; case OPT_msse2: if (!value) { - target_flags &= ~(MASK_SSE3 | MASK_SSSE3 | MASK_SSE4A); - target_flags_explicit |= MASK_SSE3 | MASK_SSSE3 | MASK_SSE4A; + target_flags &= ~(MASK_SSE3 | MASK_SSSE3 | MASK_SSE4_1 + | MASK_SSE4A); + target_flags_explicit |= (MASK_SSE3 | MASK_SSSE3 + | MASK_SSE4_1 | MASK_SSE4A); } return true; case OPT_msse3: if (!value) { - target_flags &= ~(MASK_SSSE3 | MASK_SSE4A); - target_flags_explicit |= MASK_SSSE3 | MASK_SSE4A; + target_flags &= ~(MASK_SSSE3 | MASK_SSE4_1 | MASK_SSE4A); + target_flags_explicit |= (MASK_SSSE3 | MASK_SSE4_1 + | MASK_SSE4A); } return true; @@ -17827,13 +17830,13 @@ ix86_init_mmx_sse_builtins (void) /* Access to the vec_extract patterns. */ ftype = build_function_type_list (double_type_node, V2DF_type_node, integer_type_node, NULL_TREE); - def_builtin (MASK_SSE, "__builtin_ia32_vec_ext_v2df", + def_builtin (MASK_SSE2, "__builtin_ia32_vec_ext_v2df", ftype, IX86_BUILTIN_VEC_EXT_V2DF); ftype = build_function_type_list (long_long_integer_type_node, V2DI_type_node, integer_type_node, NULL_TREE); - def_builtin (MASK_SSE, "__builtin_ia32_vec_ext_v2di", + def_builtin (MASK_SSE2, "__builtin_ia32_vec_ext_v2di", ftype, IX86_BUILTIN_VEC_EXT_V2DI); ftype = build_function_type_list (float_type_node, V4SF_type_node, @@ -17843,12 +17846,12 @@ ix86_init_mmx_sse_builtins (void) ftype = build_function_type_list (intSI_type_node, V4SI_type_node, integer_type_node, NULL_TREE); - def_builtin (MASK_SSE, "__builtin_ia32_vec_ext_v4si", + def_builtin (MASK_SSE2, "__builtin_ia32_vec_ext_v4si", ftype, IX86_BUILTIN_VEC_EXT_V4SI); ftype = build_function_type_list (intHI_type_node, V8HI_type_node, integer_type_node, NULL_TREE); - def_builtin (MASK_SSE, "__builtin_ia32_vec_ext_v8hi", + def_builtin (MASK_SSE2, "__builtin_ia32_vec_ext_v8hi", ftype, IX86_BUILTIN_VEC_EXT_V8HI); ftype = build_function_type_list (intHI_type_node, V4HI_type_node, @@ -17863,14 +17866,14 @@ ix86_init_mmx_sse_builtins (void) ftype = build_function_type_list (intQI_type_node, V16QI_type_node, integer_type_node, NULL_TREE); - def_builtin (MASK_SSE, "__builtin_ia32_vec_ext_v16qi", + 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 (V2DI_type_node, V2DI_type_node, intDI_type_node, integer_type_node, NULL_TREE); - def_builtin (MASK_SSE4_1, "__builtin_ia32_vec_set_v2di", + def_builtin (MASK_SSE4_1 | MASK_64BIT, "__builtin_ia32_vec_set_v2di", ftype, IX86_BUILTIN_VEC_SET_V2DI); ftype = build_function_type_list (V4SF_type_node, V4SF_type_node, @@ -17888,7 +17891,7 @@ ix86_init_mmx_sse_builtins (void) ftype = build_function_type_list (V8HI_type_node, V8HI_type_node, intHI_type_node, integer_type_node, NULL_TREE); - def_builtin (MASK_SSE, "__builtin_ia32_vec_set_v8hi", + def_builtin (MASK_SSE2, "__builtin_ia32_vec_set_v8hi", ftype, IX86_BUILTIN_VEC_SET_V8HI); ftype = build_function_type_list (V4HI_type_node, V4HI_type_node, |