fixes for exclclusive_scan_and/or_i32 and shuffle2 and __movmsk
This commit is contained in:
@@ -4,17 +4,9 @@ export uniform int width() { return programCount; }
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
RET[programIndex] = -1;
|
||||
int32 a = (programIndex & 1) ? 0xff : 0;
|
||||
#if 0
|
||||
if (programIndex & 1) {
|
||||
RET[programIndex] = exclusive_scan_and(a);
|
||||
}
|
||||
#else
|
||||
const bool mask = programIndex & 1;
|
||||
const float res = exclusive_scan_and(mask ? a : -1);
|
||||
if (mask) {
|
||||
RET[programIndex] = res;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -4,19 +4,9 @@ export uniform int width() { return programCount; }
|
||||
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
||||
RET[programIndex] = -1;
|
||||
int32 a = ~(1ul << programIndex);
|
||||
#if 0
|
||||
if ((programIndex < 32) && (programIndex & 1) == 0) {
|
||||
RET[programIndex] = exclusive_scan_and(a);
|
||||
}
|
||||
#else
|
||||
const bool mask = ((programIndex < 32) && (programIndex & 1) == 0);
|
||||
const float res = exclusive_scan_and(mask ? a : -1);
|
||||
if (mask)
|
||||
{
|
||||
RET[programIndex] = res;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user