public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-4908] gcc/expr.c: Remove historic workaround for broken SIMD subreg
@ 2021-11-04 14:56 Jonathan Wright
  0 siblings, 0 replies; only message in thread
From: Jonathan Wright @ 2021-11-04 14:56 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:2fc20260619b9f68044b7a3eb042726a382b5002

commit r12-4908-g2fc20260619b9f68044b7a3eb042726a382b5002
Author: Jonathan Wright <jonathan.wright@arm.com>
Date:   Mon Oct 11 18:37:32 2021 +0100

    gcc/expr.c: Remove historic workaround for broken SIMD subreg
    
    A long time ago, using a parallel to take a subreg of a SIMD register
    was broken. This temporary fix[1] (from 2003) spilled these registers
    to memory and reloaded the appropriate part to obtain the subreg.
    
    The fix initially existed for the benefit of the PowerPC E500 - a
    platform for which GCC removed support a number of years ago.
    Regardless, a proper mechanism for taking a subreg of a SIMD register
    exists now anyway.
    
    This patch removes the workaround thus preventing SIMD registers
    being dumped to memory unnecessarily - which sometimes can't be fixed
    by later passes.
    
    [1] https://gcc.gnu.org/pipermail/gcc-patches/2003-April/102099.html
    
    gcc/ChangeLog:
    
    2021-10-11  Jonathan Wright  <jonathan.wright@arm.com>
    
            * expr.c (emit_group_load_1): Remove historic workaround.

Diff:
---
 gcc/expr.c | 13 -------------
 1 file changed, 13 deletions(-)

diff --git a/gcc/expr.c b/gcc/expr.c
index eb33643bd77..5673902b1fc 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -2508,19 +2508,6 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type,
 					   NULL);
 	    }
 	}
-      /* FIXME: A SIMD parallel will eventually lead to a subreg of a
-	 SIMD register, which is currently broken.  While we get GCC
-	 to emit proper RTL for these cases, let's dump to memory.  */
-      else if (VECTOR_MODE_P (GET_MODE (dst))
-	       && REG_P (src))
-	{
-	  poly_uint64 slen = GET_MODE_SIZE (GET_MODE (src));
-	  rtx mem;
-
-	  mem = assign_stack_temp (GET_MODE (src), slen);
-	  emit_move_insn (mem, src);
-	  tmps[i] = adjust_address (mem, mode, bytepos);
-	}
       else if (CONSTANT_P (src) && GET_MODE (dst) != BLKmode
                && XVECLEN (dst, 0) > 1)
         tmps[i] = simplify_gen_subreg (mode, src, GET_MODE (dst), bytepos);


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-11-04 14:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-04 14:56 [gcc r12-4908] gcc/expr.c: Remove historic workaround for broken SIMD subreg Jonathan Wright

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).