[nvptx] propagating conditionals in worker-vector partitioned loops
Tom de Vries
Tom_deVries@mentor.com
Wed Apr 11 08:59:00 GMT 2018
On 10/27/2016 12:29 AM, Cesar Philippidis wrote:
> Currently, the nvptx backend is only neutering the worker axis when
> propagating variables used in conditional expressions across the worker
> and vector axes. That's a problem with the worker-state spill and fill
> propagation implementation because all of the vector threads in worker 0
> all write the the same address location being spilled. As the attached
> test case demonstrates, this might cause an infinite loop depending on
> the values in the vector threads being propagated.
>
> This patch fixes this issue by introducing a new worker-vector
> predicate, so that both the worker and vector threads can be predicated
> together, not separately. I.e., instead of first neutering worker axis,
> then neutering the vector axis, this patch uses a single predicate for
> tid.x == 0 && tid.y == 0.
>
> Is this patch ok for trunk?
Hi Cesar,
Please, when encountering a bug on trunk or release branch always file a PR.
I accidentally found this bug recently, filed it as PR85204 - "[nvptx]
infinite loop generated", and then fixed it here:
https://gcc.gnu.org/ml/gcc-patches/2018-04/msg00232.html .
The patch you propose is not correct because it introduces a diverging
branch marked with .uni.
Thanks,
- Tom
More information about the Gcc-patches
mailing list