首页 > 其他 > 详细

Adreno OpenCL坑——bool转int

时间:2019-04-14 18:34:13      阅读:112      评论:0      收藏:0      [点我收藏+]

在项目代码中为了避免条件分支,需要把bool变成int的形式,然后通过向量运算的形式和单个单个的形式,其结果却是不同,向量的方式为(-1, 0),而单个的转换则为(1, 0)
有如下kernel代码:

int2 interxy_i; //输入
int2 TMP2 =(interxy_i & 0x01) == 1;
printf("1:  interxy_i x%d y%d, tmp2:%d %d    \n", interxy_i.x, interxy_i.y, TMP2.x, TMP2.y);
int2 tmp3;
tmp3.x = (interxy_i.x & 0x01) == 1;
tmp3.y = (interxy_i.y & 0x01) == 1;
printf("2:  interxy_i x%d y%d, tmp3:%d %d    \n", interxy_i.x, interxy_i.y, tmp3.x, tmp3.y);

打印结果显示:TMP2打印出来的都是-1或0,而tmp3打印出来的则都是1或者0。
谨记:若要万无一失,确保准确,则应该加上abs函数

Adreno OpenCL坑——bool转int

原文:https://www.cnblogs.com/willhua/p/10706213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!