http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48262



--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-03-24 
00:07:49 UTC ---

(In reply to comment #2)

> gcc.c-torture/compile/900116-1.c fails at -O3 -maltivec but with a different

> ICE but revision which caused it is the same.



The problem here is the wrong mode is being used to create the output reg.

Here is the patch for the other issue:

Index: altivec.md

===================================================================

--- altivec.md    (revision 171367)

+++ altivec.md    (working copy)

@@ -2422,7 +2422,7 @@ (define_insn "altivec_stvrxl"



 (define_expand "vec_extract_evenv4si"

  [(set (match_operand:V4SI 0 "register_operand" "")

-        (unspec:V8HI [(match_operand:V4SI 1 "register_operand" "")

+        (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "")

                       (match_operand:V4SI 2 "register_operand" "")]

               UNSPEC_EXTEVEN_V4SI))]

   "TARGET_ALTIVEC"

@@ -2455,7 +2455,7 @@ (define_expand "vec_extract_evenv4si"



 (define_expand "vec_extract_evenv4sf"

  [(set (match_operand:V4SF 0 "register_operand" "")

-        (unspec:V8HI [(match_operand:V4SF 1 "register_operand" "")

+        (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "")

                       (match_operand:V4SF 2 "register_operand" "")]

                       UNSPEC_EXTEVEN_V4SF))]

   "TARGET_ALTIVEC"

@@ -2487,7 +2487,7 @@ (define_expand "vec_extract_evenv4sf"

 }")



 (define_expand "vec_extract_evenv8hi"

- [(set (match_operand:V4SI 0 "register_operand" "")

+ [(set (match_operand:V8HI 0 "register_operand" "")

         (unspec:V8HI [(match_operand:V8HI 1 "register_operand" "")

                       (match_operand:V8HI 2 "register_operand" "")]

                       UNSPEC_EXTEVEN_V8HI))]

@@ -2520,9 +2520,9 @@ (define_expand "vec_extract_evenv8hi"

 }")



 (define_expand "vec_extract_evenv16qi"

- [(set (match_operand:V4SI 0 "register_operand" "")

-        (unspec:V8HI [(match_operand:V16QI 1 "register_operand" "")

-                      (match_operand:V16QI 2 "register_operand" "")]

+ [(set (match_operand:V16QI 0 "register_operand" "")

+        (unspec:V16QI [(match_operand:V16QI 1 "register_operand" "")

+                       (match_operand:V16QI 2 "register_operand" "")]

                       UNSPEC_EXTEVEN_V16QI))]

   "TARGET_ALTIVEC"

   "

@@ -2554,7 +2554,7 @@ (define_expand "vec_extract_evenv16qi"



 (define_expand "vec_extract_oddv4si"

  [(set (match_operand:V4SI 0 "register_operand" "")

-        (unspec:V8HI [(match_operand:V4SI 1 "register_operand" "")

+        (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "")

                       (match_operand:V4SI 2 "register_operand" "")]

                       UNSPEC_EXTODD_V4SI))]

   "TARGET_ALTIVEC"

@@ -2587,7 +2587,7 @@ (define_expand "vec_extract_oddv4si"



 (define_expand "vec_extract_oddv4sf"

  [(set (match_operand:V4SF 0 "register_operand" "")

-        (unspec:V8HI [(match_operand:V4SF 1 "register_operand" "")

+        (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "")

                       (match_operand:V4SF 2 "register_operand" "")]

                       UNSPEC_EXTODD_V4SF))]

   "TARGET_ALTIVEC"



--- CUT ---

I have not looked to see if this fixes all the issues reported by the testsuite

and I have not bootstrapped/tested it.  I also don't have access to a PPC

machine any more.

Reply via email to