public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH ARM iWMMXt 0/5] Improve iWMMXt support
@ 2012-05-29  4:13 Matt Turner
  2012-05-29  4:14 ` [PATCH ARM iWMMXt 5/5] pipeline description Matt Turner
                   ` (7 more replies)
  0 siblings, 8 replies; 37+ messages in thread
From: Matt Turner @ 2012-05-29  4:13 UTC (permalink / raw)
  To: gcc-patches
  Cc: Ramana Radhakrishnan, Richard Earnshaw, Nick Clifton, Paul Brook,
	Xinyu Qi


This series was written by Marvell and sent by Xinyu Qi <xyqi@marvell.com>
a number of times in the last year.

We (One Laptop per Child) need these patches for reasonable iWMMXt support
and performance. Without them, logical and shift intrinsics cause ICEs,
see PR 35294 and its duplicates 36798 and 36966.

The software compositing library pixman uses MMX intrinsics to optimize
various compositing routines. The following are the minimum execution times
of cairo-perf-trace graphics work loads without and with iWMMXt-optimized
pixman for the image and image16 backends (32-bpp and 16-bpp respectively).

                             image               image16
           evolution   33.492 ->  29.590    30.334 ->  24.751
firefox-planet-gnome  191.465 -> 173.835   211.297 -> 187.570
gnome-system-monitor   51.956 ->  44.549    52.272 ->  40.525
  gnome-terminal-vim   53.625 ->  54.554    47.593 ->  47.341
      grads-heat-map    4.439 ->   4.165     4.548 ->   4.624
       midori-zoomed   38.033 ->  28.500    38.576 ->  26.937
             poppler   41.096 ->  31.949    41.230 ->  31.749
  swfdec-giant-steps   20.062 ->  16.912    28.294 ->  17.286
      swfdec-youtube   42.281 ->  37.335    52.848 ->  47.053
   xfce4-terminal-a1   64.311 ->  51.011    62.592 ->  51.191

We have cleaned up some white-space issues with the patches and fixed a
small bug in patch 4/5 since the last time they were posted in December
(added tandc,textrc,torc,torvsc to the "wtype" attribute)

Please commit them for 4.8.

For 4.7 and 4.6 please consider committing my patch
"[PATCH] arm: Fix iwmmxt shift and logical intrinsics (PR 35294)."
which only fixes the logical and shift intrinsics.

Thanks,

Matt Turner

^ permalink raw reply	[flat|nested] 37+ messages in thread
* [PATCH, ARM, iWMMXt][1/5]: ARM code generic change
@ 2011-07-06 10:24 Xinyu Qi
  2011-07-12 22:45 ` Ramana Radhakrishnan
  0 siblings, 1 reply; 37+ messages in thread
From: Xinyu Qi @ 2011-07-06 10:24 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 460 bytes --]

Hi,

It is the first part of iWMMXt maintenance.

*config/arm/arm.c (arm_option_override):
 Enable iWMMXt with VFP. iWMMXt and NEON are incompatible. iWMMXt unsupported under Thumb-2 mode.
 (arm_expand_binop_builtin): Accept immediate op (with mode VOID)
*config/arm/arm.md:
 Resettle include location of iwmmxt.md so that *arm_movdi and *arm_movsi_insn could be used when iWMMXt is enabled.
 Add pipeline description file include.

Thanks,
Xinyu

[-- Attachment #2: 1_generic.diff --]
[-- Type: application/octet-stream, Size: 3066 bytes --]

Index: gcc/config/arm/arm.c
===================================================================
--- gcc/config/arm/arm.c	(revision 175285)
+++ gcc/config/arm/arm.c	(working copy)
@@ -1605,12 +1605,15 @@ arm_option_override (void)
     }
 
   /* FPA and iWMMXt are incompatible because the insn encodings overlap.
-     VFP and iWMMXt can theoretically coexist, but it's unlikely such silicon
-     will ever exist.  GCC makes no attempt to support this combination.  */
-  if (TARGET_IWMMXT && !TARGET_SOFT_FLOAT)
-    sorry ("iWMMXt and hardware floating point");
+     VFP and iWMMXt however can coexist.  */
+  if (TARGET_IWMMXT && TARGET_HARD_FLOAT && !TARGET_VFP)
+    sorry ("iWMMXt and non-VFP floating point unit");
+
+  /* iWMMXt and NEON are incompatible.  */
+  if (TARGET_IWMMXT && TARGET_NEON)
+    sorry ("iWMMXt and NEON");
 
-  /* ??? iWMMXt insn patterns need auditing for Thumb-2.  */
+  /* iWMMXt unsupported under Thumb-2 mode.  */
   if (TARGET_THUMB2 && TARGET_IWMMXT)
     sorry ("Thumb-2 iWMMXt");
 
@@ -19313,7 +19316,8 @@ arm_expand_binop_builtin (enum insn_code
       || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
     target = gen_reg_rtx (tmode);
 
-  gcc_assert (GET_MODE (op0) == mode0 && GET_MODE (op1) == mode1);
+  gcc_assert ((GET_MODE (op0) == mode0 || GET_MODE (op0) == VOIDmode)
+	      && (GET_MODE (op1) == mode1 || GET_MODE (op1) == VOIDmode));
 
   if (! (*insn_data[icode].operand[1].predicate) (op0, mode0))
     op0 = copy_to_mode_reg (mode0, op0);
Index: gcc/config/arm/arm.md
===================================================================
--- gcc/config/arm/arm.md	(revision 175285)
+++ gcc/config/arm/arm.md	(working copy)
@@ -535,6 +535,10 @@ (define_attr "generic_vfp" "yes,no"
 (include "cortex-m4.md")
 (include "cortex-m4-fpu.md")
 (include "vfp11.md")
+(include "marvell-f-iwmmxt.md")
+
+;; Load the Intel Wireless Multimedia Extension patterns
+(include "iwmmxt.md")
 
 \f
 ;;---------------------------------------------------------------------------
@@ -4969,7 +4973,6 @@ (define_insn "*arm_movdi"
 	(match_operand:DI 1 "di_operand"              "rDa,Db,Dc,mi,r"))]
   "TARGET_32BIT
    && !(TARGET_HARD_FLOAT && (TARGET_MAVERICK || TARGET_VFP))
-   && !TARGET_IWMMXT
    && (   register_operand (operands[0], DImode)
        || register_operand (operands[1], DImode))"
   "*
@@ -5237,7 +5240,7 @@ (define_insn "*arm_movt"
 (define_insn "*arm_movsi_insn"
   [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m")
 	(match_operand:SI 1 "general_operand"      "rk, I,K,j,mi,rk"))]
-  "TARGET_ARM && ! TARGET_IWMMXT
+  "TARGET_ARM
    && !(TARGET_HARD_FLOAT && TARGET_VFP)
    && (   register_operand (operands[0], SImode)
        || register_operand (operands[1], SImode))"
@@ -10842,8 +10845,6 @@ (define_expand "bswapsi2"
 (include "cirrus.md")
 ;; Vector bits common to IWMMXT and Neon
 (include "vec-common.md")
-;; Load the Intel Wireless Multimedia Extension patterns
-(include "iwmmxt.md")
 ;; Load the VFP co-processor patterns
 (include "vfp.md")
 ;; Thumb-2 patterns

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2013-04-02  9:50 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-29  4:13 [PATCH ARM iWMMXt 0/5] Improve iWMMXt support Matt Turner
2012-05-29  4:14 ` [PATCH ARM iWMMXt 5/5] pipeline description Matt Turner
2012-05-29  4:14 ` [PATCH ARM iWMMXt 1/5] ARM code generic change Matt Turner
2012-06-06 11:53   ` Ramana Radhakrishnan
2012-12-27  2:31     ` [PATCH, ARM, iWMMXT] Fix define_constants for WCGR Xinyu Qi
2013-01-22  9:22     ` [PING][PATCH, " Xinyu Qi
2013-01-22 11:59       ` Ramana Radhakrishnan
2013-01-22 13:34         ` Andreas Schwab
2013-01-23  6:08         ` Xinyu Qi
2013-01-31  8:49         ` [PATCH, " Xinyu Qi
2013-03-20  2:43         ` Xinyu Qi
2013-03-26 14:01           ` Ramana Radhakrishnan
2013-04-02  9:55             ` [PATCH, ARM, iWMMXT] PR target/54338 - Include IWMMXT_GR_REGS in ALL_REGS Xinyu Qi
2013-04-02 10:03               ` Ramana Radhakrishnan
2012-05-29  4:14 ` [PATCH ARM iWMMXt 3/5] built in define and expand Matt Turner
2012-06-06 11:55   ` Ramana Radhakrishnan
2012-05-29  4:15 ` [PATCH ARM iWMMXt 4/5] WMMX machine description Matt Turner
2012-05-29  4:15 ` [PATCH ARM iWMMXt 2/5] intrinsic head file change Matt Turner
2012-06-06 12:22   ` Ramana Radhakrishnan
2012-06-06 11:59 ` [PATCH ARM iWMMXt 0/5] Improve iWMMXt support Ramana Radhakrishnan
2012-06-11  9:24 ` nick clifton
2012-06-13  7:36 ` nick clifton
2012-06-13 15:31   ` Matt Turner
2012-06-26 15:20     ` nick clifton
2012-06-27 19:15       ` Matt Turner
2013-01-28  3:49       ` Matt Turner
2013-01-28 15:11         ` nick clifton
2013-02-21  2:35           ` closing PR's (was Re: [PATCH ARM iWMMXt 0/5] Improve iWMMXt support) Hans-Peter Nilsson
2013-02-22 12:42             ` nick clifton
  -- strict thread matches above, loose matches on Subject: below --
2011-07-06 10:24 [PATCH, ARM, iWMMXt][1/5]: ARM code generic change Xinyu Qi
2011-07-12 22:45 ` Ramana Radhakrishnan
2011-07-14  7:38   ` Xinyu Qi
2011-08-18  2:21     ` Ramana Radhakrishnan
2011-08-18  8:24       ` Xinyu Qi
2011-12-14 17:03     ` Richard Earnshaw
2011-12-22  6:39       ` Xinyu Qi
2011-12-29  6:25       ` Xinyu Qi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).