/
redgpu
/
ispc
Обзор
Документация
Войти
/
redgpu
/
ispc
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
test
tests/chkstk.ispc
49 строк
1 KB
Arina Neshlyaeva
Adapt test system to redefined meaning of "task" functions on GPU.
13 авг 2021, 08:32
13 авг 2021, 08:32
2aa444f
Код
Авторство
О чём код?
#include "../test_static.isph" //test for 17631 bug in LLVM. struct s_temp { float temp[64]; }; int CompressBlockBC7(int A, uniform float b) { // This declaration caused problem because LLVM inserted // _chkstk after declaration and vzeroupper before it's call. // A will be in ymm at avx, so we lose a half of it. s_temp _state; // These two loops are here to prevent elimination of declaration for (int i=0; i<64; i++) { float ii = i; _state.temp[i] = b + sin(ii); } float r = 0; for (int j=0; j<64; j+=9) { r += _state.temp[j] + j; } // Here upper bits of A in ymm can be zeros. This will crash the test. int B; if (A!=0) { B = 20; } else { B = 30; } if(A == 1) { B = r; } return B; } task void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) { int A = programIndex; RET[programIndex] = CompressBlockBC7(A, b); } task void result(uniform float RET[]) { RET[programIndex] = 20; RET[0] = 30; RET[1] = 292; }