aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Stubbs <ams@codesourcery.com>2020-11-09 17:42:34 +0000
committerAndrew Stubbs <ams@codesourcery.com>2021-01-26 10:23:43 +0000
commitd9f50366102a8ca3521e4854f7716bd013c8ea0a (patch)
treee461f789926aca8c445373b0fcb87eda66b7d726 /gcc
parent5a36cae275ad84cc7e623f2f5829bdad767e3f6a (diff)
downloadgcc-d9f50366102a8ca3521e4854f7716bd013c8ea0a.zip
gcc-d9f50366102a8ca3521e4854f7716bd013c8ea0a.tar.gz
gcc-d9f50366102a8ca3521e4854f7716bd013c8ea0a.tar.bz2
amdgcn: Allow V64DFmode min/max reductions
I don't know why these were disabled. There're no direct min/max DPP instructions for this mode, but the "use moves" strategy works fine. gcc/ChangeLog: * config/gcn/gcn.c (gcn_expand_reduc_scalar): Use move instructions for V64DFmode min/max reductions.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/gcn/gcn.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/config/gcn/gcn.c b/gcc/config/gcn/gcn.c
index 3b1762e..2351b24 100644
--- a/gcc/config/gcn/gcn.c
+++ b/gcc/config/gcn/gcn.c
@@ -4251,7 +4251,8 @@ gcn_expand_reduc_scalar (machine_mode mode, rtx src, int unspec)
|| unspec == UNSPEC_SMAX_DPP_SHR
|| unspec == UNSPEC_UMIN_DPP_SHR
|| unspec == UNSPEC_UMAX_DPP_SHR)
- && mode == V64DImode)
+ && (mode == V64DImode
+ || mode == V64DFmode))
|| (unspec == UNSPEC_PLUS_DPP_SHR
&& mode == V64DFmode));
rtx_code code = (unspec == UNSPEC_SMIN_DPP_SHR ? SMIN