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

commit r15-6742-g2f31819a0ac7b000fa3a456e5b068242e954edac
Author: Stefan Schulze Frielinghaus <stefa...@gcc.gnu.org>
Date:   Thu Jan 9 17:49:02 2025 +0100

    s390: Fix s390_constant_via_vgbm_p() [PR118362]
    
    Optimization s390_constant_via_vgbm_p() should only apply to constant
    vectors which can be expressed by the hardware, i.e., which have a size
    of at most 16-bytes, similar as it is done for s390_constant_via_vgm_p()
    and s390_constant_via_vrepi_p().
    
    gcc/ChangeLog:
    
            PR target/118362
            * config/s390/s390.cc (s390_constant_via_vgbm_p): Allow at most
            16-byte vectors.

Diff:
---
 gcc/config/s390/s390.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc
index 918a2cd6c6df..08acb69de3e8 100644
--- a/gcc/config/s390/s390.cc
+++ b/gcc/config/s390/s390.cc
@@ -2818,7 +2818,7 @@ s390_constant_via_vgbm_p (rtx op, unsigned *mask)
   unsigned tmp_mask = 0;
   int nunit, unit_size;
 
-  if (GET_CODE (op) == CONST_VECTOR)
+  if (GET_CODE (op) == CONST_VECTOR && GET_MODE_SIZE (GET_MODE (op)) <= 16)
     {
       if (GET_MODE_INNER (GET_MODE (op)) == TImode
          || GET_MODE_INNER (GET_MODE (op)) == TFmode)

Reply via email to