GCC maintainers: Commit r249311 had an error. During the patch review the define expand for VFC_inst was changed to VF_sxddp. I compiled and tested the source after making the change and it seemed fine. However, I missed a couple of changes. It seems that since I didn't remove all the binaries before recompiling the build tree still had the old definition in it. I also found I had to move the VF_sxddp definition back to the file where it is used. Need to make sure I do a clean build just to be sure before committing things.
I found the issue after pulling down a fresh tree and compiling when the build failed. I have already applied the following change to the tree as I didn't want to leave a broken tree all weekend. Please let me know if there are any changes to this fix-up patch that you would like to see made and I will take care of it. Sorry about breaking things. Carl Love ---------------------------------------- gcc/ChangeLog: 2017-06-16 Carl Love <c...@us.ibm.com> * config/rs6000/altivec.md (define_mode_attr VF_sxddp): Move to vsx.md. * config/rs6000/vsx.md (define_mode_attr VF_sxddp define_expand "floate<mode>", define_expand "floato<mode>"): Add VF_sxddp definition, replace undefined VFC_inst with VF_sxddp definition Index: gcc/config/rs6000/vsx.md =================================================================== --- gcc/config/rs6000/vsx.md (revision 249336) +++ gcc/config/rs6000/vsx.md (revision 249337) @@ -21,6 +21,9 @@ ;; Iterator for comparison types (define_code_iterator CMP_TEST [eq lt gt unordered]) +;; Mode attribute for vector floate and floato conversions +(define_mode_attr VF_sxddp [(V2DI "sxd") (V2DF "dp")]) + ;; Iterator for both scalar and vector floating point types supported by VSX (define_mode_iterator VSX_B [DF V4SF V2DF]) @@ -2056,7 +2059,7 @@ rtx_tmp, rtx_tmp, rtx_val)); } else - emit_insn (gen_vsx_xvcv<VFC_inst>sp (operands[0], operands[1])); + emit_insn (gen_vsx_xvcv<VF_sxddp>sp (operands[0], operands[1])); DONE; }) @@ -2095,7 +2098,7 @@ "VECTOR_UNIT_VSX_P (V4SFmode)" { if (VECTOR_ELT_ORDER_BIG) - emit_insn (gen_vsx_xvcv<VFC_inst>sp (operands[0], operands[1])); + emit_insn (gen_vsx_xvcv<VF_sxddp>sp (operands[0], operands[1])); else { /* Shift left one word to put odd word correct location */ @@ -2103,7 +2106,7 @@ rtx rtx_val = GEN_INT (4); rtx_tmp = gen_reg_rtx (V4SFmode); - emit_insn (gen_vsx_xvcv<VFC_inst>sp (rtx_tmp, operands[1])); + emit_insn (gen_vsx_xvcv<VF_sxddp>sp (rtx_tmp, operands[1])); emit_insn (gen_altivec_vsldoi_v4sf (operands[0], rtx_tmp, rtx_tmp, rtx_val)); } Index: gcc/config/rs6000/altivec.md =================================================================== --- gcc/config/rs6000/altivec.md (revision 249336) +++ gcc/config/rs6000/altivec.md (revision 249337) @@ -207,9 +207,6 @@ ;; versus floating point (define_mode_attr VS_sxwsp [(V4SI "sxw") (V4SF "sp")]) -;; Mode attribute for vector floate and floato conversions -(define_mode_attr VF_sxddp [(V2DI "sxd") (V2DF "dp")]) - ;; Specific iterator for parity which does not have a byte/half-word form, but ;; does have a quad word form (define_mode_iterator VParity [V4SI