This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

alpha vector logical patterns


With some of the xfail changes in the vectorizer testsuite, about
four new failures showed up on Alpha.  It seemed easier to just
implement the patterns than fix the xfails.

Tested on alphaev67.


r~


        * config/alpha/alpha.md (one_cmpl<mode>2, and<mode>3, andnot<mode>3,
        ior<mode>3, iornot<mode>3, xor<mode>3, xornot<mode>3): New macroized
        vector operate patterns.

Index: alpha.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha.md,v
retrieving revision 1.230
diff -c -p -d -r1.230 alpha.md
*** alpha.md	23 Dec 2004 08:08:59 -0000	1.230
--- alpha.md	23 Dec 2004 10:30:05 -0000
***************
*** 6207,6212 ****
--- 6207,6267 ----
    "TARGET_MAX"
    "maxsw4 %r1,%r2,%0"
    [(set_attr "type" "mvi")])
+ 
+ (define_insn "one_cmpl<mode>2"
+   [(set (match_operand:VEC 0 "register_operand" "=r")
+ 	(not:VEC (match_operand:VEC 1 "register_operand" "r")))]
+   ""
+   "ornot $31,%1,%0"
+   [(set_attr "type" "ilog")])
+ 
+ (define_insn "and<mode>3"
+   [(set (match_operand:VEC 0 "register_operand" "=r")
+ 	(and:VEC (match_operand:VEC 1 "register_operand" "r")
+ 		 (match_operand:VEC 2 "register_operand" "r")))]
+   ""
+   "and %1,%2,%0"
+   [(set_attr "type" "ilog")])
+ 
+ (define_insn "*andnot<mode>3"
+   [(set (match_operand:VEC 0 "register_operand" "=r")
+ 	(and:VEC (not:VEC (match_operand:VEC 1 "register_operand" "r"))
+ 		 (match_operand:VEC 2 "register_operand" "r")))]
+   ""
+   "bic %2,%1,%0"
+   [(set_attr "type" "ilog")])
+ 
+ (define_insn "ior<mode>3"
+   [(set (match_operand:VEC 0 "register_operand" "=r")
+ 	(ior:VEC (match_operand:VEC 1 "register_operand" "r")
+ 		 (match_operand:VEC 2 "register_operand" "r")))]
+   ""
+   "bis %1,%2,%0"
+   [(set_attr "type" "ilog")])
+ 
+ (define_insn "*iornot<mode>3"
+   [(set (match_operand:VEC 0 "register_operand" "=r")
+ 	(ior:VEC (not:DI (match_operand:VEC 1 "register_operand" "r"))
+ 		 (match_operand:VEC 2 "register_operand" "r")))]
+   ""
+   "ornot %2,%1,%0"
+   [(set_attr "type" "ilog")])
+ 
+ (define_insn "xor<mode>3"
+   [(set (match_operand:VEC 0 "register_operand" "=r")
+ 	(xor:VEC (match_operand:VEC 1 "register_operand" "r")
+ 		 (match_operand:VEC 2 "register_operand" "r")))]
+   ""
+   "xor %1,%2,%0"
+   [(set_attr "type" "ilog")])
+ 
+ (define_insn "*xornot<mode>3"
+   [(set (match_operand:VEC 0 "register_operand" "=r")
+ 	(not:VEC (xor:VEC (match_operand:VEC 1 "register_operand" "r")
+ 			  (match_operand:VEC 2 "register_operand" "r"))))]
+   ""
+   "eqv %1,%2,%0"
+   [(set_attr "type" "ilog")])
  
  ;; Bit field extract patterns which use ext[wlq][lh]
  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]