[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc-patches
Subject:    Ping^3: [PATCH, rs6000 V2] rotate and mask constants [PR94393]
From:       Pat Haugen via Gcc-patches <gcc-patches () gcc ! gnu ! org>
Date:       2021-12-30 17:06:02
Message-ID: d8b4de81-ffe4-dae5-8a07-fc32e11a36c1 () linux ! ibm ! com
[Download RAW message or body]

Ping.

On 11/22/21 1:38 PM, Pat Haugen via Gcc-patches wrote:
> Updated version of the patch. Changes made from original are updated commentary to \
> hopefully aid readability, no functional changes. 
> 
> Implement more two insn constants.  rotate_and_mask_constant covers
> 64-bit constants that can be formed by rotating a 16-bit signed
> constant, rotating a 16-bit signed constant masked on left or right
> (rldicl and rldicr), rotating a 16-bit signed constant masked by
> rldic, and unusual "lis; rldicl" and "lis; rldicr" patterns.  All the
> values possible for DImode rs6000_is_valid_and_mask are covered.
> 
> Bootstrapped and regression tested on powerpc64(32/64) and powerpc64le.
> Ok for master?
> 
> -Pat
> 
> 
> 2021-11-22  Alan Modra  <amodra@gmail.com>
> 	    Pat Haugen  <pthaugen@linux.ibm.com>
> 
> 	PR 94393
> gcc/
> 	* config/rs6000/rs6000.c (rotate_di, is_rotate_positive_constant,
> 	is_rotate_negative_constant, rotate_and_mask_constant): New functions.
> 	(num_insns_constant_multi, rs6000_emit_set_long_const): Use it here.
> 	* config/rs6000/rs6000.md (*movdi_internal64+1 splitter): Delete.
> gcc/testsuite/
> 	* gcc.target/powerpc/rot_cst.h,
> 	* gcc.target/powerpc/rot_cst1.c,
> 	* gcc.target/powerpc/rot_cst2.c: New tests.
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic