This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][GCC][AArch64] Fix subreg bug in scalar copysign


On Wed, Mar 15, 2017 at 04:04:35PM +0000, Tamar Christina wrote:
> Hi All, 
> 
> This fixes a bug in the scalar version of copysign where due to a subreg
> were generating less than efficient code.
> 
> This patch replaces
> 
>   return x * __builtin_copysignf (150.0f, y);
> 
> which used to generate
> 
> 	adrp	x1, .LC1
> 	mov	x0, 2147483648
> 	ins	v3.d[0], x0
> 	ldr	s2, [x1, #:lo12:.LC1]
> 	bsl	v3.8b, v1.8b, v2.8b
> 	fmul	s0, s0, s3
> 	ret
> 
> .LC1:
> 	.word	1125515264
> 
> with
> 	mov	x0, 1125515264
> 	movi	v2.2s, 0x80, lsl 24
> 	fmov	d3, x0
> 	bit	v3.8b, v1.8b, v2.8b
> 	fmul	s0, s0, s3
> 	ret
> 
> removing the incorrect ins.
> 
> Regression tested on aarch64-none-linux-gnu and no regressions.
> 
> OK for trunk?

OK.

Thanks,
James

> gcc/
> 2017-03-15  Tamar Christina  <tamar.christina@arm.com>
> 
> 	* config/aarch64/aarch64.md
> 	(copysignsf3): Fix mask generation.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]