[Beignet] [PATCH] check the predication in case of endless loop.
Song, Ruiling
ruiling.song at intel.com
Tue Jan 27 18:02:56 PST 2015
LGTM, For dead loop, it has an unconditional branch at its end. Simply do not treat it as a loop is also acceptable.
I ran into this problem when I execute ./opencv_test_imgproc --gtest_filter=OCL_Imgproc/HoughLines.RealImage/0
And it fix the problem.
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> xionghu.luo at intel.com
> Sent: Wednesday, January 28, 2015 9:24 AM
> To: beignet at lists.freedesktop.org
> Cc: Luo, Xionghu
> Subject: [Beignet] [PATCH] check the predication in case of endless loop.
>
> From: Luo <xionghu.luo at intel.com>
>
> Signed-off-by: Luo <xionghu.luo at intel.com>
> ---
> backend/src/ir/structural_analysis.cpp | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/backend/src/ir/structural_analysis.cpp
> b/backend/src/ir/structural_analysis.cpp
> index 4c7e3d2..101570a 100644
> --- a/backend/src/ir/structural_analysis.cpp
> +++ b/backend/src/ir/structural_analysis.cpp
> @@ -67,6 +67,11 @@ namespace analysis
> if (pbb->hasExtraBra)
> it--;
> ir::BranchInstruction* pinsn = static_cast<ir::BranchInstruction
> *>(&*it);
> +
> + if(!pinsn->isPredicated()){
> + std::cout << "WARNING:" << "endless loop detected!" << std::endl;
> + return;
> + }
> ir::Register reg = pinsn->getPredicateIndex();
> /* since this node is an while node, so we remove the BRA instruction
> at the bottom of the exit BB of 'node',
> * and insert WHILE instead
> --
> 1.9.1
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list