From: Stefan Schulze Frielinghaus Date: Thu, 9 Jan 2025 16:49:02 +0000 (+0100) Subject: s390: Fix s390_constant_via_vgbm_p() [PR118362] X-Git-Tag: basepoints/gcc-16~2811 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2f31819a0ac7b000fa3a456e5b068242e954edac;p=thirdparty%2Fgcc.git 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 --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)