Commit 8e10223f by Wilco Dijkstra Committed by Wilco Dijkstra

Float to int moves currently generate inefficient code due to hacks used in the…

Float to int moves currently generate inefficient code due to hacks used in the movsi and movdi patterns.

Float to int moves currently generate inefficient code due to
hacks used in the movsi and movdi patterns.  The 'r = w' variant
uses '*' which tells the register allocator to ignore it.
As a result the float to int moves typically spill to the stack,
which is extremely inefficient.

    gcc/
	* config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w.
	(movdi_aarch64): Likewise.

From-SVN: r247643
parent 8dc6a926
2017-05-05 Wilco Dijkstra <wdijkstr@arm.com>
* config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w.
(movdi_aarch64): Likewise.
2017-05-05 Jakub Jelinek <jakub@redhat.com> 2017-05-05 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/80632 PR tree-optimization/80632
......
...@@ -1030,8 +1030,8 @@ ...@@ -1030,8 +1030,8 @@
) )
(define_insn_and_split "*movsi_aarch64" (define_insn_and_split "*movsi_aarch64"
[(set (match_operand:SI 0 "nonimmediate_operand" "=r,k,r,r,r,r,*w,m, m,r,r ,*w, r,*w") [(set (match_operand:SI 0 "nonimmediate_operand" "=r,k,r,r,r,r,*w,m, m,r,r ,*w,r,*w")
(match_operand:SI 1 "aarch64_mov_operand" " r,r,k,M,n,m, m,rZ,*w,S,Ush,rZ,*w,*w"))] (match_operand:SI 1 "aarch64_mov_operand" " r,r,k,M,n,m, m,rZ,*w,S,Ush,rZ,w,*w"))]
"(register_operand (operands[0], SImode) "(register_operand (operands[0], SImode)
|| aarch64_reg_or_zero (operands[1], SImode))" || aarch64_reg_or_zero (operands[1], SImode))"
"@ "@
...@@ -1062,8 +1062,8 @@ ...@@ -1062,8 +1062,8 @@
) )
(define_insn_and_split "*movdi_aarch64" (define_insn_and_split "*movdi_aarch64"
[(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,r,*w,m, m,r,r, *w, r,*w,w") [(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,r,*w,m, m,r,r, *w,r,*w,w")
(match_operand:DI 1 "aarch64_mov_operand" " r,r,k,N,n,m, m,rZ,*w,S,Ush,rZ,*w,*w,Dd"))] (match_operand:DI 1 "aarch64_mov_operand" " r,r,k,N,n,m, m,rZ,*w,S,Ush,rZ,w,*w,Dd"))]
"(register_operand (operands[0], DImode) "(register_operand (operands[0], DImode)
|| aarch64_reg_or_zero (operands[1], DImode))" || aarch64_reg_or_zero (operands[1], DImode))"
"@ "@
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment