From: Andrew Stubbs Date: Fri, 10 Nov 2023 09:43:21 +0000 (+0000) Subject: amdgcn: Fix vector min/max ICE X-Git-Tag: basepoints/gcc-15~4823 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8da8b9225762126ca41b12243d6531cd41a831b3;p=thirdparty%2Fgcc.git amdgcn: Fix vector min/max ICE The DImode min/max instructions need a clobber that SImode does not, so add the special case to the reduction expand code. gcc/ChangeLog: * config/gcn/gcn.cc (gcn_expand_reduc_scalar): Add clobber to DImode min/max instructions. --- diff --git a/gcc/config/gcn/gcn.cc b/gcc/config/gcn/gcn.cc index 6a2aaefceca4..ac2992592134 100644 --- a/gcc/config/gcn/gcn.cc +++ b/gcc/config/gcn/gcn.cc @@ -5514,7 +5514,15 @@ gcn_expand_reduc_scalar (machine_mode mode, rtx src, int unspec) { rtx tmp = gen_reg_rtx (mode); emit_insn (gen_dpp_move (mode, tmp, in, shift_val)); - emit_insn (gen_rtx_SET (out, gen_rtx_fmt_ee (code, mode, tmp, in))); + rtx insn = gen_rtx_SET (out, gen_rtx_fmt_ee (code, mode, tmp, in)); + if (scalar_mode == DImode) + { + rtx clobber = gen_rtx_CLOBBER (VOIDmode, + gen_rtx_REG (DImode, VCC_REG)); + insn = gen_rtx_PARALLEL (VOIDmode, + gen_rtvec (2, insn, clobber)); + } + emit_insn (insn); } else {