exclusive_scan_and is supported, but must be called outside if-statements. in pricniple other must do the same

This commit is contained in:
Evghenii
2014-01-22 22:12:51 +01:00
parent 08d78e6be5
commit 06313e0ec3
4 changed files with 23 additions and 6 deletions

View File

@@ -1210,14 +1210,13 @@ define <1 x i32> @__exclusive_scan_and_i32(<1 x i32>, <1 x i1>) nounwind readnon
{
%shft = tail call <1 x i32> @__shift_i32(<1 x i32> %0, i32 -1)
%v0 = extractelement <1 x i32> %shft, i32 0
%m0 = extractelement <1 x i1 > %1, i32 0
%mask = extractelement <1 x i1 > %1, i32 0
%v1 = select i1 %mask, i32 %v0, i32 -1
%tid = tail call i32 @__tid_x()
%lane = and i32 %tid, 31
%m1 = icmp eq i32 %lane, 0
%mask = and i1 %m0, %m1
%v = select i1 %mask, i32 %v0, i32 -1
%c = icmp eq i32 %lane, 0
%v = select i1 %c, i32 -1, i32 %v1
%s1 = tail call i32 @__shfl_scan_and_step_i32(i32 %v, i32 1);
%s2 = tail call i32 @__shfl_scan_and_step_i32(i32 %s1, i32 2);