aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Stubbs <ams@codesourcery.com>2020-03-19 17:43:12 +0000
committerAndrew Stubbs <ams@codesourcery.com>2020-04-24 16:55:12 +0100
commit01f5d5e8f9bc4df0b99dd5b825b39e10af543304 (patch)
tree2fb1e81237e962995be05c83beffdf1182b82df9
parentcf3a909cf45514cd294e483a7c86ef16c82ffa96 (diff)
downloadgcc-01f5d5e8f9bc4df0b99dd5b825b39e10af543304.zip
gcc-01f5d5e8f9bc4df0b99dd5b825b39e10af543304.tar.gz
gcc-01f5d5e8f9bc4df0b99dd5b825b39e10af543304.tar.bz2
amdgcn: Split 64-bit constant loads post-reload
This helps avoid spilling 64-bit constant loads to stack by simplifying the code that LRA sees. 2020-04-24 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn.md (*mov<mode>_insn): Only split post-reload.
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/gcn/gcn.md8
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d402ae6..2db3413 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2020-04-24 Andrew Stubbs <ams@codesourcery.com>
+
+ * config/gcn/gcn.md (*mov<mode>_insn): Only split post-reload.
+
2020-04-24 Richard Sandiford <richard.sandiford@arm.com>
* config/aarch64/arm_sve.h: Add a comment.
diff --git a/gcc/config/gcn/gcn.md b/gcc/config/gcn/gcn.md
index 702ba55..8f59377 100644
--- a/gcc/config/gcn/gcn.md
+++ b/gcc/config/gcn/gcn.md
@@ -615,9 +615,11 @@
ds_read_b64\t%0, %A1%O1\;s_waitcnt\tlgkmcnt(0)
global_load_dwordx2\t%0, %A1%O1%g1\;s_waitcnt\tvmcnt(0)
global_store_dwordx2\t%A0, %1%O0%g0"
- "(reload_completed && !MEM_P (operands[0]) && !MEM_P (operands[1])
- && !gcn_sgpr_move_p (operands[0], operands[1]))
- || (GET_CODE (operands[1]) == CONST_INT && !gcn_constant64_p (operands[1]))"
+ "reload_completed
+ && ((!MEM_P (operands[0]) && !MEM_P (operands[1])
+ && !gcn_sgpr_move_p (operands[0], operands[1]))
+ || (GET_CODE (operands[1]) == CONST_INT
+ && !gcn_constant64_p (operands[1])))"
[(set (match_dup 0) (match_dup 1))
(set (match_dup 2) (match_dup 3))]
{