The remaining change for neon-strided-load-extract is to allow fwprop.c to propagate:
(set (reg X) (subreg (reg Y) N))
even if no further simplifications are possible. I posted the original patch for comments here:
http://article.gmane.org/gmane.comp.gcc.patches/246180/
and fixed the problem that H.J. spotted. I wasn't entirely happy with the benchmark results though, so it never became an RFA.
Richard
gcc/ * fwprop.c (propagate_rtx): Also set PR_CAN_APPEAR for subregs.
Index: gcc/fwprop.c =================================================================== --- gcc/fwprop.c 2011-09-15 14:36:23.206143787 +0100 +++ gcc/fwprop.c 2011-09-15 14:36:40.995131564 +0100 @@ -664,7 +664,12 @@ propagate_rtx (rtx x, enum machine_mode return NULL_RTX;
flags = 0; - if (REG_P (new_rtx) || CONSTANT_P (new_rtx)) + if (REG_P (new_rtx) + || CONSTANT_P (new_rtx) + || (GET_CODE (new_rtx) == SUBREG + && REG_P (SUBREG_REG (new_rtx)) + && (GET_MODE_SIZE (mode) + <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (new_rtx)))))) flags |= PR_CAN_APPEAR; if (!for_each_rtx (&new_rtx, varying_mem_p, NULL)) flags |= PR_HANDLE_MEM;
On 29 December 2011 10:21, Richard Sandiford richard.sandiford@linaro.org wrote:
The remaining change for neon-strided-load-extract is to allow fwprop.c to propagate:
(set (reg X) (subreg (reg Y) N))
even if no further simplifications are possible. I posted the original patch for comments here:
http://article.gmane.org/gmane.comp.gcc.patches/246180/
and fixed the problem that H.J. spotted. I wasn't entirely happy with the benchmark results though, so it never became an RFA.
When you say you weren't happy with the benchmark results - would you remember if it didn't show any significant improvements or were there significant regressions ?
Ramana
Richard
gcc/ * fwprop.c (propagate_rtx): Also set PR_CAN_APPEAR for subregs.
Index: gcc/fwprop.c
--- gcc/fwprop.c 2011-09-15 14:36:23.206143787 +0100 +++ gcc/fwprop.c 2011-09-15 14:36:40.995131564 +0100 @@ -664,7 +664,12 @@ propagate_rtx (rtx x, enum machine_mode return NULL_RTX;
flags = 0;
- if (REG_P (new_rtx) || CONSTANT_P (new_rtx))
- if (REG_P (new_rtx)
- || CONSTANT_P (new_rtx)
- || (GET_CODE (new_rtx) == SUBREG
- && REG_P (SUBREG_REG (new_rtx))
- && (GET_MODE_SIZE (mode)
- <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (new_rtx))))))
flags |= PR_CAN_APPEAR; if (!for_each_rtx (&new_rtx, varying_mem_p, NULL)) flags |= PR_HANDLE_MEM;
linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain
Ramana Radhakrishnan ramana.radhakrishnan@linaro.org writes:
On 29 December 2011 10:21, Richard Sandiford richard.sandiford@linaro.org wrote:
The remaining change for neon-strided-load-extract is to allow fwprop.c to propagate:
(set (reg X) (subreg (reg Y) N))
even if no further simplifications are possible. I posted the original patch for comments here:
http://article.gmane.org/gmane.comp.gcc.patches/246180/
and fixed the problem that H.J. spotted. I wasn't entirely happy with the benchmark results though, so it never became an RFA.
When you say you weren't happy with the benchmark results - would you remember if it didn't show any significant improvements or were there significant regressions ?
There were some nice improvements but a couple of regressions. I don't remember the regressions being very big, but they were outside the noise, so I wanted to explain them first.
Richard
On 4 January 2012 15:09, Richard Sandiford richard.sandiford@linaro.org wrote:
Ramana Radhakrishnan ramana.radhakrishnan@linaro.org writes:
On 29 December 2011 10:21, Richard Sandiford richard.sandiford@linaro.org wrote:
The remaining change for neon-strided-load-extract is to allow fwprop.c to propagate:
(set (reg X) (subreg (reg Y) N))
even if no further simplifications are possible. I posted the original patch for comments here:
http://article.gmane.org/gmane.comp.gcc.patches/246180/
and fixed the problem that H.J. spotted. I wasn't entirely happy with the benchmark results though, so it never became an RFA.
When you say you weren't happy with the benchmark results - would you remember if it didn't show any significant improvements or were there significant regressions ?
There were some nice improvements but a couple of regressions. I don't remember the regressions being very big, but they were outside the noise, so I wanted to explain them first.
Ok - thanks that's good enough to know.
Ramana
Richard
linaro-toolchain@lists.linaro.org