Jeff Rous
Jeff Rous
Found an issue where ISPC uses stack whenever walking pointers inside a loop. When manually unrolled, this does not occur. In the example, 4-wide is correct because the loop counter...
``` struct FVector4 { float V[4]; }; inline uniform FVector4 Mul3(const uniform FVector4 &A, const uniform FVector4 &B) { uniform float S0 = { A.V[0], A.V[1], A.V[2], A.V[3] }; uniform...
Error: SplitVectorResult #0: t18: v16f32 = llvm.x86.avx512.max.ps.512 TargetConstant:i64, t13, t15, TargetConstant:i32, stdlib.ispc:1813:12 @[ example.ispc:5:21 ] LLVM ERROR: Do not know how to split the result of this operator! Compiler returned:...
Currently there's not a good way to specify struct alignment in ISPC. This can lead to bugs and suboptimal code generation when needing to work with data passed in from...
Consider the following code. Currently, FVector4 would need to be defined in C++ to be valid. ```c struct FVector4f { float V[4]; }; struct FVector4d { double V[4]; }; //...
#548 added support for #pragma unroll but was limited to uniform loop counters only. Would like support added for foreach and varying for loops. Ex: ``` #pragma unroll 4 foreach(i...
Add utility functions (floatbits, intbits, shuffle, bit twiddling, rsqrt_fast) Add float3 / float4 helpers. Change print functions to inline to get around multiple includes. Apologies for not including full implementations...
Consider the following code - https://ispc.godbolt.org/z/Gfre6sG3q In the VectorMax example where "fake varying" is used, unneeded movs and inserts are being added. When using foreach with loop counts less than...