From 5ca2bc5e88a4b2f0370d7b532438029b1c8d2661 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Thu, 11 Nov 2010 00:00:01 +0100 Subject: [PATCH] re PR target/46419 (_mm_cvtpu16_ps (and hence _mm_cvtpu8_ps) returns false result) PR middle-end/46419 * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Swap __hisi and __losi. (_mm_cvtpu16_ps): Ditto. testsuite/ChangeLog: PR target/46419 * gcc-target/i386/pr46419.c: New test. From-SVN: r166569 --- gcc/ChangeLog | 40 +++++++++--------- gcc/config/i386/xmmintrin.h | 12 +++--- gcc/testsuite/ChangeLog | 54 +++++++++++++------------ gcc/testsuite/gcc.target/i386/pr46419.c | 39 ++++++++++++++++++ 4 files changed, 92 insertions(+), 53 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr46419.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bd6c0d776d0..185cb4026fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-11-10 Uros Bizjak + + PR middle-end/46419 + * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Swap __hisi and __losi. + (_mm_cvtpu16_ps): Ditto. + 2010-11-10 Joseph Myers * common.opt (flag_excess_precision_cmdline, flag_generate_lto, @@ -34,8 +40,7 @@ OPT_dumpdir, OPT_falign_functions_, OPT_falign_jumps_, OPT_falign_labels_, OPT_falign_loops_, OPT_fira_verbose_, OPT_o or OPT_fwhopr_. Do not explicitly set .opt file variables for - OPT_aux_info or OPT_pedantic_errors. Use dc for diagnostic - context. + OPT_aux_info or OPT_pedantic_errors. Use dc for diagnostic context. (set_Wstrict_aliasing): Add gcc_options parameter. * opts.h (struct cl_option_handler_func): Add diagnostic_context parameter to handler. @@ -210,8 +215,7 @@ * doc/tm.texi: Regenerate. * opts-common.c (tm.h): Don't include. (target_option_translations): Remove. - (decode_cmdline_options_to_array): Don't handle translating - options. + (decode_cmdline_options_to_array): Don't handle translating options. * system.h (TARGET_OPTION_TRANSLATE_TABLE): Poison. * config/darwin-driver.c: Don't condition includes on CROSS_DIRECTORY_STRUCTURE. @@ -247,12 +251,10 @@ (DRIVER_SELF_SPECS): Handle options formerly in TARGET_OPTION_TRANSLATE_TABLE. * config/mep/mep.opt (mfar): New. - * config/picochip/picochip.h (TARGET_OPTION_TRANSLATE_TABLE): - Remove. + * config/picochip/picochip.h (TARGET_OPTION_TRANSLATE_TABLE): Remove. (DRIVER_SELF_SPECS): Define. Handle options formerly in TARGET_OPTION_TRANSLATE_TABLE. - * config/rs6000/darwin.h (CC1_SPEC): Handle -faltivec and - -fno-altivec. + * config/rs6000/darwin.h (CC1_SPEC): Handle -faltivec and -fno-altivec. (SUBTARGET_OPTION_TRANSLATE_TABLE): Remove. * config/rs6000/darwin.opt (Waltivec-long-deprecated, faltivec, ffix-and-continue, findirect-data): New. @@ -330,7 +332,7 @@ initialized at ggc_collect call. (Troubleshooting): New section. -2010-11-09 Jan Hubicka +2010-11-09 Jan Hubicka PR tree-optimization/40436 * ipa-inline.c (leaf_node_p): Implement using is_inexpensive_builtin. @@ -374,8 +376,7 @@ (fix_truncsi2_mem): Ditto. (fixuns_truncsi2_mem): Ditto. (round322_fprs): New combiner insn to combine (double)(int) - type operations to reduce copying the values to multiple memory - slots. + type operations to reduce copying the values to multiple memory slots. (roundu322_fprs): Ditto. * config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Handle @@ -428,8 +429,7 @@ 2010-11-09 Paul Koning - * config/pdp11/pdp11.md (lshrsi3, lshrhi3): Use add for - decrement. + * config/pdp11/pdp11.md (lshrsi3, lshrhi3): Use add for decrement. 2010-11-09 Richard Guenther @@ -479,8 +479,7 @@ 2010-11-09 H.J. Lu PR bootstrap/46392 - * gengtype-parse.c (type): Call get_input_file_name to get - file name. + * gengtype-parse.c (type): Call get_input_file_name to get file name. 2010-11-09 Eric Botcazou @@ -518,8 +517,7 @@ 2010-11-09 Basile Starynkevitch Jeremie Salvucci - * gengtype.c (get_output_file_name): Declaration moved to - gengtype.h. + * gengtype.c (get_output_file_name): Declaration moved to gengtype.h. (plugin_files, get_file_basename, get_file_realbasename) (get_file_langdir, error_at_line, gt_files, this_file) (system_h_file, read_input_list, create_field_all) @@ -536,11 +534,10 @@ * gengtype.h: (struct input_file_st, input_file): New type. (struct fileloc): Use it. (gt_files, num_gt_files, this_file, system_h_file) - (input_file_by_name, get_file_srcdir_relative_path): Use - input_file. + (input_file_by_name, get_file_srcdir_relative_path): Use input_file. (get_input_file_name): New function. (get_lang_bitmap, set_lang_bitmap): Moved from gengtype.c and - use input_file. + use input_file. (lang_dir_names, num_lang_dirs, get_output_file_with_visibility) (get_output_file_name): Ditto. @@ -619,8 +616,7 @@ 2010-11-08 Rainer Orth - * config/i386/i386.c (ix86_function_arg_boundary): Fix warning - message. + * config/i386/i386.c (ix86_function_arg_boundary): Fix warning message. 2010-11-08 Basile Starynkevitch diff --git a/gcc/config/i386/xmmintrin.h b/gcc/config/i386/xmmintrin.h index 544577ecaf0..8bec3744035 100644 --- a/gcc/config/i386/xmmintrin.h +++ b/gcc/config/i386/xmmintrin.h @@ -626,13 +626,13 @@ _mm_cvtpi16_ps (__m64 __A) __sign = __builtin_ia32_pcmpgtw ((__v4hi)0LL, (__v4hi)__A); /* Convert the four words to doublewords. */ - __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, __sign); __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, __sign); + __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, __sign); /* Convert the doublewords to floating point two at a time. */ __zero = (__v4sf) _mm_setzero_ps (); - __ra = __builtin_ia32_cvtpi2ps (__zero, __hisi); - __rb = __builtin_ia32_cvtpi2ps (__ra, __losi); + __ra = __builtin_ia32_cvtpi2ps (__zero, __losi); + __rb = __builtin_ia32_cvtpi2ps (__ra, __hisi); return (__m128) __builtin_ia32_movlhps (__ra, __rb); } @@ -645,13 +645,13 @@ _mm_cvtpu16_ps (__m64 __A) __v4sf __zero, __ra, __rb; /* Convert the four words to doublewords. */ - __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, (__v4hi)0LL); __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, (__v4hi)0LL); + __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, (__v4hi)0LL); /* Convert the doublewords to floating point two at a time. */ __zero = (__v4sf) _mm_setzero_ps (); - __ra = __builtin_ia32_cvtpi2ps (__zero, __hisi); - __rb = __builtin_ia32_cvtpi2ps (__ra, __losi); + __ra = __builtin_ia32_cvtpi2ps (__zero, __losi); + __rb = __builtin_ia32_cvtpi2ps (__ra, __hisi); return (__m128) __builtin_ia32_movlhps (__ra, __rb); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 52507c0747e..ff026a35285 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-11-10 Uros Bizjak + + PR target/46419 + * gcc-target/i386/pr46419.c: New test. + 2010-11-10 Quentin Neill * g++.dg/other/i386-2.C: Add -mtbm. @@ -125,7 +130,7 @@ * gfortran.dg/open_dev_null.f90: New test. -2010-11-09 Jan Hubicka +2010-11-09 Jan Hubicka * testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c: Update for loop unrolling. @@ -219,7 +224,7 @@ PR tree-optimization/46316 * gcc.c-torture/execute/pr46316.c: New test. - + 2010-11-08 Janus Weil PR fortran/46344 @@ -229,18 +234,18 @@ * objc.dg/property/dotsyntax-13.m: New. * objc.dg/property/dotsyntax-14.m: New. - * objc.dg/property/dotsyntax-15.m: New. + * objc.dg/property/dotsyntax-15.m: New. * objc.dg/property/synthesize-7.m: New. * obj-c++.dg/property/dotsyntax-13.mm: New. * obj-c++.dg/property/dotsyntax-14.mm: New. - * obj-c++.dg/property/dotsyntax-15.mm: New. + * obj-c++.dg/property/dotsyntax-15.mm: New. * obj-c++.dg/property/synthesize-7.mm: New. 2010-11-08 Nicola Pero * objc.dg/property/dynamic-4.m: New. * objc.dg/property/dynamic-5.m: New. - * objc.dg/property/dynamic-6.m: New. + * objc.dg/property/dynamic-6.m: New. * obj-c++.dg/property/dynamic-4.mm: New. * obj-c++.dg/property/dynamic-5.mm: New. * obj-c++.dg/property/dynamic-6.mm: New. @@ -254,15 +259,15 @@ * obj-c++.dg/property/synthesize-3.mm: New. * obj-c++.dg/property/synthesize-4.mm: New. * obj-c++.dg/property/synthesize-5.mm: New. - * obj-c++.dg/property/synthesize-6.mm: New. - + * obj-c++.dg/property/synthesize-6.mm: New. + 2010-11-08 Nicola Pero - * objc.dg/property/at-property-5.m: Updated test. + * objc.dg/property/at-property-5.m: Updated test. * objc.dg/property/at-property-16.m: New. * objc.dg/property/at-property-17.m: New. * objc.dg/property/at-property-18.m: New. - * objc.dg/property/at-property-19.m: New. + * objc.dg/property/at-property-19.m: New. * objc.dg/property/dotsyntax-12.m: New. * objc.dg/protocol-inheritance-1.m: New. * objc.dg/protocol-inheritance-2.m: New. @@ -270,11 +275,11 @@ * obj-c++.dg/property/at-property-16.mm: New. * obj-c++.dg/property/at-property-17.mm: New. * obj-c++.dg/property/at-property-18.mm: New. - * obj-c++.dg/property/at-property-19.mm: New. + * obj-c++.dg/property/at-property-19.mm: New. * obj-c++.dg/protocol-inheritance-1.mm: New. * obj-c++.dg/protocol-inheritance-2.mm: New. * obj-c++.dg/property/dotsyntax-12.mm: New. - + 2010-11-08 Jason Merrill * g++.dg/expr/overflow1.C: New. @@ -299,8 +304,7 @@ * gcc.c-torture/compile/vector-2.c: Likewise. * gcc.dg/pr32912-1.c: Likewise. * gcc.c-torture/execute/va-arg-25.c: Move ... - * gcc.dg/torture/va-arg-25.c: ... here. - Add dg-do run. + * gcc.dg/torture/va-arg-25.c: ... here. Add dg-do run. Add dg-options -msse, dg-require-effective-target sse_runtime for for i?86-*-*, x86_64-*-*. * gcc.c-torture/execute/vector-1.c: Likewise. @@ -317,7 +321,7 @@ * gcc.dg/torture/pr45982.c: Add -std=c99 * gcc.dg/torture/pr45623.c: Ditto. - + 2010-11-08 Steve Ellcey * gcc/testsuite/g++.dg/abi/covariant1.C: Fix scan-assembler. @@ -325,9 +329,9 @@ 2010-11-08 Kai Tietz - PR target/28627 - * g++.dg/ext/dllimport7.C: Adjust second error check and - allow test for x86_64 mingw, too. + PR target/28627 + * g++.dg/ext/dllimport7.C: Adjust second error check and + allow test for x86_64 mingw, too. 2010-11-08 Janus Weil @@ -339,14 +343,14 @@ PR rtl-optimization/45352 gcc.dg/pr45352.c, gcc.dg/pr45352-1.c, gcc.dg/pr45352-2.c: New tests. gcc.target/i386/pr45352.c, gcc.target/i386/pr45352-1.c, - gcc.target/i386/pr45352-2.c: New tests. + gcc.target/i386/pr45352-2.c: New tests. 2010-11-06 Iain Sandoe PR libobjc/36610 - * objc.dg/torture/forward-1.m: Re-enable for gnu-runtime, XFAIL the run for - all but m32 x86. - + * objc.dg/torture/forward-1.m: Re-enable for gnu-runtime, + XFAIL the run for all but m32 x86. + 2010-11-07 Andreas Schwab * g++.dg/debug/dwarf2/nested-2.C: Adjust pattern to also match "|" @@ -549,8 +553,8 @@ * obj-c++.dg/template-8.mm: Likewise. * obj-c++.dg/encode-3.mm: Use abort (), cast char types. * obj-c++.dg/demangle-2.mm: Add +initialize:, XFAIL NeXT m64. - * obj-c++.dg/property/at-property-2.mm: Comment out a case that ICEs and - put a FIXME for this. + * obj-c++.dg/property/at-property-2.mm: Comment out a case that ICEs + and put a FIXME for this. * obj-c++.dg/property/property-2.mm: Remove. * obj-c++.dg/property/property-3.mm: Remove. @@ -941,8 +945,8 @@ 2010-11-02 Iain Sandoe - * g++.dg/debug/dwarf2/pubnames-1.C: Amend to check for only one instance - of debug_pubnames on darwin. + * g++.dg/debug/dwarf2/pubnames-1.C: Amend to check for only one + instance of debug_pubnames on darwin. 2010-11-01 Jason Merrill Benjamin Kosnik diff --git a/gcc/testsuite/gcc.target/i386/pr46419.c b/gcc/testsuite/gcc.target/i386/pr46419.c new file mode 100644 index 00000000000..3b722283ef3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr46419.c @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -msse" } */ +/* { dg-require-effective-target sse } */ + +#include "sse-check.h" + +#include + +void __attribute__((noinline)) +sse_test (void) +{ + char image[4]; + __m128 image4; + float out[4] __attribute__ ((aligned (16))); + int i; + + for (i = 0; i < 4; i++) + image[i] = i + 1; + + image4 = + _mm_cvtpi8_ps (_mm_setr_pi8 + (image[0], image[1], image[2], image[3], 0, 0, 0, 0)); + _mm_store_ps (out, image4); + _mm_empty (); + + for (i = 0; i < 4; i++) + if (out[i] != (float) (i + 1)) + abort (); + + image4 = + _mm_cvtpu8_ps (_mm_setr_pi8 + (image[0], image[1], image[2], image[3], 0, 0, 0, 0)); + _mm_store_ps (out, image4); + _mm_empty (); + + for (i = 0; i < 4; i++) + if (out[i] != (float) (i + 1)) + abort (); +} -- 2.30.2