Results 8 issues of 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...

Performance
Bugs

``` 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...

Performance
Bugs

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:...

Bugs

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...

Features
C/C++ Compatibility

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]; }; //...

Features

#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...

Features

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...

Performance